Zadanie 3
Najneskorší termín odovzdania: 15.10.2023 (nedeľa) o 18:00
Odovzdávaný súbor: HomeTurtle.java
Cieľom tejto sady domácich zadaní je vytvoriť triedu HomeTurtle
, ktorá rozširuje triedu Turtle
a ktorá obsahuje nižšie predpísané metódy.
Doplňujúce požiadavky:
- riešenia, ktoré nebude možné skompilovať (t.j. riešenia so syntaktickými chybami) nebudú hodnotené,
- zdrojový kód správne naformátujte (CTRL+SHIFT+F),
- zdrojový kód musí byť vhodne komentovaný.
- pri riešení postačia poznatky, ktoré boli súčasťou 3. prednášky a na ňu nadväzujúcich cvičení.
Štvorce (1 bod)
Naučte korytnačky triedy HomeTurtle
metódu squares
, ktorá nakreslí „nekonečnú“ postupnosť vnorených vyplnených štvorcov podľa obrázka nižšie („nekonečnú“ znamená, že štvorce menšie ako 1 pixel nekreslíme). Stred vnorených štvorcov nech je aktuálna pozícia korytnačky. Dĺžka strany najväčšieho štvorca je daná parametrom size
. Farba výplne štvorcov je na striedačku červená a čierna.
1 public void squares(double size)
Rada:
- Zvážte vytvorenie pomocnej metódy, ktorá nakreslí vyplnený štvorec so zadanou dĺžkou strany a so stredom v aktuálnej pozícii korytnačky. Je vhodné, ak sa na vyplnenie štvorca použije aktuálne nastavená farba výplne.
Goldbachova hypotéza (2 body)
Podľa Golbachovej hypotézy sa každé kladné celé nepárne číslo n
dá rozložiť na súčet prvočísla a dvojnásobku druhej mocniny nejakého nezáporného celého čísla.
Príklady:
- 9 = 7 + 2×12
- 11 = 11 + 2×02
- 15 = 7 + 2×22
- 21 = 3 + 2×32
- 25 = 7 + 2×32
- 27 = 19 + 2×22
- 33 = 31 + 2×12
Do triedy HomeTurtle
pridajte metódu goldbach
, ktorá pre zadané kladné celé nepárne číslo n
vráti:
- také prvočíslo
p
, že n = p + 2×q2, alebo -1
, ak také prvočíslo neexistuje (keďže Goldbachova hypotéza možno neplatí pre všetky nepárne čísla).
1 public int goldbach(int n)
Rady:
- Vytvorte si pomocnú metódu
isPrime(n)
, ktorá vráti, či zadané číslo je prvočíslo. Číslon
je prvočíslom práve vtedy, keď počet jeho deliteľov je práve2
(deliteľom je1
an
). Efektívnosť riešenia nie je pri hodnotení zohľadňovaná. - Pri hľadaní vhodného rozkladu n = p + 2×q2 postačuje riešenie, ktoré overuje všetky prípustné hodnoty buď pre
p
alebo preq
. Odporúčame však generovať všetky prípustné hodnoty preq
a overovať, či prislúchajúcep
je prvočíslo.
Kombinované číslo (2 body)
Naučte korytnačky triedy HomeTurtle
metódu combinedNumber
. Táto metóda dostane ako parametre dve nezáporné čísla typu int
a vráti nové číslo typu int
, v ktorom na každej pozícii bude väčšia z cifier na tejto pozícii v parametrami zadaných číslach. Teda ak v prvom čísle je na mieste jednotiek cifra 5 a v druhom je na mieste jednotiek cifra 3, tak vo výslednom čísle bude na mieste jednotiek cifra 5. Ak sa počet cifier v zadaných číslach líši, tak pred číslo s menším počtom cifier si „domyslite“ cifry 0. Uvažujeme zápis čísel v desiatkovej sústave.
Príklady:
combinedNumber(258, 164) = 268
combinedNumber(25, 2419) = 2429
(namiesto 25 uvažujeme číslo so zápisom 0025)
1 public int combinedNumber(int n, int m)