home *** CD-ROM | disk | FTP | other *** search
/ Flop Magazin 32 / Flop_Magazin_32_1994_06_Raster_cs_Side_B.atr / hlav31.cap < prev    next >
Text File  |  2023-02-26  |  4KB  |  1 lines

  1. ¢   Popis @e&en) hlavolamu z ')sla 31¢¢¢   Tentokr*t jsem to asi s obt)(nost) hlavolamu p@ehnal. Nakonec i m% se jej poda@ilo rozlousknout jen d)ky tomu, (e prost% nechci nech*vat nevy@e&en[ probl[my a po@*d jsem zkou&el a p@em`&lel, a( se mi to poda@ilo.¢¢   Pop)&u V*m ]vahu, kterou jsem nakonec dosp%l ke spr*vn[mu algoritmu.¢   Pokud bych cht%l zkoumat v&echny cesty, v`sledku se nikdy nedoberu, proto(e je jich nekone'n% mnoho. M+(u ale sledovat v&echna ')sla v matici a zkoumat nejkrat&) mo(nou cestu k n%mu. Je nutn[ sm%ry n%jak ozna'it a proto(e s ')sly se pracuje nejsn*ze, rozhodl jsem se je o')slovat. Tak sm%r nahoru jsem ozna'il jako 1, vpravo nahoru jako 2 atd. a( sm%r vlevo nahoru jako 8. Pokud jsem n%kam dosp%l tak, (e jsem &el nejd@)ve nahoru a potom doprava, ozna'il jsem tuto cestu jako "13". Toto ozna'en) m% ale omezuje pouze na 10 ')slic, nebo④ potom doch*z) k zaokrouhlov*n). Jak se pozd%ji uk*zalo, nejdel&) cesty ╱a zrovna ty spr*vn[$ m%ly 9 skok+, tak(e to nakonec sta'ilo a nemusel jsem se uchylovat ke komplikovan%j&)mu pou()v*n) @et%zc+. Mysl)m, (e dal&) popis uvedu p@)mo u ')sel @*dk+:¢¢10 - 130 tisk hlavi'ky a 'ek*n) na kl*vesu START¢¢140 - 250 na'ten) souboru HLAV31.DAT jako ')sel do pole A╱23,23$ - pokud je na'ten znak "X" ╱mimo obrazec$, je nahrazen "-12" - a vynulov*n) pole cest B╱23,23$¢¢260 - 370 sch[matick[ zobrazen) bludi&t% na monitoru. V pr+b%hu v`po'tu se budou te'ky reprezentuj)c) ')sla nahrazovat "d[lkou cesty".¢¢380 - 550 vlastn) v`po'et:¢¢420 vynulov*n) 'asu¢¢430 nastaven) aktu*ln)ho po'tu zkoum*n) ZZ ╱zat)m 0$¢¢440,450 cykly definuj)c) sou@adnice ╱proj)(d) se postupn% cel* matice$¢¢460 provede se podprogram hvezda ╱kter` zkoum* v&ech 8 mo(n`ch n*sleduj)c)ch odskok+, vysv%tlen d*le$, kdy( je&t% nebyl v+bec proveden a narazilo se na v`choz) prost@edn) 'len ╱v(dy nulov* cesta$. Inicializa'n) zkoum*n).¢¢470 narazilo se na pozici, kter* m* kladnou a nenulovou cestu, tedy bude proveden podprogram hvezda a zapo')t* se do prom%nn[ ZZ. Z*porn* cesta znamen*, (e podprogram byl ji( vol*n v minul[m pr+chodu a nem+(e nic zm%nit - viz d*le.¢¢480,490 konec pr+chodu matic).¢¢530 b%hem pr+chodu matic) se zm%nila alespo jedna cesta, nutn` dal&) pr+chod.¢¢540,550 nic se nezm%nilo, konec.¢¢600 - 790 podprogram hvezda:¢¢610 cyklus zkoumaj)c) v&ech 8 sm%r+ dal&)ho skoku.¢¢620 zji&t%n) o kolik se bude sk*kat, jak* je dosavadn) cesta k dan[ pozici a nastaven) pomocn`ch aktu*ln)ch sou@adnic.¢¢630 cyklus postupn% zkoumaj)c) skok ╱po jedn[$ ur'it`m sm%rem.¢¢640 podprogram smer. ⑤prava sou@adnic X a Y - skok o jednotku dan`m sm%rem.¢¢650 zji&t%n), kam se sko'ilo:¢¢660 Pokud se sko'ilo na 0 a z*rove je&t% nebyl skok dokon'en, do&lo k chyb% a zkoum* se dal&) sm%r.¢¢680 nula je posledn)m prvkem skoku - ]sp%ch !!¢¢690 zvl*&tn) p@)pad. Sko'ilo se na v`choz) pozici.¢¢700 Sko'ilo se na prvek s nulovou cestou: prvn) p@)stup k tomuto prvku. Nastav) se na n%j cesta do prom%nn[ CES.¢¢710 sko'ilo se na prvek, kter` byl ji( "objeven" jinou cestou. Znam[nko cesty ╱viz d*le$ bylo ulo(eno do prom%nn[ ZN.¢¢720 nov* cesta je krat&), nahrad) p+vodn).¢¢730 cesta nebyla zm%n%na, je obnoveno p+vodn) znam[nko cesty.¢¢740 cesta se ulo() do B╱I,J$ a na monitor se do p@)slu&n[ pozice vyp)&e jej) d[lka.¢¢750 Pokud byla na @. 680 cesta vyhodnocena jako spr*vn*, je vyps*na na obrazovku.¢¢760 konec cyklu definice sm%r+.¢¢770 p+vodn) kladn* cesta "zdrojov[ho" prvku ╱prvku, kter` vyvolal podprogram hvezda$ se zm%n) na z*pornou, zafixuje se. P@i p@)padn[m dal&)m pr+chodu ji( tento podprogram nevyvol*.¢¢790,860 procedura upravuj)c) sou@adnice X, Y - viz @. 640¢¢870,920 vlastn) v`tisk spr*vn[ cesty z @. 750¢¢   Tento program tedy postupn% zjist) nejkrat&) mo(n[ p@)stupy ke v&em prvk+m a ulo() je do pole B╱23,23$.¢