Zadanie 3
Najneskorší termín odovzdania: 13.10.2024 (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)