Pascal - zanimljiv zadatak

poruka: 8
|
čitano: 3.429
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
Pascal - zanimljiv zadatak

evo ovako: zadatak je u vezi dvodimenzionalnog niza

 

 

upišemo dvodimenzionalni niz koja bi nacrtana izgledala npr. ovako:

 

 

 

0 1 1 1 0 0 1 0 0 0

0 1 0 0 0 0 1 0 0 0

0 1 0 0 0 0 1 0 1 0 

0 1 1 1 0 0 1 1 1 1

0 0 0 1 0 0 0 0 1 0

0 0 0 1 0 0 0 0 1 0

0 1 1 1 0 0 0 0 1 0

 

ovo izgleda bezveze ali ako bolje pogledate ja sam od jedinica ispisao broj 54,

 

tako da je onda zadatak da nakon što upišemo čitavi niz, program bi trebao provjeriti ima li u nizu znamenaka upisanih na ovaj način i naravno da onda te znamenke ispiše

 

ideje?? 

 

 
0 0 hvala 0
17 godina
offline
Pascal - zanimljiv zadatak

Zadatak mi je neobično poznat, čak mislim da sam ga rješavao na nekom natjecanju :S

 

Ugl., prolazi svim točkama, i to stupcima (prvi stupac, od prve do zadnje; drugi stupac, od prve do zadnje...) i kad naiđeš na "1" napravi sljedeće: pronađi sve čelije koje su pokraj nje, a jednake su "1", i opet isto za njih (najbolje rekurzivnom funkcijom - sry, zaboravio sam ime algoritma (ako uopće ima ime); ali trivijalan je pa ćeš ga se lako sam dosjetiti). U isto vrijeme popunjavaj manje polje u kojem ćeš izolirati taj jedan broj. Kad pronađeš sve "1" tog broja, napravi usporedbu sa prethodno definiranim poljima za svaki broj.

 

P.S. Ne zaboravi obrisati svaki "1", nakon što ga umetneš u polje za analizu pojedinačnog broja.

The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
 
0 0 hvala 0
16 godina
neaktivan
offline
RE: Pascal - zanimljiv zadatak

Ime algoritma je(rekurzije) "flood fill"  bar tako mislimOsmijeh(radilo se o zadatku u c-u , ali natjecatelji su imali izbor ili c ili pascal)....ja sam ga našao kad sam davno s c-om bio na ti , kao primjer s takmičenja ACM-a (međunarodno takmičenje).Možda i nije , ali neka me isprave i daju ti točnu informaciju algoritma.

Private
Poruka je uređivana zadnji put uto 27.10.2009 20:08 (Private).
15 godina
neaktivan
offline
Pascal - zanimljiv zadatak

ok hvala vam ovo mi je dovoljno da ga rješim

 
0 0 hvala 0
16 godina
neaktivan
offline
Pascal - zanimljiv zadatak

Algoritam trazenja se zove breadth-first, prvu celiju tretiras kao root stabla.

Btw, ako ukljucis heuristicku funkciju koja kao izvor koristi patterne, dobit ces Astar, inace vrlo popularan search algoritam - vecinom nepravedno ogranicen samo na pathfinding.

 

Svi mi svakodnevno putujemo kroz vrijeme i to brzinom od jedne sekunde u sekundi. -hrx
 
0 0 hvala 0
16 godina
neaktivan
offline
RE: Pascal - zanimljiv zadatak

Jao... Breadth-first search pa iz njega A-star...  A-star = DFS (depth-first search, ilitiga ona rekurzija koja je na pocetku spomenuta) + heuristika. 

 

Gotovo identican pojavio se na zupanijskom natjecanju 2001., za 1. i 2. razrede srednje skole. Zadatak se zove FLAUTA. Ako se prosurfa, moze se i rjesenje naci. 

 

On a side note, jedan podosta tezi, ali slican, zadatak je ovaj

 

EDIT: A jel' bi jos mogao dodatno pojasniti kako ces koristiti tu heuristicku funkciju? Nikako ne mogu shvatiti kako bi ti pattern mogao biti izvor za heuristiku. Niti kakvu heuristiku. Mislim, meni pada na pamet jedna, al' ona u sebi koristi svojstvo dekompozicije stabla u zagradicasto, a opet ne omogucuje stvaranje heuristicke funkcije za A*.

Sa štovanjem, brahle!
Poruka je uređivana zadnji put sri 28.10.2009 19:45 (brahle).
16 godina
neaktivan
offline
Pascal - zanimljiv zadatak

Jednostavno, s obzirom da je array 2D, znas koordinate izvorisne tocke, i mozes provjeriti sve ostale patterne da vidis gdje imas crna polja. Npr ako u niti jednom patternu nemas crno polje gore-lijevo, a u vecini patterna je crno polje ravno dolje, onda znas u kojem smjeru ici. Na isti nacin na koji je u A*-u heuristika obicna manhattan duljina, tako ovdje mozes dodijeliti najvise bodova nodeu koji ima crno polje u tom smjeru u najvise razlicitih patterna.

 

A* pretrazuje sve _okolne_ tocke prvo. Ako ti nije jasno, rado cu ti poslati mali prototip.

Dovoljno je ukloniti heuristicku funkciju i vidjet ces vrlo brzo da pretrazuje prvo okolne tocke, a ne shiba u jednom smjeru koliko god duboko moze. TJ. makni heuristiku i imas tipicni breadth first.

 

Svi mi svakodnevno putujemo kroz vrijeme i to brzinom od jedne sekunde u sekundi. -hrx
Poruka je uređivana zadnji put sri 28.10.2009 20:44 (Deus ex machina).
 
0 0 hvala 0
16 godina
neaktivan
offline
RE: Pascal - zanimljiv zadatak
Deus ex machina kaže...

Jednostavno, s obzirom da je array 2D, znas koordinate izvorisne tocke, i mozes provjeriti sve ostale patterne da vidis gdje imas crna polja. Npr ako u niti jednom patternu nemas crno polje gore-lijevo, a u vecini patterna je crno polje ravno dolje, onda znas u kojem smjeru ici. Na isti nacin na koji je u A*-u heuristika obicna manhattan duljina, tako ovdje mozes dodijeliti najvise bodova nodeu koji ima crno polje u tom smjeru u najvise razlicitih patterna.

 

A* pretrazuje sve _okolne_ tocke prvo. Ako ti nije jasno, rado cu ti poslati mali prototip.

Dovoljno je ukloniti heuristicku funkciju i vidjet ces vrlo brzo da pretrazuje prvo okolne tocke, a ne shiba u jednom smjeru koliko god duboko moze. TJ. makni heuristiku i imas tipicni breadth first.

 

Ne pisi gluposti kad si vec dobio nadimak "decko-algoritmas", imas cak i na wikipediji i nije tako tesko.

Necu te uvjeravat kad si pametniji :P

Sa štovanjem, brahle!
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice