Najneskorší termín odovzdania: 23.10.2016 (nedeľa) o 22:00
Odovzdávané súbory: ZadanaKorytnacka.java
, KlikaciaPlocha.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, a triedu KlikaciaPlocha
, ktorá rozširuje triedu WinPane
.
Doplňujúce požiadavky:
Naučte korytnačky triedy ZadanaKorytnacka
metódu pismenoLenRaz
, ktorá vráti referenciu na novovytvorený reťazec. Tento reťazec bude obsahovať všetky znaky nachádzajúce sa v zadanom reťazci avšak každý znak len raz. Znaky vo vytvorenom reťazci nech sú usporiadané podľa poradia ich prvého výskytu v zadanom reťazci.
Príklady:
pismenoLenRaz("Domace zadanie") = "Domace zdni"
pismenoLenRaz("pismenoLenRaz") = "pismenoLRaz"
Tip: metóda indexOf
.
Iste by bolo pekné, ak by korytnačky rozumeli aj takým normálnejším príkazom v slovenčine. Do triedy ZadanaKorytnacka
pridajte metódu vykonajPrikaz
, ktorá ako parameter očakáva referenciu na reťazec obsahujúci príkaz. Korytnačka by mala podporovať tieto príkazy:
vpravo X
- korytnačka sa otočí o zadaný uhol v smere hodinových ručičiek, ak uhol nie je zadaný, korytnačka sa otočí o 90 stupňov.
vlavo X
- korytnačka sa otočí o zadaný uhol proti smeru hodinových ručičiek, ak uhol nie je zadaný, korytnačka sa otočí o 90 stupňov.
dopredu X
- korytnačka spraví krok zadanej dĺžky, ak dĺžka kroku nie je zadaná, korytnačka spraví krok dĺžky 10.
Názov príkazu je od hodnoty parametra (ak je zadaný) oddelený aspoň jednou medzerou. Pozor: nadbytočné medzery sa môžu nachádzať aj na začiatku a konci reťazca.
Príklady príkazov: "vlavo 120"
, " vpravo"
, " dopredu "
, " dopredu 100 "
, "vlavo"
, "vlavo 90.5"
.
Pomôcka:
Double.parseDouble()
:
Tip: metódy indexOf
, substring
.
Základným prvkom HTML je značkovanie textu pomocou tagov. Tag je postupnosť znakov ohraničená znakmi <
a >
. Príklad textu s tagmi: Zakladnym prvkom <i>html</i> je <strong>tag</strong>.
Do triedy ZadanaKorytnacka
pridajte metódu odstranTagy
, ktorá vráti referenciu na novovytvorený reťazec, ktorý vznikne zo zadaného reťazca odstránením všetkých tagov.
Príklad:
odstranTagy("Zakladnym prvkom <strong>html</strong> je <b>tag</b>.") = "Zakladnym prvkom html je tag."
Pri analýze textu sa z textu extrahujú kadejaké užitočné informácie. Medzi veľmi zaujímavé patria rôzne číselné informácie. Naučte korytnačky triedy ZadanaKorytnacka
metódu pocetCisel
, ktorá v zadanom reťazci zráta počet čísel, ktoré sa v ňom nachádzajú. Pod číslom rozumieme akúkoľvek súvislú postupnosť cifier 0
, ..., 9
a znaku ,
(čiarka). Predpokladáme korektný (a zjednodušený) vstup, t.j., že čísla v texte obsahujú nanajvýš jednu čiarku ako oddeľovač desatinnej časti a v texte nie sú použité medzery ako oddeľovač tisícov.
Príklady:
190
a 88,16
;
Existujú rôzne metódy, ako údaje „zmenšiť“ (kompresné algoritmy) alebo znemožniť ich prečítanie nežiadúcou osobou (šifrovacie algoritmy). V rámci tejto úlohy bude cieľom vytvoriť metódu, ktorá nepovolaným osobám trochu (ale naozaj iba trochu) sťaží prečítanie obsahu správy.
Do triedy ZadanaKorytnacka
pridajte metódu zasifruj
, ktorá zadaný reťazec transformuje na iný reťazec aplikovaním tzv. Jožkovho šifrovača. Nový reťazec zo zadaného reťazca vytvoríme preusporiadaním znakov. Prvý znak v novom reťazci bude prvý znak pôvodného reťazca, druhý znak v novom reťazci bude posledný znak pôvodného reťazca, tretí znak v novom reťazci bude druhý znak pôvodného reťazca, štvrtý znak v novom reťazci bude predposledný znak v pôvodnom reťazci, atď. Jednoducho nový reťazec vznikne striedavým pridávaním znakov zo začiatku reťazca a z konca reťazca, až kým sa „nestretneme“ v strede.
Príklady:
zasifruj("mama vari veceru") = "muarmeac evva ri"
zasifruj("ahoj svet") = "atheovjs "
Samotný šifrovač nie je veľmi užitočný bez dešifrovača. Do triedy ZadanaKorytnacka
pridajte metódu desifruj
, ktorá vráti dešifrovaný reťazec, t.j. taký reťazec, ktorého zašifrovaním dostaneme reťazec s rovnakým obsahom ako je parametrom referencovaný reťazec.
Má teda platiť, že s.equals(zasifruj(zakoduj(s))
.
Naprogramujte triedu KlikaciaPlocha
rozšírujúcu triedu WinPane
, ktorá klikaním do plochy umožní kresliť mnohouholníky s očíslovanými vrcholmi.
Klikacia plocha funguje nasledovne:
onMousePressed
), pričom miesto kliknutia je stredom vrcholu
Pomôcka:
printCenter
:
Integer.toString()
:
"OK" pri metóde znamená, že sa podarilo zrealizovať všetky testy a po skončení metódy ostala korytnačka v požadovanom stave. Neznamená to, že korytnačka nakreslila to, čo mala. Upozorňujeme, že evaluátor dokresľuje do grafických výstupov vizuálne značky (poloha korytnačky, významné body, podfarbenie, atď.), ktoré umožňujú rýchlu vizuálnu kontrolu riešenia.
Očakávané grafické výstupy evaluátora pre korektné riešenie: