Portál AbcLinuxu, 10. května 2025 04:11

Dotaz: Ako na funkciu na kombinovanie všetkých možností?

17.5.2006 19:18 richx
Ako na funkciu na kombinovanie všetkých možností?
Přečteno: 55×
Odpovědět | Admin
Zdravím. Mám takú teoretickú otázku - povedzme ze mám v poli (alebo keď to bude nutné nejakým vhodnejším spôsobom) uložené hodnoty. Potreboval by som nejako napísať funkciu, ktorá mi vypíše všetky možnosti usporiadania daných hodnôt, a vypíše ich počet. Potrebujem len načrtnúť nejaké riešenie, lebo na to fakt neviem prísť. Vopred pekne ďakujem.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Jan Zahornadsky avatar 17.5.2006 23:20 Jan Zahornadsky | skóre: 22 | blog: hans_blog
Rozbalit Rozbalit vše Re: Ako na funkciu na kombinovanie všetkých možností?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Množina všech permutací n prvků se dá zobrazit na množinu [n!] (= { 1, 2, ... n! }).

Jedno takové zobrazení co mě napadá -- f_M zobrazí číslo z [|M|!] na nějakou konkrétní permutaci prvků množiny M:

f_M: [|M|!] --> S_n

f_M(x) = sjednocení všech permutací p splňující vlastnost p(1) = x % |M| a zbylé indexy p(i) = q(i-1), kde q je prvkem sjednocení přes j = 1 až x/|M| jednoprvkových množin { f_M-{p(1)} (j) }.

/ je celočíselné dělení, % je modulo (zbytek po dělení).

P.S. Chtělo by to mít možnost sem vkládat (La)TeX ;-)
Actually, I was half an hour into the pointer scripting documentation when she got dressed and left.
18.5.2006 08:24 s0 | skóre: 32 | blog: nejchytřejší kecy | prágl
Rozbalit Rozbalit vše Re: Ako na funkciu na kombinovanie všetkých možností?
jsem dnes velmi hodný, takže k vysvětlujícímu vysvětlení výše přidám i vyřešení tvého domácího úkolu.

def all_perms(str):
    if len(str) <=1:
        yield str
    else:
        for perm in all_perms(str[1:]):
            for i in range(len(perm)+1):
                yield perm[:i] + str[0:1] + perm[i:]

for p in all_perms(['a','b','c']):
    print p
Kuolema Kaikille (Paitsi Meille).

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.