Zadanie

Ak máte akékoľvek otázky ohľadom tejto úlohy, napíšte Emovi na siegrift@ksp.sk

V spoločných kúpeľniach v Mlynskej doline sa dá nájsť ozaj všeličo. Jeden zamračený večer sa Andrej po dlhom dni vrátil na intrák a netúžil po ničom inom ako si ľahnúť a spať až do rána. Ešte sa však rozhodol umyť si zuby. Ani vo sne by mu nenapadlo, že na prahu kúpelne nájde pohodený zošit.

Andrej bol samozrejme zvedavý, zošiť zdvihol a prelistoval. Zošit bol prekvapivo úplne prázdny, až na čísla strán. Tie však neboli vôbec obyčajné, nešli v poradí za sebou a niektoré čísla ani neboli čísla, ale slová.

Andrej aj zabudol, že si prišiel umyť zuby a hneď utekal ukázať podivný zošit Dávidovi. Tomu napadlo napísať na jednu z prázdnych strán číslo. Hneď ako to spravil, číslo zmizlo a na jeho mieste sa objavila iná hodnota. Pokus ešte pár krát zopakoval s rovnakým výsledkom. Prizerajúci sa Andrej si uvedomil, že číslo, ktoré sa objaví nie je náhodné, ale nejakým spôsobom súvisí s číslom, ktoré napísal Dávid.

Napadlo im, že by mohli skúsiť zošit donútiť vypísať číslo aktuálnej strany. Možno sa vtedy stane niečo zaujímavé. A veruže sa stalo. Hneď ako bolo číslo napísané zošitom rovnaké ako číslo strany, v zošite sa objavil ďalší riadok textu: “Získavaš \(1.5\) bodu do PRASKu”. Super nie?

Úloha

V tejto úlohe dostanete prístup k podivnému zošitu. Vždy, keď doň vpíšete nejaké číslo, zošit vypíše odpoveď (číselnú, slovnú …) dodržiavajúc jednoduché pravidlo.

Vašou úlohou bude toto pravidlo odhaliť a nájsť také vstupné číslo, pre ktoré zošit vypíše požadovaný text.

Odovzdávanie

K tejto úlohe netreba odovzdávať žiadny popis ani program. Simulátor, spolu so všetkými potrebnými informáciami o odovzdávaní nájdete na stránke https://prask.ksp.sk/specialne/prask/5/1/1

Bodovanie

K dispozícii je \(10\) strán zošita, za vyriešenie každej získate \(1.5\) bodu. Náročnosť stúpa každou ďalšou stranou, môžete ich však riešiť v ľubovoľnom poradí.

Všeobecne sa pri úlohách, kde treba odhaliť skryté pravidlo, oplatí postupne skúšať malé čísla. Ľahko si pri nich totiž overíme vzniknuté hypotézy. A až keď nám nič nedáva zmysel, skúšame väčšie čísla.

Level 1

Po pár pokusoch sme si mohli všimnúť, že vstupné číslo sa umocňuje na druhú. Na dosiahnutie čísla \(35473936\) teda stačilo zadať jeho odmocninu, t.j. \(5956\).

Level 2

Zošit nám v tejto úlohe nevypisoval číslo, ale písmená, prípadne dvojice písmen oddelených čiarkou. Tieto písmená nám sú povedomé z hodín chémie. Vieme, že prvý prvok v periodickej sústave prvkov je vodík, teda H a rovnako pre vstup \(1\) dostaneme výstup H. Na dosiahnutie Al, I, Ca trebalo zadať protónové čísla týchto prvkov, teda \(135320\).

Level 3

Rýchlo si môžeme všimnúť, že všetky vypísané čísla sú prvočísla. Číslo \(7907\) je \(999\). prvočíslo v poradí, ale kedže indexujeme od 0, tak správny výsledok je \(998\).

Level 4

Nenecháme sa zastrašiť chceným výstupom a skúsime zadať nejaké čísla. Už po pár pokusoch si šikovný pozorovateľ a znalec kalendáru všime, že zisťujeme, kto má meniny v daný deň roka. Oto má meniny \(5.12.\) To je \(339\). deň v roku. Opäť ale začíname postupnosť od \(0\), preto je výsledok \(338\).

Level 5

Pri zadávaní za sebou idúcich čísel dostávame tú istú hodnotu. Kľúčové pozorovanie však je, že keď zadáme už zadané číslo, dostaneme inú hodnotu ako predtým. Prečo sme pre ten istý vstup dostali rôzne výstupy? Prejdeme očami po obrazovke a všimneme si počet doterajších pokusov. Hneď vidíme, že výstupom je (absolútny) rozdiel vstupného čísla a doterajšieho počtu pokusov. Správne riešenie teda závisí od počtu predchádzajúcich pokusov.

Level 6

S jednocifernými číslami sa nič nedeje, skúsime teda väčščie čísla. Počet cifier ostáva rovnaký ako na vstupe, no niečo sa s ciframi predsalen deje. Každá sa o niekoľko znížila. Môže sa zdať, že niektoré sa zvýšili, to však len prešli cez desiatku pri znižovaní. Každá cifra sa znížila o toľko, koľko cifier ju delí od prvej cifry, teda postupne o nula, jedna, dva… Správne riešenie je teda číslo \(3684591\).

Level 7

Keď postupne vyskúšame čísla od 1 do 10, všimneme si, že niektoré čísla dávajú veľmi podobný výstup (niekoľko \(0\) a potom jedna \(1\)). Všimneme si, že čísla ktoré dávajú takýto výstup sú práve prvočisla. Čo sa stane, ak skúsime nejaké zložené číslo? Dostaneme jeho prvočíselný rozklad, pričom jednotlivé pozície predstavujú postupne prvočísla. Napríklad, ak zadáme číslo \(24\), dostaneme výstup \(31\), pretože \(2^3 \cdot 3^1 = 24\).

Požadovaný vstup je teda čislo \(2^2 \cdot 3^4 \cdot 5^0 \cdot 7^3 \cdot 11^2 = 13446972\).

(Ak ste boli dostatočne trpezlivý a skúšali ste aj vyššie čísla, isto ste si všimli, že ste častokrát dostali výstup BLBE_CISLO. To preto, že toto číslo bolo deliteľné priveľkým prvočíslom a výstup by sa nezmestil do odpoveďovového rámčeka).

Level 8

Všimneme si, že výstup je dlhší ako vstup. Vo veľa prípadoch dokonca až \(2\) krát dlhší. Menej ako 2 krát dlhší je len v prípade, že vo vstupe sú úseky rovnakých cifier. Zistíme, že výstup je o toľko dlhší koľko úsekov rovnakých cifier sa nachádza vo vstupe. Pre každý úsek rovnakých cifier nám výstup podáva nejakú informáciu.

Výstup si rozdelíme na dvojice cifier a priradíme ich úsekom rovnakých cifier vstupného čísla podľa poradia. Prvé číslo z dvojice hovorí o akú cifru v danom úseku ide, druhé číslo z dvojice hovorí koľko sa daných cifier v úseku nachádza. Už si len správne prečítame, čo máme vypísať a to jednu \(2\), tri \(4\) a päť \(6\), teda \(244466666\).

Level 9

Vidíme, že výstup je vždy tvaru {číslo}{L alebo P}, {čislo}{H alebo D}, prípadne ich kombinácia {číslo}{L alebo P}{čislo}{H alebo D}. Čo by mohli znamenať tie písmenká? Sú to smery (L = ľavo, P = pravo, H = hore, D = dole). Keď si začneme kresliť na papier tieto pozície, zistíme, že tvoria peknú špirálu.

16 15 14 13 12
17 4 3 2 11
18 5 0 1 10
19 6 7 8 9
20 21 22 23 24
2L2H 1L2H 2H 1P2H 2P2H
2L1H 1L1H 1H 1P1H 2P1H
2L 1L 1P 2P
2L1D 1L1D 1D 1P1D 2P1D
2L2D 1L2D 2D 1P2D 2P2D

Výsledok buď odhadneme a postupním skúšaním doladíme alebo ho vypočítame priamo (odporúčame vyskúšať ;)). Pri odhadovaní si vieme všimnúť, že na diagonále sa vyskutujú druhé mocniny (ľavá horná diagonála obsahuje mocniny párnych čísel, pravá dolná mocniny nepárnych -1). Všimnime si, že ak máme zistiť odpoveď pre 31L17D, tak táto pozícia bude ležat na nejakom štvorci s rozmermi \(62\), pretože pozície 31L31D, 31L31H, 31P31D a 31P31H ležia na tom istom štvorci. Teda vieme, že výsledok bude aspoň \((31 \cdot 2)^2 = 3844\), následne už len správne doladíme pozíciu a nájdeme správne číslo \(3892\).

Level 10

Pre mocniny dvojky vždy dostaneme na výstupe číslo \(1\). V akom zápise čísla mocniny dvojky vyzerajú ako \(1\)? V binárnom. Tam však potrebujeme aj nejaké \(0\). Výstupom teda nebude celý binárny zápis vstupného čísla, ale len počet \(1\) v tomto zápise. Riešením je ľubovolné číslo, ktoré v binárnom zápise obsahuje práve osem \(1\), takýmto číslom je napríklad \(32385\).

Diskusia

Tu môžte voľne diskutovať o riešení, deliť sa o svoje kusy kódu a podobne.

Pre pridávanie komentárov sa musíš prihlásiť.