Školská záhrada

12th Oct 2026

Teoretický úvod

Toto cvičenie je malý príklad práce so štruktúrovaným textom. Diagram záhona síce prichádza ako jeden reťazec, napríklad "VVCG\nVVRC", no znak nového riadku v ňom oddeľuje dva riadky záhona. Po rozdelení získate dve textové postupnosti, v ktorých každý znak predstavuje jedno políčko.

Úlohou je premeniť tri druhy informácie na výsledný zoznam:

  • písmeno v diagrame → názov rastliny,
  • poradie žiaka v abecednom zozname → dvojica stĺpcov,
  • dvojica stĺpcov v oboch riadkoch → štyri rastliny daného žiaka.

Kľúčová je práca s indexmi. Indexovanie v Pythone začína od nuly. Ak má žiak v zoradenom zozname index i, jeho políčka začínajú v stĺpci i * 2. Každý žiak totiž zaberá presne dva stĺpce. Prvému žiakovi patria stĺpce 0 a 1, druhému 2 a 3, tretiemu 4 a 5 atď. Dva susedné znaky pohodlne vyberiete výrezom row[start:start + 2].

Diagram je usporiadaný po riadkoch, ale výsledok pre žiaka treba zostaviť z jeho malého obdĺžnika: najprv dve rastliny z horného riadku a potom dve zo spodného. Na preklad skratiek na názvy sa hodí slovník, napríklad {"G": "Tráva", ...}. Slovník vyjadruje priamy vzťah „kód → hodnota“ a umožní preložiť každý vybraný znak bez série podmienok if.

Cieľ cvičenia

V súbore kindergarten_garden.py implementujte triedu Garden. Trieda má reprezentovať záhon v materskej škole a metóda plants() má vrátiť rastliny, ktoré patria konkrétnemu žiakovi.

Použitie triedy vyzerá napríklad takto:

garden = Garden("RC\nGG")
garden.plants("Alena")
# ["Reďkovky", "Ďatelina", "Tráva", "Tráva"]

Konštruktor prijíma diagram záhona a voliteľne aj zoznam žiakov:

Garden(diagram, students=["Alena", "Boris"])

Ak zoznam žiakov nie je zadaný, použite štandardné mená Alena, Boris, Cyril, Daniel, Eva, František, Gitka, Helena, Ivana, Jozef, Karol a Ladislav.

Ako záhon funguje

Diagram má dva riadky. Každý žiak dostane štyri susediace políčka: dve políčka v hornom riadku a dve políčka v dolnom riadku.

Napríklad diagram:

VVCG
VVRC

je rozdelený takto:

VV CG
VV RC

Prvý žiak dostane prvé dva stĺpce (VV a VV) a druhý žiak ďalšie dva stĺpce (CG a RC). Rastliny treba čítať zľava doprava: najprv dve horné a potom dve dolné políčka.

Druhy rastlín

Každé písmeno v diagrame označuje jednu rastlinu:

Písmeno Rastlina
G Tráva
C Ďatelina
R Reďkovky
V Fialky

Metóda plants(student) má vracať slovenské názvy rastlín, pretože práve tie kontrolujú testy.

Príklad

Pre záhon:

garden = Garden("RC\nGG")

má Alena prvé dve políčka v oboch riadkoch:

R C
G G

Preto:

garden.plants("Alena")
# ["Reďkovky", "Ďatelina", "Tráva", "Tráva"]

Pri väčšom diagrame sa žiaci priraďujú podľa abecedného poradia. Ak je zadaný vlastný zoznam students, musí sa najprv zoradiť abecedne; poradie vstupného zoznamu teda nemusí byť zoradené.

Neexistujúci žiak

Ak sa metóda plants(student) zavolá s menom, ktoré nie je v zozname žiakov daného záhona, musí vyvolať výnimku NoSuchStudentException. Túto vlastnú výnimku definujte v súbore kindergarten_garden.py.

Odporúčaný postup

  1. Rozdeľte diagram na dva riadky.
  2. Zoraďte zoznam žiakov podľa mena.
  3. Nájdite poradie požadovaného žiaka v zoradenom zozname.
  4. Pre jeho poradie vypočítajte začiatok dvojice stĺpcov: poradie * 2.
  5. Z oboch riadkov vyberte dva znaky patriace žiakovi.
  6. Preložte písmená G, C, R a V na názvy rastlín a vráťte ich v poradí horný riadok, horný riadok, dolný riadok, dolný riadok.

Na rozdelenie diagramu môžete použiť napríklad:

rows = diagram.splitlines()

Ak je start začiatok žiakovej dvojice stĺpcov, výrez jedného riadku získate ako row[start:start + 2].

Previous Post Next Post

Školská záhrada