Autor Zpráva
marat
Profil
Šlo by nějak pomocí PHP počítat kombinační číslo ? Kdyžtak jak ?
WanTo
Profil
Co je to kombinační číslo?
marat
Profil
Máš např. čísla 1 , 2 , 3 a 4
a chceš je mezi sebou prokombinovat - nesměj se opakovat... takže např. 1324,1423 atd... nechci přímo počet kombinací, ale spíš aby z php scriptu vylezly i ty combinace...
thingwath
Profil
Proč by to nešlo... Ani to není těžké :-)
marat
Profil
Njn, problém je, že nevim jak na to... neznám princip...
WanTo
Profil
Zkus chíli přemýšlet :-) Říká ti něco rekurze?
marat
Profil
Ne, vubec, moc dobrý matematik nejsem a ve škole jsme to ještě nebrali... Je mi 13 let :P :D
marat
Profil
Jo takhle v php... mno... moc ne
WanTo
Profil
marat
Ona ta rekurze s matematikou nemá vůbec nic společného. Rekurze znamená, že nějaká funkce volá sama sebe.

Teďka píšu jeden článek, až ho dodělám, tak se ti s tím pokusím pomoct ;-)
marat
Profil
No jop, počet kombinací, to taky spočítám - faktoriál.. ale chci aby mě to ty kombinace vypsalo :P
Dero
Profil
Ptákovina. Kombinační číslo n nad k se počítá dle vzorce: n! / k!.(n-k)!

Pokud je Ti třináct, tak dodám, že ! znamená faktoriál, který se počítá takto: n! = n.(n-1).(n-2) ... .[n-(n-1)] (v praxi: 7! = 7.6.5.4.3.2.1)

Na faktoriál si snadno můžeš pomocí rekurze napsat funkci, pokud to PHP neumí interně.
souki
Profil
n! /( k!*(n-k)! )
thingwath
Profil
No právě proto tu je rekurzivní řešení :-)

V podstatě budeš mít funkci, které předáš pole možných prvků a ta pro každý prvek zavolá opět sebe, ale bez toho jednoho prvku. Z toho už by měl princip vyplynout :-)
marat
Profil
Na faktoriál mam napsanou funkci...
Ale ne na kombinace ... to fakt nevim princip
marat
Profil
Počkej, abys to nebral tak, že z těch čísel jedno může prchnout :D prostě 1,2,3,4 a chci je zkombinovat...
marat
Profil
No asi to neřešte, udělám si to třeba ručně přes excel :D
WanTo
Profil
marat
Počkej chvilku, už na to píšu program :-)
thingwath
Profil
Poměrně elegantní řešení (dle mého názoru):

Budeme mít rekurzivní funkci, té budeme předávat mezivýsledek a pole možných prvků. Na počátku jí předáme prázdný mezivýsledek a úplné pole možných prvků.
Pokud bude pole možných prvků nenulové, pro každý prvek z něj opět zavoláme sama sebe s tím, že do každého volání přidáme k mezivýsledku ten jeden prvek a naopak ho vyškrtneme z pole možných prvků.
Až bude pole možných prvků prázdné, vytiskneme mezivýsledek.

Lze si představit jako pěkný stromeček, kde nám listy tisknou výsledek :-)
marat
Profil
ALe myslim, že faktoriál počítá asi nějak tak kombinační číslo... přece faktoriál 3 = 3*2*1 = 6
3 2 1
3 1 2
1 3 2
2 1 3
1 2 3
2 3 1

== 6 kombinací čísel 3 2 1 = faktoriál čísla 3
což jsou 3 počáteční čísla
Dero
Profil
marat: To je permutace.
marat
Profil
Ok.. tak jsem si spletl pojmy.. tohle jsem myslel :D ale aby mi ty permutace to vypisovalo
thingwath
Profil
Proč mě nekopnete hned, mám v těhle názvech děsný bordel :-)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0