Autorské riešenie
[stiahni imp]

  • Počet riešiteľov: 19 / 22 = 86%

  • Úspešnosť riešenia: 1,89 /5 = 37,8 %

Úlohou je vydláždiť miestnosť rozmeru 600 x 800 cm. Keďže dlaždičky sú štvorcové, šírku aj dľžku majú rovnaké, preto stačí poznať veľkosť dlaždičky, ktorá bude parametrom procedúry.

Ak by kachličky v jednom rade pokryli celú šírku miestnosti, stačilo by deliť šírku miestnosti s veľkosťou kachličky, a dostali by sme presne koľko kachličiek je potrebných v jednom rade.

alternatívny text k obrázku

Ale občas ostane zvyšná časť, kde už celá kachlička sa nezmestí, vtedy ich treba rezať.  Podľa podmienky už zvyšné časti prerezaných kachličiek sa nedajú ďalej použiť, preto v každom rade treba pridať ešte jednu kachličku.

alternatívny text k obrázku

Počet kachličiek v šírke miestnosti potom vypočítame tak, že určíme pomocou celočíselného podielu koľko celých kachličiek potrebujeme. Potom otestujeme, či ostane nejaká zvyšná časť miestnosti pomocou funkcie zvyšok pri celočíselnom delení. Ak je tam nejaký zvyšok, teda ak zvysok 600 :PocetSirka > 0, potom pripočítame ešte jednu kachličku.

To isté treba urobiť aj pri určení počtu kachličiek v dľžke miestnosti, lebo aj tam môže ostať nepokrytá časť.

Ak poznáme počet kachličiek potrebných v šírke a dľžke, vynásobením dostaneme celkový počet potrebných kachličiek. Nakoniec ostáva určiť počet balení, pretože kachličky sa predávajú len v 12 kusových baleniach. Tu opäť použijeme celočíselné delenie. Ak počet potrebných kachličiek nie je násobkom 12, musíme ešte zvýšiť počet balení o jeden.

Možné riešenie v Imagine:

;Imagine logo
viem dlazdice :velkost

;určenie počtu kachličiek potrebných v šírke haly
  urobtu "PocetSirka cpodiel 600 :velkost
   ak zvysok 600 :PocetSirka > 0
    [urobtu "PocetSirka :PocetSirka+1]

;určenie počtu kachličiek potrebných v dľžke haly
  urobtu "PocetDlzka cpodiel 800 :velkost
    ak zvysok 800 :PocetDlzka > 0
      [urobtu "PocetDlzka :PocetDlzka+1]

;určenie celkového počtu kachličiek
  urobtu "pocetKachliciek :PocetSirka * :PocetDlzka
  pis :pocetKachliciek

;určenie počtu balení potrebných pre vydláždenie
  urobtu "pocetBaleni cpodiel :pocetKachliciek 12
    ak zvysok :pocetKachliciek 12 > 0
      [urobtu "pocetBaleni :pocetbaleni+1]

pis (slovo "|Pocet potrebnych baleni kachliciek: | :pocetBaleni)
koniec

Vaše zaujímavé riešenia a najčastejšie chyby

Niektorí ste nesprávne počítali s obsahmi. Najprv ste vypočítali obsah miestnosti, potom obsah jednej kachličky. Delením ste dostali počet kachličiek potrebných na vydláždenie, čo platí len v prípadoch, ak sa plocha dá vydláždiť celými kachličkami. V prípade necelej časti ste pripočítali ešte jednu kachličku na celý priestor, čo nestačí. Ako je znázornené aj na obrázku, v každom rade a v stľpci bude potrebné pridať kachličku.

Viacerí počítate s globálnymi premennými (vytvárajú sa príkazom urob), pričom v týchto prípadoch, ak premenné používame len v rámci jednej procedúry postačia lokálne (vytvárajú sa príkazom urobtu). Nepovažujeme to za chybu, ale z hľadiska efektívnosti výpočtu je to výhodnejšie.

Pozitívne hodnotíme prehľadný zápis a komentáre, a taktiež zmysluplné názvy premenných.

Veľmi pekné riešenie poslali nám tímy Kabby a Avenger, a taktiež Pena a Programátori2017.