Autorské riešenie
[stiahni imp ]

  • Počet riešiteľov: 5 / 6 = 83 %

  • Úspešnosť riešenia: 1,4 / 5 = 28 %

Našou úlohou je nájsť v žlto-zelenom terči výstrely - čierne body, zistiť, ako ďaleko sú od stredu a zrátať body.

Najprv si musíme uvedomiť, že musíme prejsť celým terčom bod po bode. Napríklad z ľavého dolného rohu hore po stĺpcoch až do pravého horného rohu. Alebo akokoľvek inak.

Ak nájdeme bod čiernej farby, zavoláme procedúru zisti.

;Imagine logo
 
viem vyhodnot_zasahy
  urobTu "pocetBodov 0
  
  ph
  ; na lavy dolny roh terca
  vz :dlzka / 2
  vl 90
  do :dlzka / 2
  vp 90
  
   opakuj :dlzka [
    opakuj :dlzka [
      ak farbaBodu = "cierna [
        urobTu "pocet :pocet + zisti
      ]
      do 1
    ]
 
    ;do noveho stlpca
    vz :dlzka
    vp 90
    do 1
    vl 90
 
  ]
 
  ; naspat do stredu terca
  do :dlzka / 2
  vl 90
  do :dlzka / 2
  vp 90
  
  vysledok :pocetBodov
  
koniec

Procedúra zisti vráti počet bodov za daný výstrel. Ten vypočítame takto:

Keďže stred terča je v bode [0 0], absolútna hodnota súradníc určuje vzdialenosť od stredu. Keď si vezmeme tú väčšiu z nich, vieme zistiť, v ktorom medzištvorci sa výstrel nachádza. Označme ju "max.

Poznáme dĺžku terča. Šírku medzištvorca potom vypočítame ako dĺžka terča / 20. Delíme číslom 20, lebo medzištvorcov je 10 a každý je započítaný do dĺžky 2-krát.

Výsledok po celočíselnom delení čísla "max číslom šírka označuje poradie medzištvorca v ktorom sa výstrel nachádza od stredu. Označme ho "poradie. Aby sme aj posledný pixel medzištvorca započítali k správnemu medzištvorcu, budeme deliť číslo "max-1.

Počet bodov za výstrel je potom 10 - :poradie.

Nakoniec, ak sme v párnom medzištvorci, pridáme do výsledku o 1 bod viac, keďže to znamená, že sme v zelenom medzištvorci.

;Imagine logo
 
viem zisti
  urobTu "vzdX abs Xsur
  urobTu "vzdY abs Ysur
  urobTu "pocet 0
  ak2 :vzdX > :vzdY [
    urobTu "max :vzdX
  ][
    urobTu "max :vzdY
  ]
  
  urobTu "sirka (:dlzka / 20)
  urobTu "poradie (div :max-1 :sirka)
  urobTu "pocet (10 - :poradie)
  
  ;je v zelenom
  ak mod :pocet 2 = 0 [
    urobTu "pocet 1+:pocet
  ]
  vy :pocet
  
koniec

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

Celkovo tímy pochopili zadanie úlohy. Riešenie však nebolo jednoznačne čitateľné, čo spôsobilo, že ani jedno riešenie nebolo úplne správne a viacerí v podstate ani nevedeli ako začať.

O najčastejších chybách sa vo všeobecnosti nedá veľa povedať, keďže riešenia hodné hodnotenia boli len dve, každé iné.

Dva tímy poslali len nedokončené riešenia. Jeden tím stavil na konštantu 5,9, ktorou násobil počet výstrelov a výsledok vrátil ako správny počet bodov. Iba 2 tímy takmer vyriešili úlohu. Jeden tím mal problém len s vyhodnocovaním výstrelu do zeleného a druhý s celkovým vyhodnocovaním výstrelov. Ich prehľadávanie terča bolo neefektívne, keďže ho prehľadávali postupne od stredu cez každý štvorec nanovo.