Autorské riešenie Ozdobný kvietok pozostáva zo šesťuholníkov zoskupených vo vrstvách so striedavou bielou a žltou výplňou. Na vykreslenie celého kvietka vytvoríme 2 pomocné príkazy - jeden na vykreslenie šesťuholníka a druhý na vykreslenie jednej vrstvy šesťuholníkov. Šesťuholník s dĺžkou strany a vykreslíme pomocou príkazu sestuholnik nasledovne: viem sestuholnik :a N-tá vrstva šesťuholníkov (pre n>1) pozostáva zo šiestich na seba nadväzujúcich radov šesťuholníkov. V každom z týchto radov je n-1 šesťuholníkov. Pri vykresľovaní n-tej vrstvy musíme zohľadňovať, či je párna alebo nepárna. Zistíme to pomocou výsledku výrazu mod :n 2 = 0. Na základe týchto úvah vytvoríme príkaz vrstva na vykreslenie n-tej vrstvy šesťuholníkov: viem vrstva :n :a Napokon celý kvietok vykreslíme tak, že pre zadané n budeme v cykle vykresľovať druhú až n-tú vrstvu šesťuholníkov. Výsledný príkaz kresli na vykreslenie celého kvietka vyzerá nasledovne: viem kresli :n :a Celkový počet šesťuholníkov, z ktorých pozostáva kvietok s n vrstvami, môžme vypočítať rôznymi spôsobmi. Jedno riešenie je také, že pri každom volaní procedúry sestuholník budeme zvyšovať o 1 obsah globalnej premennej. Na konci vykreslenia bude v tejto premennej celkový počet vykreslených šesťuholníkov. Iné, viac matematické riešenie spočíva v tom, že si vyjadríme celkový súčet šesťuholníkov po vrstvách. V 1.vrstve je 1 šesťuholník, v 2.vrstve 6 šesťuholníkov, v 3.vrstve 2·6 šesťuholníkov, vo 4.vrstve 3·6 šesťuholníkov, ... v n-tej vrstve (n-1)·6 šesťuholníkov. Spolu v n vrstvách je počet šesťuholníkov 1 + 1·6 + 2·6 + 3·6+ 4·6+ ... + (n-1)·6. Po ďalšej úprave vyňatím činiteľa 6 pred zátvorku dostaneme 1 + 6·(1 + 2 + 3 + 4 + ... + (n-1)). Napokon použitím jednej finty upravíme aj súčet v zátvorke a dostaneme výsledok 1 + 6·(n-1)·n/2 a po úprave celkový súčet 1+3·(n-1)·n. O akú fintu ide? Traduje sa historka, ako slávny nemecký matematik Karl Friedrich Gauss (http://sk.wikipedia.org/wiki/Carl_Friedrich_Gauß) vo veku 9 rokov ako zázračné dieťa veľmi rýchle určil súčet čísel od 1 do 100. Najprv napísal do radu čísla od 1 do 100, pod tento rad napísal tie isté čisla, ale v klesajúcom poradí t.j. od 100 do 1: Čísla sčítaval po stĺpcoch. V každom stĺpci je súčet 101 a počet stĺpcov je 100. Potom súčet čísel v oboch riadkoch je 100·101. Keďže súčet čísel prvom aj druhom riadku je rovnaký, súčet čísel v prvom riadku bude polovicou celkoého súčtu t.j. 100·101/2. Rovnakou úvahou dôjdeme k vypočítaniu súčtu 1 + 2 + 3 + 4 + ... + (n-1), ktorý je rovný (n-1)·n/2. Vaše zaujímavé riešenia a najčastejšie chyby Do riešenia tejto úlohy sa pustilo 9 tímov. Len dva tímy vedeli vypočítať súčet šesťuholníkov. V dvoch riešeniach sa objavilo aj ošetrenie vstupu pre vykreslenie kvietku s počtom vrstiev n>0. Najčastejšie nedostatky, ktorých ste sa dopustili vo svojich riešeniach a naše odporúčania:
|
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |