[python] Vypocet variaci

Jan Jakubuv jakubuv na gmail.com
Čtvrtek Listopad 15 17:59:59 CET 2007


dobry den,

osobne nevim o tom, ze by takova funkce byla vestavena jako zakladni
funkce do pythonu. nicmene zkuste napriklad:

def variace(s,n):
    if n==0:
        yield ()
    else:
        for (x,xs) in [(y,s[:i]+s[i+1:]) for (i,y) in enumerate(s)]:
            for vxs in variace(xs,n-1):
                yield tuple((x,)+vxs)

funguje jako iterator, prvni parametr je cokoliv "iterable" (napr.
mnozina, tuple, seznam,...) a pri kazdem pruchodu iteratorem vraci
tuple, ktera ma n prvku reprezentujici jednu variaci. jeste pro
jistotu maly priklad:

>>> for x in variace([1,2,3],2):
...     print x
...
(1, 2)
(1, 3)
(2, 1)
(2, 3)
(3, 1)
(3, 2)
>>>

jinak pokud spustite google tak zcela jiste naleznete vhodnou
knihovnu. napr http://mail.python.org/pipermail/python-list/2002-October/167307.html

honza.


2007/11/15, Radek Machulka <radek.machulka na gmail.com>:
> Zdravim,
> nevi nekdo, zda existuje v pythonu nejaka hotova funkce pro vypocet vsech
> N-clennych variaci z dane mnoziny prvku? Nejak nemuzu nic najit a programovat
> se mi to dvakrat nechce :).
> Dik Radek
> --
> Linux khoi 2.6.22-14-generic #1 SMP Sun Oct 14 23:05:12 GMT 2007 i686
> GNU/Linux
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
>


Další informace o konferenci Python