Witam!
Chciałbym wykonać taki generator liczb Dużego Lotka, aby mi losował 6 liczb i żeby potem z tych 6 liczb ułożył wszystkie możliwe kombinacje trój- lub czteroliczbowe. Jeśli np. będzie wylosowane 1,3,2 i 3,2,1 i 1,2,3 to żeby usuwał dwie z tych kombinacji i zostawiał te 1,2,3. A czemu żeby usuwał resztę? Ponieważ znalazły się 3 kombinacje z tymi samymi liczbami to żeby została jedna kombinacja itd. Ma ktoś jakieś źródło lub pomysł na taki program?
Wszystkie kombinacje żeby były pokazywane w memo:) Z góry dziękuję za odpowiedź. [browar]
0
0
o ile mnie moja zawodna pamięć nie myli to ktoś o tym pisał arta poszukaj, a nusz coś znajdziesz
0
Znalazłem na 4p takie coś:
Funkcja NUMER_KOMBINACJI podaje, którym z kolei układem są liczby które mamy zadeklarowane w tabeli 'Liczba[]'.
Np. układ liczb:
1,2,3,4,5,6 to numer kombinacji 1,
1,2,3,4,5,7 to numer kombinacji 2,
.... itd ....
zaś 44,45,46,47,48,49 to ostatni numer kombinacji czyli 13 983 816.
//Funkcja SILNIA zwraca silnię n-tej liczby
function SILNIA(n: Byte): LongWord;
begin
SILNIA := 1;
if n < 2 then
SILNIA := 1
else
SILNIA := SILNIA(n - 1) * n;
end; { koniec funkcji SILNIA }
//Funkcja KOMBINACJE oblicza ilość kombinacji bez powtórek.
// Lba - Dlugość ciągu, ilość wylosowanych liczb; tu 6.
// elem - Ilość elmentów; tu 49.
function KOMBINACJE(Lba, Elem: Byte): LongWord;
begin
KOMBINACJE := Trunc(Round(SILNIA(Elem) / (SILNIA(Lba) * SILNIA(Elem - Lba))));
end; { koniec funkcji KOMBINACJE }
// Funkcja NUMER_KOMBINACJI zwraca numer kombinacji odpowiadający
// kolejnym liczbom.
// Liczby zawarte są w tabeli ( Liczba : Array[1..6] Of Byte; ).
// ka - ilość liczb, tu podstaw 6.
// en - ilość elementów, tu podstaw 49.
function NUMER_KOMBINACJI(ka, en: Byte): LongWord;
var
xx: Integer;
Pozycja: Integer;
begin
Pozycja := KOMBINACJE(ka, en);
for xx := ka downto 1 do
if (en - Liczba[xx]) > (ka - xx) then
Pozycja := Pozycja - KOMBINACJE((ka + 1) - xx, en - Liczba[xx]);
NUMER_KOMBINACJI := Pozycja;
end; { koniec funkcji NUMER_KOMBINACJI }
Oczywiście funkcja jest przystosowana do obliczania numeru kombinacji dla innych układów np 5z42.... Należy jednak pamiętać, że numer kombinacji możemy tu obliczyć tylko dla układów bez powtórek czyli każda z 6-ciu liczb w tabeli 'Liczba[]' musi być inna i muszą one być posortowane od najmniejszej do największej.
Mam nadzieję, że z zamianą Numeru Kombinacji na układ 6-ciu liczb z 49 nie będzie większych problemów. Jeśli sprawi to kłopot, proszę o e-milka.
Wierzę, że opisana funkcja przyda się grającym w Lotto :-)
Ale kompletnie nie wiem jak się za to zabrać:( Potrzebuję generować najpierw jakieś 6 liczb potem trójki lub czwórki - kombinacje i odrzucać powtarzające się kombinacje (np. 1,2,3 i 3,1,2 to odrzuca tą drugą bo wiadomo że na blankiecie jak zaznaczymy te cyfry 1,2,3 czy 3,1,2 to przecież jest to samo). POMÓŻCIE PROSZĘ!