Jak zrobic by na memo wyswietlic wszystkie mozliwe kombinacie
4 cyfrowej liczy np ?
0000
Czy ktos umie zmodyfikowac ten kod by to zrobic ?
Ten kod pochodzi z tego portalu ale jak go zastosowac?
B prosze o pomoc w napisaniu takiego kodu.
Dzieki wielkie za pomoc
"Kombinatoryka jest teorią zajmującą się zbiorami skończonymi i odwzorowaniem między nimi. Jej początki sięgają XVII wieku i wiążą się z grami hazardowymi. Obecnie kombinatoryka znajduje duże zastosowanie w rachunku prawdopodobieństwa oraz w teorii informacji."
J. i K. Nikodem, Matematyka dla szkół średnich, wydanie IV, 2000
Kluczem do sukcesu w kombinatoryce jest znajomość silni (n!). Silnię liczby n liczy się w sposób następujący:
n! = 1 * 2 * 3 * ... * n
Skoro już wiemy jak obliczyć silnię, napiszemy funkcję, która policzy ją za nas:
function Factorial(Value: Word): Extended;
var
Factor: Extended;
begin
Factor := 1;
if Value > 1 then
Factor := Value * Factorial(Value - 1);
Result := Factor;
end;
Jest to podstawowa funkcja i wszystkie inne funkcje kombinatoryczne, które za chwilę przedstawię będą korzystały właśnie z niej.
Symbol Newtona
function NewtonSymbol(n, k: Word): Extended;
var
Factor_n, Factor_k, Factor_nk: Extended;
begin
Result := 1;
if (n >= k) then
begin
Factor_n := Factorial(n);
Factor_k := Factorial(k);
Factor_nk := Factorial(n - k);
Result := Factor_n / (Factor_k * Factor_nk);
end;
end;
Wariacje bez powtórzeń
function Variations(n, k: Word): Extended;
var
Factor_n, Factor_nk: Extended;
begin
Result := 1;
if (n >= k) then
begin
Factor_n := Factorial(n);
Factor_nk := Factorial(n - k);
Result := Factor_n / Factor_nk;
end;
end;
Wariacje z powtórzeniami
uses Math
function TUtils.VariationsRep(n, k: Word): Extended;
begin
Result := Power(n ,k);
end;
Ci, którzy się choć trochę znają na kombinatoryce zauważyli już na pewno brak dwóch algorytmów: permutacji i kombinacji.
Permutacja
function Permutation(Value: Word): Extended;
begin
Result := Factorial(Value);
end;
Kombinacje
function Combination(n, k: Word): Extended;
begin
Result := NewtonSymbol(n, k);
end;
Tu już sprawa jest prosta, gdyż należy tylko wywołać funkcje, które napisałem już wcześniej.
Mam nadzieję, że komuś się mój artykuł przyda.