[ StratOS @ 27.05.2003. 11:18 ] @
Imam jedan složeniji problem kod traženja parova sequence stringova.

Radi se o kocki 100 x 100 x 100 znach100 layera na površini 100 x 100.
Svaki komadic te kocke ima slovo A ili B C ili D.

zip fajl kocke se nalazi ovdje.
U tom zipu je ASCII txt (cube.txt) koji sadrži gornje stringove.

Šta treba da napravim ?
Treba da dobijem broj nastupa sequence stringa "ABCD" u toj 3D kocki po svim mogučim smjerovima i diagonalama jedne tačke po cijelom volumenu.

Napravio sam algoritam prvo za traženje stringa, koji je najmanje zastupljen u toj kocki, no moj VB je stvarno stvarno too slow za sledeči potez - potez detekcije i eliminacije sequenca koji su vec zastupljeni ( inverzni stringovi itd ... ).
To kod VB-a traje i traje, a program postaje veoma nestabilan.

Zanima me kakav bi vi algoritam upotrebili pri traženju broja sequenca ( brez ponavljanja !! ) za taj problem.

Ako zna tko da programira u bilo kojem programskom jeziku, bilo bi dobro da attachira i source.

vec unaprijed hvala !
[ chupcko @ 27.05.2003. 14:35 ] @
Lepo lepo, ako se tarzi dokazivanje korektnosti rada algoritma ima malcice veze sa matematikom :).

Naime mislim da je malcice promasena tema :)
[ StratOS @ 27.05.2003. 15:48 ] @
Hm, htio sam da vam u večini obratim pozornost k drugom pristupu ovom problemu.
Naime, ja sam prvo skenirao onaj fajl po broju nastupa sequence poedinačnih stringova, zatim sam se fokusirao na onaj string koji se najmanje pojavljuje po cijelom fajlu ( kocki ).

Zatim na red dolazi drugi ( programsko i časovno odugovlačljiv problem ! ).
Identifikacija sequence stringa ( "ABCD" ) po svim mogučim smjerima kroz tu točku ( onog stringa kojeg je najmanje zastupljen u cijeloj kocki ).

Tako idemo po cijeloj površini kocke ( 100 x 100 ) i višini te identificiramo koordinate tog stringa ( X(a,b,c) ).

Naime to uopče nije problem, problem se ustvari kad trebam da pogledam sve sequence stringova u sva smjera do svih susjednih koordinata na prisutnost susjednog stringa u sequenciji "ABCD" ( Sve moguče smjerove ! )

Ako so koordinate susjeda kompatibilne sa smjerom i sequenciju stringa ( parova ) onda pogledaj još za ostale parove ( koordinate susjeda ) koje leže na tom smjeru.

Ako se sve poklopi i po sequenciji i po smjeru treba jos taj smjer i točke upamtiti, da sledeči put nečemo isto kombinaciju upotrebiti ( primjer inverzija ; ABCD = DCAB ).

Bit je znači prvo u matematici, pa onda u programerskoj pameti !
No sto bih ja zeljeo jest, da mi netko na brzi ili logicniji nacin objasni kako bi algoritam ubrzao te minimizirao količine podataka koje uopče ne trebam ( koordinate, smjerove zbog inverzije, znači bez dodatnog dupliranja broja !! ).

Jos jedanput output je broj koliko puta se string "ABCD" pojavljuje u toj kocki brez dupliranja i inverzije istih koordinata/smjerova !

VB zbog runtime komponenti i dodatnog pozivanja na te komponente strašno kasni od asm-a ili strojnog koda.

Pa mozete da sami izračunate koliko (max i točan broj ?) koraka trebate da dobijete odgovor na pitanje, sequenca u file-u je bitna ...

go ahead !
[ StratOS @ 31.07.2003. 15:33 ] @
Uh, uspjelo mi je .. no ne meni tocno, ali i sam sam dobio finalni rezultat.