Zadanie 3

Najneskorší termín odovzdania: 16.10.2022 (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ý.

Vpísaný obrazec (1 bod)

Naučte korytnačky triedy HomeTurtle metódu squardot, ktorá nakreslí „nekonečnú“ postupnosť postupne sa striedajúcich vnorených štvorcov a kruhov podľa obrázka nižšie („nekonečnú“ znamená, že štvorce, resp. kruhy so šírkou menšou ako 1 pixel nekreslíme). V postupnosti sa striedajú svetlosivé kruhy a sivé štvorce, ktorých stred je aktuálna pozícia korytnačky. Prvým útvarom postupnosti je kruh {+s priemerom+} určeným parametrom size. Každý ďalší útvar vznikne vpísaním do predošlého útvaru (buď do kruhu vpíšeme štvorec alebo do štvorca kruh). Štvorce sú v smere aktuálneho natočenia korytnačky.


1
2
3
public void squardot(double size) {

}

Divergencia (2 body)

Nech A(n) = 1/n, ak n > 0 je párne, a A(n) = (n-1)/n, ak n > 0 je nepárne. O nekonečnom číselnom rade A(1) + A(2) + A(3) + ... + A(n) + ... je známe, že diverguje (ak neviete, čo to znamená, dozviete sa na nejakej matematike). Naučte korytnačky triedy HomeTurtle metódu, ktorá pre zadané kladné reálne číslo c vráti najmenšie také číslo n, že A(1) + A(2) + ... + A(n) >= c.


1
public int divergence(double c)

Rovnaké cifry (2 bod)

Naučte korytnačky triedy HomeTurtle metódu isUniDigitNumber, ktorá vráti true práve vtedy, ak v zápise čísla n v desiatkovej sústave sú všetky cifry rovnaké. Príklady čísel, pre ktoré má metóda vrátiť hodnotu true: 3333, 11, 99999, 2, -777, 88. Metóda má fungovať pre kladné i záporné čísla. V riešení nie je dovolené použiť operáciu, ktorá prevedie číslo na znakový reťazec.


1
public boolean isUniDigitNumber(int n)

Hammingova vzdialenosť (3 body)

Hammingovou vzdialenosťou dvoch celých nezáporných čísel nazveme počet cifier v desiatkovej sústave, v ktorých sa tieto čísla líšia. Napríklad čísla 1323 a 2325 sa líšia na 2 miestach (prvá a posledná cifra) a teda ich Hammingova vzdialenosť je 2. Čísla 87 a 3481 majú Hammingovu vzdialenosť 3 (87 = 0087, 3481 – na 3 pozíciach máme rôzne cifry).

Naučte korytnačky triedy HomeTurtle metódu countHammingDistance, ktorá vráti Hammingovu vzdialenosť 2 zadaných nezáporných čísel. V riešení nie je dovolené použiť operáciu, ktorá prevedie číslo na znakový reťazec.


1
public int countHammingDistance(int number1, int number2)