3. sada domácich zadaní

Najneskorší termín odovzdania: 16.10.2016 (nedeľa) o 22:00
Odovzdávaný súbor: ZadanaKorytnacka.java

Cieľom tejto sady domácich zadaní je vytvoriť triedu ZadanaKorytnacka, 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ý.

Štvorce (1 bod)

Naučte korytnačky triedy ZadanaKorytnacka metódu stvorce, 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 strana. Farba výplne štvorcov je na striedačku červená a čierna.

public void stvorce(double strana)

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é 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 ZadanaKorytnacka pridajte metódu goldbach, ktorá pre zadané kladné 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).

public int goldbach(int n)

Rady:

  • Vytvorte si pomocnú metódu jePrvocislo(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 ZadanaKorytnacka metódu kombinovaneCislo. 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:

  • kombinovaneCislo(258,164) = 268
  • kombinovaneCislo(25, 2419) = 2429 (namiesto 25 uvažujeme číslo so zápisom 0025)
public int kombinovaneCislo(int n, int m)