Wszystkie mozliwosci

0

Niedawno pytalem jak mozna zrobic petle. Myslalem ze dalej sobie poradze ale niestety nie udalo mi sie ;( wiec pytam: jak mozna zobic aby, np. w memo wyswietlic wszystkie mozliwosci liter o dlugosci powiedzmy 10 znakow, np. aaaa, aaab, aaac, aaad itd. Mam nadzieje ze wiecie o co mi chodzi :-) --pozdrawiam PEDROS {hello}
Delphi6

0

Tak zaczalem to robic i wyszlo mi ze za zadne skarby swiata nie zmiescisz tego w Memo [kombinacja z 10 znakow]. wszystkich kombinacji jest 10! czyli 3628800, i zakladajac po 10 bajotw kazda daje nam to jakies 34,6MB [bez miejsca zajmowanego przez entery] :). Druga sprawa wyswietlenie 4 rzedow kombinacji w memo zajmuje mojemu prockowi 312 sekund, a zapisanie tego do pliku trwa ponizej 1 sekundy. Ponizej masz kodzik:

procedure TForm1.Button1Click(Sender: TObject);
var
n1,n2,n3,n4,n5,n6,n7,n8,n9,n0: Integer;
przed,po: TTime;
F: TextFile;
begin
Przed:=Now;
AssignFile(F,'C:\kombinacja.txt');
Rewrite(F);
for n1:=Ord('a') to Ord('z') do
begin
for n2:=Ord('a') to Ord('z') do
begin
for n3:=Ord('a') to Ord('z') do
begin
for n4:=Ord('a') to Ord('z') do
begin
for n5:=Ord('a') to Ord('z') do
begin
for n6:=Ord('a') to Ord('z') do
begin
for n7:=Ord('a') to Ord('z') do
begin
for n8:=Ord('a') to Ord('z') do
begin
for n9:=Ord('a') to Ord('z') do
begin
for n0:=Ord('a') to Ord('z') do
begin
WriteLn(F,Chr(n1)+Chr(n2)+Chr(n3)+Chr(n4)+Chr(n5)+Chr(n6)+Chr(n7)+Chr(n8)+Chr(n9)+Chr(n0));
end;
end;
end;
end;
end;
end;
end;
end;
end;
end;
Po:=Now;
Przed:=Po-Przed;
WriteLn(F,'File generated in '+timetostr(przed));
CloseFile(F);
end;

co prawda czas operacji nie bedzie wyswietlany co do milisekundy, lecz sekundy nie chcialo mi sie grzebac z gettickcount czy cos.--sys:> logout....

0

Sorry troche mi sie powalilo z tymi wyliczeniami {glowa} sa za lekkie
powinno byc (26 po 10)=26!/10!16! to jakies 531173500 kombinacji. Skromnie :). W pliku bedzie tyle samo enterow [jesli writeln robi #10 a nie #10#13] i 10 razy wiecej bajtow na kazda kombinacje czyli 531173500+53117350010=5.4GB

Powodzenia w tworzeniu ;)
--sys:> logout....

0

Dzieks za odpowiedz. Rzeczywiscie to bedzie zajmowalo sporo miejsca, ale postaram sie to jakos przerobic.--pozdrawiam PEDROS {hello}
Delphi6

0

Stworzylem cos takiego. czekalem 7min i plik zajmowal 1,56gb i bylo jakies plowe kompnacji. Jaki ty masz procesor ze ci sie to skonczylo po 5min--pozdrawiam PEDROS {hello}
Delphi6

0

Sheitar napisał:
[...] a'propos kombinacji...

Wzór, który podałeś (10 po 26) dotyczy kombinacji bez powtórzeń.
Myślę, że przy:
k=10 {dł wyrazu}
n=26 {ilosc elementow=ilosc liter}
wzór będzie wyglądał tak:
n^k=26^10=... { kombinacje z powtórzeniami n-elementów o k-długości wyrazu }

Zapewne Pedros'owi chodziło o wyrazy, w których litery mogą się powtarzać, czy tak?
{hello}

--Pawlik67
Zapraszam :-)
www.vebso.pl
UŻYTKOWNIK 9969489

0

Pawlik67 napisał:
&gtZapewne Pedros'owi chodziło o wyrazy, w których litery mogą się powtarzać, czy tak?

heh zapewne tak {glowa}
Kombinatoryke mialem niedawno na matmie i tak mi namieszali w glowie ze takie prostych rzeczy to sie mi kreca, a rzeczy typu "Dwie sisotry Ania i Beata zmywaja szklanki i Ania jako starsza zmywa 3 razy czesciej niz Beata. Wiadomo, ze prawdopodobienstwo zbicia szklanki w czasie mycia przez Anne wynois 0,01, a przez Beate 0,04. Jakies jest przawdopodobienstwo ze w czasie zmywania:
a) zostanie zbita 1 szklanka
b) szklanka zostala zbita, jakie jest prawdopodobienstwo ze to Ania zbila szklanke

{browar} --sys:> logout....

0

Zapomnialem dodac ze temte zadanie [te ze szklankami] sprawia mi mniej porblemow niz wariancje na zbirach n- elementowych czy jakos tak :P chyba usz isc podstudiowac lekko podstawy hehe

Ale co za durnaty ja tu wypisuje {hello} --sys:> logout....

0

Potrzebowalem tego aby napisac program do lamania hasel na kontach e-mail :-) ale policzylem sobie ze sprawdzenie wszystkich kombinacji 10 literowych przy zalozeniu ze sprawdzam 1haslo/s zajeloby 11lat :( --pozdrawiam PEDROS {hello}
Delphi6

0

Pedros napisał:
&gtPotrzebowalem tego aby napisac program do lamania hasel na kontach e-mail :-) ...

Mozna latwiej tylko trzeba troche naiwnych osob :). Wyslij do denata poczte [np. z telnetu] i za adresuj ze przszyla np. od admnia serwisu pocztowego danej osoby. Wymysl jakas dobra scieme i ... masz haslo {brawo}
Niestety ta metoda ma pewne wady [nie kazdego da sie zrobic w konia], ale jak sie juz ktos na to zlapie to jej zaleta jest to ze na pewno nie stracisz 11 lat ;) --sys:> logout....

0

No mozna i tak ale to nie jest juz taka zabawa jak napisanie programu do lamania i zlamanie hasla. :-) --pozdrawiam PEDROS {hello}
Delphi6

0

Zapomnialem jeszcze o jednej rzeczy. Wpadlem na pomysl (ogladajac HAKEROW 2) na zatrudnienie innych kompow do lamania tego hasla. Ale aby zlamac je w ciagu 24h potrzebowalbym ponad 8tys kompw. Wiec moge jeszcze napisac program wysylajacy sie do wszystkich mozliwych osob. Ale to juz bylby wirus:(
--pozdrawiam PEDROS {hello}
Delphi6

0

W ksiazce algorytmy i struktury danych w C++
masz takie cos co sie nazywa uniwersalna struktura slownikowa USS
i twoj problem da sie zapisac na kilkudziesieciu (moze kilkusset) kilobajtach :-)

Grunt to odpowiednie podejscie do problemu .
A ten algorytm podany wczesniej jest do bani
zero optymalizacji koledze ktory go napisal polecam ponowny kurs algorytmiki

wojta$--

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