i i “1609-Batagelj” — 2010/8/26 — 11:57 — page 1 — #1 i i i i i i List za mlade matematike, fizike, astronome in računalnikarje ISSN 0351-6652 Letnik 33 (2005/2006) Številka 1 Strani 25–26 Vladimir Batagelj: ULAMOVA SPIRALA Ključne besede: računalništvo, računalniški program, logo. Elektronska verzija: http://www.presek.si/33/1609-Batagelj.pdf c© 2005 Društvo matematikov, fizikov in astronomov Slovenije c© 2010 DMFA – založništvo Vse pravice pridržane. Razmnoževanje ali reproduciranje celote ali posameznih delov brez po- prejšnjega dovoljenja založnika ni dovoljeno. 25 1 6 3 1 1 2 2 2 0 4 8 0 1 7 0 1 7 7 4 1 1 3 2 2 2 2 1 0 8 2 7 0 2 2 1 7 5 3 4 2 1 7 1 0 RAÈUNALNIŠTVO 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 V prvi številki lanskega Preseka smo ob- javili prispevek Vladimirja Batagelja o Ula- movi spirali. Ta prispevek je dostopen na domači strani Preseka. Ulamova spirala Sliko Ulamove spirale lahko narišemo z naslednjim programom v logu (narečje mswlogo): Vladimir Batagelj Bralce smo že lani povabili k risanju čim lepše Ulamove spi- rale, pri tem pa smo njeno velikost prepustili avtorjem. Se- daj objavljamo sliko spirale, ki jo je ustvaril Timotej Lazar, ter štiri slike Simona Čoparja. Njegov program je napisan v jeziku java (glej Presek XXXI/5 in XXXI/6). Za objavo je program preobsežen, iz objavljenih slik pa lahko razberete, da je avtor risanje zastavil zelo široko in da njegov program dopušča številne možnosti. Na tem mestu pa objavljamo še kratek prispevek Vladimirja Batagelja z njegovo programsko rešitvijo v jeziku logo. Rešitev številske križanke s strani 18. TO pra :n if :n < 2 [op ''false] localmake ''k 2 repeat (round sqrt :n) - 1 [ if 0 = remainder :n :k [op ''false] make ''k :k+1 ] op ''true END TO preveri setfc ifelse pra :n [ 1 ] [ 3 ] circle 5 fill END TO Ulam :m cs ht setpc 6 setsc 4 make ''i 0 make ''j 0 make ''n 1 pu setpos [0 0] pd preveri make ''r ''false make ''k 1 make ''s 1 while [:n < :m][ repeat 2 [ make ''r not :r repeat :k [ make ''n :n + 1 ifelse :r [make ''i :i+:s][make ''j :j+:s] setpos (list 10*:i 10*:j) preveri ]] make ''k :k+1 make ''s -:s ] END Ulam 10000 Zanka while v glavnem ukazu Ulam ustvari m zaporednih točk na spirali. Pri tem upošteva, da sta pri »navijanju« spirale po dve zaporedni »stranici« enako dolgi (k je tekoča dolžina). Če je r resnično, se pomikamo vodoravno, sicer navpično; če je s = 1, se pomikamo naprej, če je s = –1 pa nazaj. Ukaz preveri določi barvo tekoče točke n in jo nariše – če je n praštevilo, je točka modra, sicer sinja. Praštevilskost števila n ugotavlja funkcija pra, ki izhaja iz definicije pojma praštevila in ugotovitve: če je naravno število n mogoče zapisati kot zmno- žek dveh naravnih števil p in q, p ≤ q, je p ≤ √—n. Program dobite na naslovu http://vlado.fmf.uni-lj.si/educa/ logo/ex/mix/Ulam.lgo, tolmač za mswlogo pa na naslovu http://www.softronix.com/logo.html. Presek 1-4.indd 25 10.8.2005 12:38:42 Process Cyan Process Magenta Process Yellow Process Black PANTONE 3395 CVC RAÈUNALNIŠTVO Ulamova spirala Timoteja Lazarja Ulamove spirale Simona Čoparja Vsakdo sam stoji na srcu zemlje, s sončnim žarkom preboden: in je takoj večer Salvatore Quasimodo 26 Presek 1-4.indd 26 10.8.2005 12:38:44 Process Cyan Process Magenta Process Yellow Process Black PANTONE 3395 CVC