Autorské riešenie
[stiahni imp]                                       

  • Počet riešiteľov: 22 / 23 = 96 %

  • Úspešnosť riešenia: 2,23 / 4 = 56 %

Pri kreslení domčeka môžeme používať len pripravené procedúry:

  • panel_okno - vykreslí panel s oknom široký 50 krokov a vysoký 80 krokov
  • panel_dvere - vykreslí panel s dverami široký 50 krokov a vysoký 80 krokov
  • sikma_strecha - vykreslí panel so šikmou strechou široký 50 krokov a vysoký 50 krokov
  • rovna_strecha - vykreslí panel s rovnou strechou široký 50 krokov a vysoký 50 krokov

Zo zadania úlohy vyplýva, že:

  • domček je prízemný,
  • má aspoň jedno okno a má dvere,
  • na ľavom a pravom okraji strechy je panel so šikmou strechou.

Domčeky sa od seba líšia svojou veľkosťou - teda počtom okien. Túto hodnotu si vyžiadame od budúceho majiteľa domu a tejto hodnote (označme ju p) prispôsobíme naše riešenie. Vykreslenie domčeka rozdelíme do dvoch krokov - vykreslenie prízemia a vykreslenie strechy.

Prízemie je tvorené p panelmi s okami a jedným panelom s dverami. V našom riešení budú dvere umiestnené vždy úplne vľavo. Po vykreslení prízemia umiestnime korytnačku na jej štartovaciu pozíciu.

;Imagine logo
viem prizemie :p
  ;vykreslime p panelov s oknami, po vykresleni kazdeho sa posunieme na poziciu pre vykreslenie dalsieho panela
  opakuj :p[panel_okno vp 90 do 50 vl 90]
  ;vykreslime panel s dverami
  panel_dvere
  ;vratime sa do zaciatocnej pozicie
  vp 90 vz :p * 50 vl 90
koniec

Prízemie - p panelov s oknami a jeden panel s dverami

Pokračujeme strechou. V našom riešení použijeme strechu, ktorá je zarovno s okrajmi prízemia. Ľavú šikmú strechu vykreslíme pomocou procedúry sikma_strecha, za ňou nasleduje p-1 rovných striech. Počet rovných striech získame pomocou jednoduchého výpočtu:

  • počet panelov na prízemi: p + 1
  • počet panelov na streche: p + 1
  • počet šikmých striech: 2
  • počet rovných striech: p + 1 - 2 = p - 1

Ako vykresliť pravú rovnú strechu bez definovania novej procedúry? Je potrebné porozumieť procedúre sikma_strecha: kreslí rovnoramenný pravouhlý trojuholník, pričom korytnačka začína s kreslením vo vrchole oproti prepone a kreslí proti smeru hodinových ručičiek. Ak teda otočíme korytnačku o 90 stupňov doprava, môžeme použiť tú istú procedúru aj pre vykreslenie pravej šikmej strechy:

;Imagine logo
viem strecha :p
  ;posunieme sa do pozicie pre vykreslenie sikmej strechy, zaciname v bode oproti prepone trojuholnika smerom nahor
  vp 90 do 50 vl 90
  ;vykreslime lavu sikmu strechu
  sikma_strecha
  ;za lavou sikmou strechou nasleduje p-1 rovnych striech, po kazdej sa posunieme
  opakuj :p - 1[rovna_strecha vp 90 do 50 vl 90]
  ;otocime sa tak, aby sme pomocou procedury sikma_strecha mohli vykreslit aj pravu sikmu strechu
  vp 90
  ;vykreslime pravu sikmu strechu
  sikma_strecha
  ;vratime sa na zaciatocnu poziciu
  vz :p * 50
  vl 90
koniec

Strecha - dve šikmé strechy a p - 1 rovných striech

Obidve procedúry spojíme do výslednej procedúry dom:

;Imagine logo
viem dom :p
  ;overime, ci vstupna hodnota splna podmienku, ze kazdy dom ma aspon jedno okno
  ak2 :p >= 1
  ;vykreslime prizemie
  [prizemie :p
    ;po vykresleni prizemia sa posunieme k zakladom buducej strechy
    do 80
    ;vykreslime strechu
    strecha :p
    ;vratime korytnacku spat na prizemie
    vz 80]
  ;ak bolo na vstupe cislo mensie ako 1, vypise chybovu spravu
  [pis "|Pre zadaný počet panelov s oknami nie je možné postaviť montovaný dom.|]
koniec

Montovaný domček s p oknami

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

Niektorí riešitelia vykreslili jeden konkrétny domček s jedným oknom a jednými dverami. Tiež mnoho tímov vo svojom riešení neotestovalo zadávaný počet okien - aj pre hodnoty menšie ako 1 kreslili "zvláštny" dom, namiesto vypísať chybovej správy. Chybou bolo aj definovanie novej procedúry pre vykreslenie pravej šikmej strechy.

Medzi zaujímavé riešenia patrili tie, ktoré si okrem počtu okien vyžiadali ako vstupnú hodnotu aj poradie panelu s dverami, prípadne kreslili dvere uprostred prízemia.

dom dvere v strede

 

Zaujímavým riešením bolo vykreslenie poschodového domu - aj keď toto riešenie bolo penalizované stratou bodového hodnotenia, keďže v zadaní sa píše o prízemných domčekoch.

dom s poschodiami