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. Číslo n je prvočíslom práve vtedy, keď počet jeho deliteľov je práve 2 (deliteľom je 1 a n). 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 pre q. Odporúčame však generovať všetky prípustné hodnoty pre q a overovať, či prislúchajúce p 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)