Ilość kombinacji

0

Witam,

Potrzebuję napisać z założenia prostą procedurę która wygeneruje wszystkie możliwości. Dla ułatwienia niech to będzie gra w dużego lotka :)

robię więc coś takiego :

zbiorOd : integer = 1;
zbiorDo : integer = 49;
iloscSkreslen : byte := 6;

Zrobiłem coś takiego (jak niżej), choć jest to ze tak powiem bardzo nie elastyczne i nie estetyczne :) ale przedstawia zasadę działania.

for i:=zbiorOd to zbiorDo-iloscSkreslen+1 do // 1 liczba
for i1:=i+1 to zbiorDo do // 2 liczba
for i2:=i1+1 to zbiorDo do // 3 liczba
for i3:=i2+1 to zbiorDo do // 4 liczba
for i4:=i3+1 to zbiorDo do // 5 liczba
for i5:=i4+1 to zbiorDo do // 6 liczba
begin
inc(iloscMozliwosci);
{
tutaj miało być to,

  s:=IntToStr(i)+' '+
       IntToStr(i1)+' '+
       IntToStr(i2)+' '+
       IntToStr(i3)+' '+
       IntToStr(i4)+' '+
       IntToStr(i5);

ale nie radzę tego uruchamiać, bo trochę to czasu może zająć :) Oryginalnie zakresy będą o wiele mniejsze, ale mniej więcej tak ma to wygladać :)

w takim wypadku dla sprawdzenia chociaz ilosc kombinacji :)

}
end;

O dziwo to wszystko działa - dla dużego lotka ilość kombinacji to 13983816 :)

OK, jak to wszystko złożyć w jedną całość?? I zrobić z tego procedurkę uniwersalną dla różnych zbiorów i ilości typowanych liczb??

0

Nie wiem czy ci to pomoże, ale zerknij i przeczytaj całość :

http://4programmers.net/Forum/viewtopic.php?id=35840

1 użytkowników online, w tym zalogowanych: 0, gości: 1