Witam!
Wstępnie oceniając problem zwracania w memo (po kliku buttona) wszystkich wyrazów 5 literowych z liter całego alfabetu a-z (26 liter) na myśl przychodzi mi tylko zapętlanie.
Jednak tutaj pytam fachowców jak to sprawnie zrobic?
Pozdrawiam
Witam!
Wstępnie oceniając problem zwracania w memo (po kliku buttona) wszystkich wyrazów 5 literowych z liter całego alfabetu a-z (26 liter) na myśl przychodzi mi tylko zapętlanie.
Jednak tutaj pytam fachowców jak to sprawnie zrobic?
Pozdrawiam
Chodzi Ci o wariacje z powtórzeniami, od “aaaaa” do “zzzzz”? Wiesz ile ich będzie? Zmieści Ci się to wszystko do tego memo?
Też bym pomyślał o zapętlaniu, jaj zrobiłem tak w C++, to trwało 455 sekund - fajny benchmark.
Sprawdzilbym jak długo u mnie potrwa, ale prosiłbym o jakiś kodzik, bo temu zapętleniu samemu nie podołam xD
Wszystkie raczej nie zmieszczą Ci się do pamięci, a nawet jeśli to będzie to zajmowało duuużo pamięci. Można generować n-tą wariację, ale nie wszystkie naraz.
Tzn. ja nie chce wszystkich zapisywac do memo … tylko te ktore spełnia wymagany warunek.
Także najwięcej ok. 30 sztuk będzie w memo. O brak pamieci się martwie xD.
Potrzebny mi kodzik, bo chce pokombinowac na ‘nmhttp’.
Jaki warunek?
Bo raczej łatwiej wygenerować spełniające warunek, niż wszystkie, a potem sprawdzać, czy spełniają. Mówimy o prawie 12 milionach wariacji!
Jeśli chodzi o kod, to mogę Ci dać kod w C++, bo nie tworzę w tak pogmatwanych językach jak Delphi.
int main()
{
const int LICZBA_LITER = 5;
const int START = 97;
const int STOP = 122;
char slowo[LICZBA_LITER + 1];
slowo[LICZBA_LITER] = 0;
int ity[LICZBA_LITER];
for(ity[0] = START; ity[0] <= STOP; ity[0]++)
for(ity[1] = START; ity[1] <= STOP; ity[1]++)
for(ity[2] = START; ity[2] <= STOP; ity[2]++)
for(ity[3] = START; ity[3] <= STOP; ity[3]++)
for(ity[4] = START; ity[4] <= STOP; ity[4]++)
{
for(int i = 0; i < LICZBA_LITER; i++)
slowo[i] = ity[i];
cout << slowo << endl;
}
cout << "Koniec!" << endl;
return 0;
}