Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 11, 2008 18:17:34

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Задачка на комбинаторику.

Раз уж пошла такая пьянка, как учитель ;), предлагаю потренироваться на такую тему:

Написать код, который перебирает все комбинации перестановок.
Т.е., если на вход подается например , результатом должно быть [, ]
а если , то что-то вроде [, , , , , ]
и т. д.

Кто решит задачку наиболее красиво и близко к Zen of Python, тот молодец =)



Отредактировано (Ноя. 11, 2008 18:22:43)

Офлайн

#2 Ноя. 11, 2008 18:49:49

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

Задачка на комбинаторику.

Решение для Python 2.6 =)

import itertools
res = list(itertools.permutations(['a', 'b']))



Офлайн

#3 Ноя. 11, 2008 19:35:41

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Задачка на комбинаторику.

черт. :) не знаю даже, будет ли после такого варианта это интересно.
Но… а для питона 2.5?



Офлайн

#4 Ноя. 11, 2008 19:52:34

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Задачка на комбинаторику.

Смеялся от души :D

Офлайн

#5 Ноя. 11, 2008 21:24:20

bobry
От:
Зарегистрирован: 2008-08-03
Сообщения: 54
Репутация: +  0  -
Профиль   Отправить e-mail  

Задачка на комбинаторику.

just lol :D
но тему наверное можно развить)



Офлайн

#6 Ноя. 12, 2008 09:16:01

Dimka665
От:
Зарегистрирован: 2008-09-19
Сообщения: 177
Репутация: +  0  -
Профиль   Отправить e-mail  

Задачка на комбинаторику.

def permutations(lis):
if len(lis)==1:
return [lis]

res = []
for i in xrange(len(lis)):
for ii in permutations(lis[:i]+lis[i+1:]):
res.append([lis[i]] + ii)
return res



Офлайн

#7 Ноя. 12, 2008 17:02:59

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Задачка на комбинаторику.

Dimka665
Круто!
У меня точно такойже код. С точностью до имен переменных. Даже срезы так-же выгледят. =)



Офлайн

#8 Ноя. 12, 2008 17:04:38

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Задачка на комбинаторику.

Но можно ли сделать это без рекурсии?



Офлайн

#9 Ноя. 13, 2008 00:41:27

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Задачка на комбинаторику.

Врядли. Я тоже пришёл к этому коду. Конечно не “слово в слово”, но принцип тот же.



Офлайн

#10 Ноя. 13, 2008 01:16:54

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Задачка на комбинаторику.

но ведь в itertools это как-то сделали (хоть и на С).
Сомневаюсь, что итератор получится сделать на основе такого подхода.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version