|
Poslao: 23 Jul 2006 23:24
|
offline
- bobby

- Administrator
- Pridružio: 04 Sep 2003
- Poruke: 24135
- Gde živiš: Wien
|
Zadatak:
Imam tekstualni fajl sa par linija teksta. Potrebno mi je da napravim fajlove sa svim mogucim permutacijama linija tog teksta.
Recimo, original se sastoji od sledecih linija:
A
B
C
Prvi sledeci fajl bi recimo bio:
A
C
B
Sledeci:
C
A
B
Pa:
C
B
A
itd.
Ima li neko ideju kakav bi trebao da bude algoritam za permutovanje, tj. pravljenje svih mogucih kombinacija tih linija?
Dopuna: 24 Jul 2006 0:24
btw. i sledece kombinacije dolaze u obzir:
A
B
ili
A
C
Znaci, ne moraju svi elementi da budu prisutni.
|
|
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
|
|
|
Poslao: 24 Jul 2006 00:14
|
offline
- bobby

- Administrator
- Pridružio: 04 Sep 2003
- Poruke: 24135
- Gde živiš: Wien
|
Ne bas puno jer je to u Javi... bacicu pogled u svakom slucaju, mozda dobijem neku ideju.
|
|
|
|
|
|
|
Poslao: 25 Jul 2006 11:43
|
offline
- Pridružio: 11 Jun 2006
- Poruke: 94
|
Stvar je sledeca
Program koji tebi treba je vec resen samo u dva dela
provo hoces da permutiras neki skup to nije problem mislim...
To moze rekurzivno nasao sam to u Vlasicu a ima i u Laslo Krausovoj zbirci.
Za ono da uzimas delove toga treba ti binarni brojni sistem
Uzimas brojeve od 00000 11111 i ako je nula neuzimas u stringa a ako jeste uzimas u string...
Ovo zadnje ima u isto tamo nekoj zbirci samo nemogu da se setim imena...
Mislim da sam ja nesto slicno i radio ali davno to bese
Da sada ti ostaje onaj dio sa citanjem iz TXT fajla ali ......
HH
Nemoj samo da koristis taj problem za razbijanje nekih sifri jer ti onda najverovatnije treba i odgovor te druge aplikacije a to nije nesto sto ja znam u ovome momentu
|
|
|
|
|
|
|
Poslao: 25 Jul 2006 11:52
|
offline
- bobby

- Administrator
- Pridružio: 04 Sep 2003
- Poruke: 24135
- Gde živiš: Wien
|
Testiram detekciju BAT virusa i nasao sam takav BAT virus koji pri bilo kakvoj permutaciji linija bude prepoznat kao druga verzija virusa od strane AV programa.
Napravio sam rucno desetak "tumbanja" linija i dobio 10 razlicitih virusa. Kaspersky ih je detektovao kao Virus.BAT.Silly.m, Virus.BAT.Silly.bh itd itd.
BAT fajl je sastavljen od desetak zasebnih celina koje i svaka bude prepoznata pod nekim Virus.BAT.Silly imenom.
Celine su od po jednog do dva reda koda.
Hteo sam da napravim program koji ce da mi izbaci sve moguce kombinacije tih celina, pa da vidim sta kazu AV programi.
Cinjenicno stanje je da 70% rezultujucih fajlova bi bili neispravni, i kao takvi spadaju pod false alarme.
Hocu da utvrdim inteligenciju AV programa u utvrdjivanju ispravnosti BAT fajla, ili da eventualno dokazem da se vode samo time sto u nekom BAT fajlu postoji skup nekih komandi (nebitno da li rade, ili su mozda cak i u nekom slepom cosku programa koji nikada ne bude izvrsen) koje ce da izazovu detekciju infekcije koja to nije.
|
|
|
|
|
|
|
Poslao: 26 Jul 2006 09:21
|
offline
- Pridružio: 11 Jun 2006
- Poruke: 94
|
Inace ako hoces da vrsis samo permutacije mozes i rekurzivno ali uzmi niz i posle to sortiras u opadajucem redosledu ako sada hoces da dobijes sve permutacije od toga niza sortiraj ga uzastopnim zamenama ali u rastucem redosledu.....
Ako ti treba rekurzivna funkcija poslacu ti imam to a ako ti treba da jos pravis i podskupove pa njih da onda permutiras najbolje je uz pomoc onoga trika sa binarnim brojevima
a ako hoces da pravis i sa ponavljanjem koristi prosti fazon uzmi da ti niz ima 255 clanova ili napravi open niz pa onda njega kao sto sam to ranije u onom primeru sa sudokuom napomenuo
poenta je sledeca pravis 255 osnovu brojnog sistema i krenes od clana gde su sve nule i dodajes 1 ostalo je sablon
HH
Dopuna: 25 Jul 2006 20:29
Inace zaboravi sam ti napomenuti uzmi konzolnu aplikaciju pa to testiraj posle samo dodaj sta ti treba u DELFI
Dopuna: 26 Jul 2006 10:21
Program Anagram;
CONST Max =7;
TYPE Niz = ARRAY[1..max] of CHAR;
VAR i, Duzina :Integer;
Rijec,NovaRijec : Niz;
Slobodno : ARRAY[1..max] of BOOLEAN;
PrOCEDURE permutiraj(mjesto:integer; Rijec:NIZ);
vAR j:integer;
Procedure PisiRijec
WRITE (' ':10 -Duzina);
for I := Duzina DOWNTO 1 DO
WRITE(NovaRijec[i])
end;
begin
if mjesto = 0 then
PisiRijec
else begin
FOR j:= 1 to Duzina do begin
IF slobodno[j] then begin
Slobodno[j] := FALSE;
NovaRijec[mjesto]:=rijec[j];
Permutiraj(mjesto-1,Rijec);
Slobodno[j] := TRUE
end end end end
Procedure CitajRijec;
begin
WRITE('Rijec-->'); i := 0;
REPEAT
i++;
Slobodno[i]:= tRUE;
READ(rijec[j])
until (i = max) or eoln;
Duzina := i-1
end;
Begin
CitajRijec; WRITELN;
Permutiraj(Duzina,rijec); Writeln
end.
|
|
|
|
|
|