Autorské riešenie
[stiahni imp]                                       

  • Počet riešiteľov: 4 / 5 = 80 %                       

  • Úspešnosť riešenia: 5.63 / 6 =  93.8%                   

pole

Keďže máme podľa fotky poľa zistiť pomer nepoškodenej a poškodenej časti, musíme ju oskenovať. To urobíme tak, že prejdeme postupne každý bod fotky. Pri takomto skenovaní zisťujeme, akej farby je daný bod. Stačí si pamätať počet bodov jednej farby, všetky ostatné body sú určite druhej farby. Pamätáme si teda počet bodov zelenej farby, ktorá znázorňuje nepoškodenú časť poľa.

Ak už máme oskenované celé pole, tak môžeme vypočítať pomery a znázorniť ich pomocou farebných obdĺžnikov. Najprv v spodnej časti po celej šírke vykreslíme obdĺžnik hnedej farby, do ktorého vykreslíme zelený, ktorý bude znázorňovať nepoškodenú časť. Šírku zeleného obdĺžnika vypočítame ako súčin šírky kresliacej plochy(v našom prípade je to šírka fotky) a pomeru nepoškodenej časti. Pomer nepoškodenej časti vypočítame ako podiel počtu zelených bodov na fotke a počet všetkých bodov, teda

pomer_neposkodenej_casti = pocet_zelenych / (400*300).

Šírka zeleného obdĺžnika teda bude

sirka_zeleneho_obdlznika = sirka_plochy * pomer_neposkodenej_casti,

sirka_zeleneho_obdlznika = 400 * (pocet_zelenych / (400 * 300)), teda

sirka_zeleneho_obdlznika = pocet_zelenych / 300.

Následne vykreslíme zelený obdĺžnik vypočítanej šírky.

oskenovane pole

;Imagine logo
viem skenuj_pole

  skry
  urobTu "pocet_zelenych 0
  urobTu "x 0
  urobTu "y 0

  kým [ :x < 400 ][
    kým [ :y < 300][

      nechxysur :x :y
      ak farbabodu = "zelena
        [urobTu "pocet_zelenych (:pocet_zelenych + 1)]
      urobTu "y (:y+1)
    ]

    urobTu "x (:x + 1)
    urobTu "y 0
  ]

  domov

  nechfp "hnedá
  polygon[
    do 55
    vp 90
    do 399
    vp 90
    do 55
    vp 90
    do 399
    vp 90
  ]

  urobTu "sirka_zeleneho_obdlznika (:pocet_zelenych / 300)

  nechfp "zelená
  polygon[
    do 50
    vp 90
    do :sirka_zeleneho_obdlznika
    vp 90
    do 50
    vp 90
    do :sirka_zeleneho_obdlznika
    vp 90
  ]

  ukáž

koniec

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

Táto úloha bola zvládnutá veľmi dobre. V jednom prípade sa vyskytol problém s použitím príkazu vyplň pri vykresľovaní obdĺžnikov vyjadrujúcich pomer nepoškodenej a poškodenej časti poľa. Lepším riešením by bolo tieto obdĺžniky vykresľovať pomocou príkazu polygon. V ďalšom prípade bolo pole úspešne zoskenované a vypočítané pomery, no neboli vykreslené.