Autorské riešenie
[stiahni]

Procedúra zobrazCas použije 4 parametre:

  • :pd - poschodie displeju a stlačeného tlačidla,

  • :st - stlačené tlačidlo hore 1 alebo dole -1,

  • :vt - poschodie kde sa výťah nachádza teraz,

  • :vs - poschodie kde výťah smeruje,

a môže vyzerať takto:

viem zobraCas :pd :st :vt :vs
  urobTu "smer 0
  ak (:vs-:vt > 0)[
    urobTu "smer 1
  ]
  ak (:vs-:vt < 0)[
    urobTu "smer -1
  ]

  ak2 (zaroven (:st=:smer) (medzi :vt :vs :pd))[
    vysledok (3*(vzdialenost :vt :pd))
  ][
    vysledok (3*((vzdialenost :vt :vs)+(vzdialenost :vs :pd)))
  ]
koniec

Pri výpočte sme použili aj pomocné procedúry: vzdialenost a medzi. Vzdialenosť vráti vzdialenosť dvoch poschodí a medzi zistí, či sa poschodie nachádza medzi dvoma inými poschodiami.

viem vzdialenost :z :k
  ak2 :z<:k [
    vysledok :k-:z
  ][
    vysledok :z-:k
  ]
koniec

viem medzi :z :k :s
  urobTu "medzi "nie
  ak2 :z<:k [
    ak (zaroven (:z<=:s) (:s<=:k))[
      urobTu "medzi "ano
    ]
  ][
    ak (zaroven (:z>=:s) (:s>=:k))[
      urobTu "medzi "ano
    ]
  ]
  vysledok :medzi
koniecc

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

Túto úlohy riešilo 10 tímov, 2 riešenia boli správne.