Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 25, 2017 19:56:25

Comandante4
Зарегистрирован: 2017-12-25
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывести все перестановки заданной длины

Добрый вечер.
Требуется помощь в следующем задании:

Необходимо вывести все перестановки чисел от 1 до N в лексикографическом порядке. Перестановки выводятся по одной в строке, числа в перестановке выводятся без пробелов. Написать в функциональном стиле.

Прикреплённый файлы:
attachment 1.png (4,6 KБ)

Офлайн

#2 Янв. 1, 2018 17:31:29

DamMercul
Зарегистрирован: 2017-11-26
Сообщения: 325
Репутация: +  13  -
Профиль   Отправить e-mail  

Вывести все перестановки заданной длины

А разве join может работает чисто с генераторами? Или у тебя генератор делает кортеж? Сори, не догоняю.



____________________________________________________

 # Life loop
while alive:
    if (fun > boredom) and money:
        pass_day(fun, boredom, money)
        continue
    else: break

Офлайн

#3 Янв. 2, 2018 12:57:33

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9973
Репутация: +  856  -
Профиль   Отправить e-mail  

Вывести все перестановки заданной длины

DamMercul
А разве join может работает чисто с генераторами?
  
>>> '.'.join(i for i in 'abcd')
'a.b.c.d'
>>>

Comandante4
Необходимо вывести все перестановки чисел от 1 до N в лексикографическом порядке. Перестановки выводятся по одной в строке, числа в перестановке выводятся без пробелов. Написать в функциональном стиле.
Отсортировать надо перестановки относительно друг друга. Вот этого там не хватает. Они выводятся просто неотсортированно.
И зачем там лямбда?

  
>>> import itertools
>>> 
>>> list(itertools.permutations(range(3), 2))
[(0, 1), (0, 2), (1, 0), (1, 2), (2, 0), (2, 1)]
>>>

И не отправляй код на картинке никогда, так как его нельзя скопировать и вставить в интерпретатор, а без возможности проверки в нём никто не будет разбираться.



Отредактировано py.user.next (Янв. 2, 2018 12:59:30)

Офлайн

#4 Янв. 4, 2018 21:37:22

Comandante4
Зарегистрирован: 2017-12-25
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывести все перестановки заданной длины

py.user.next
И не отправляй код на картинке никогда, так как его нельзя скопировать и вставить в интерпретатор, а без возможности проверки в нём никто не будет разбираться.
 from itertools import permutations
print('\n'.join([''.join(map(str, i))
                 for i in permutations(range(1, int(input())+1))]))
Подумал и переписал код в таком виде. Вывод у него примерно такой:
3
123
132
213
231
312
321
Но, к сожалению, и такой код не считается достаточно функциональным. Не знаю, что с циклом сделать.

Отредактировано Comandante4 (Янв. 4, 2018 21:39:52)

Офлайн

#5 Янв. 5, 2018 02:27:42

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9973
Репутация: +  856  -
Профиль   Отправить e-mail  

Вывести все перестановки заданной длины

  
>>> import itertools
>>> 
>>> print('\n'.join(map(''.join, itertools.permutations(map(str, range(1, int(input()) + 1))))))
3
123
132
213
231
312
321
>>>



Офлайн

#6 Янв. 5, 2018 13:18:56

Comandante4
Зарегистрирован: 2017-12-25
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывести все перестановки заданной длины

py.user.next
Спасибо большое!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version