FLP/Ukol1 2012
Z OI wiki
Vstupy a výstupy pro robota.
Podle řádků: state, expr, program, limit, požadovaný výstup
sample01 'The right hand side rule program.'
(((w w w w w w) (w 0 w 0 w w) (w 0 w 0 0 w) (w 0 0 0 w w) (w w w w w w)) (1 1) west) start ((procedure start (turn-right (if wall? (turn-left (if wall? (turn-left (if wall? turn-left step)) step)) step) put-mark start)) (procedure turn-right (turn-left turn-left turn-left turn-left turn-left))) 3
input (simulate '(((w w w w w w) (w 0 w 0 w w) (w 0 w 0 0 w) (w 0 0 0 w w) (w w w w w w)) (1 1) west) 'start '((procedure start (turn-right (if wall? (turn-left (if wall? (turn-left (if wall? turn-left step)) step)) step) put-mark start)) (procedure turn-right (turn-left turn-left turn-left turn-left turn-left))) output ((turn-left turn-left turn-left turn-left turn-left turn-left turn-left step put-mark turn-left turn-left turn-left turn-left turn-left turn-left turn-left step put-mark) (((w w w w w w) (w 0 w 0 w w) (w 1 w 0 0 w) (w 1 0 0 w w) (w w w w w w)) (1 3) southeast))
sample02 'The turn north program.'
(((w w w) (w 0 w) (w 0 w) (w w w)) (1 2) southwest) turn-west ((procedure turn-west (if west? () (turn-left turn-west)))) 4
input (simulate '(((w w w) (w 0 w) (w 0 w) (w w w)) (1 2) southwest) 'turn-west '((procedure turn-west (if west? () (turn-left turn-west)))) 4) output ((turn-left turn-left turn-left turn-left) (((w w w) (w 0 w) (w 0 w) (w w w)) (1 2) northwest))
sample03 'Several commands without any program.'
(((w w w) (w 0 w) (w 0 w) (w w w)) (1 2) northeast) (step put-mark put-mark turn-left) () 3
input (simulate '(((w w w) (w 0 w) (w 0 w) (w w w)) (1 2) northeast) '(step put-mark put-mark turn-left) '() 3) output ((step put-mark put-mark turn-left) (((w w w) (w 2 w) (w 0 w) (w w w)) (1 1) northwest))
sample04 'The binary counter program.'
(((w w w w w w) (w 0 0 0 0 w) (w w w w w w)) (4 1) west) (add-one add-one add-one add-one add-one) ((procedure add-one (if mark? (get-mark step add-one turn-180 step turn-180) (put-mark))) (procedure turn-180 (turn-left turn-left turn-left))) 30
input (simulate '(((w w w w w w) (w 0 0 0 0 w) (w w w w w w)) (4 1) west) '(add-one add-one add-one add-one add-one) '((procedure add-one (if mark? (get-mark step add-one turn-180 step turn-180) (put-mark))) (procedure turn-180 (turn-left turn-left turn-left))) 30) output ((put-mark get-mark step put-mark turn-left turn-left turn-left step turn-left turn-left turn-left put-mark get-mark step get-mark step put-mark turn-left turn-left turn-left step turn-left turn-left turn-left turn-left turn-left turn-left step turn-left turn-left turn-left put-mark) (((w w w w w w) (w 0 1 0 1 w) (w w w w w w)) (4 1) west))
sample05 'The Robot versus wall program.'
(((w w w) (w 0 w) (w w w)) (1 1) west) step () 1
input (simulate '(((w w w) (w 0 w) (w w w)) (1 1) west) 'step '() 1) output (() (((w w w) (w 0 w) (w w w)) (1 1) west))
sample06 'The Robot's journey, or there and back again.'
(((w w w) (w 0 w) (w 0 w) (w 0 w) (w 0 w) (w 0 w) (w w w)) (1 4) southwest) (go go) ((procedure go (if wall? (turn-left turn-left turn-left) (step go step)))) 2
input (simulate '(((w w w) (w 0 w) (w 0 w) (w 0 w) (w 0 w) (w 0 w) (w w w)) (1 4) southwest) '(go go) '((procedure go (if wall? (turn-left turn-left turn-left) (step go step)))) 2) output ((turn-left turn-left turn-left step turn-left turn-left turn-left step) (((w w w) (w 0 w) (w 0 w) (w 0 w) (w 0 w) (w 0 w) (w w w)) (1 4) southwest))
sample07 'A very hard sample.'
(((w w w w w w w w w) (w 3 0 w 0 0 0 0 w) (w w 0 w 0 w w 0 w) (w 0 1 0 0 0 0 8 w) (w w 0 0 0 w w 0 w) (w 0 5 0 w 0 1 0 w) (w 4 w 0 w 1 7 0 w) (w w w w w w w w w)) (4 1) west) add-mark-to-maze ((procedure add-mark-to-maze (if mark? (get-mark (if mark? (put-mark) (put-mark put-mark (if wall? () (step add-mark-to-maze step-back)) turn-left (if wall? () (step add-mark-to-maze step-back)) turn-left (if wall? () (step add-mark-to-maze step-back)) turn-left turn-left (if wall? () (step add-mark-to-maze step-back)) turn-left (if wall? () (step add-mark-to-maze step-back)) turn-left get-mark))) (put-mark add-mark-to-maze get-mark))) (procedure step-back (turn-left turn-left turn-left step turn-left turn-left turn-left))) 20
input (simulate '(((w w w w w w w w w) (w 3 0 w 0 0 0 0 w) (w w 0 w 0 w w 0 w) (w 0 1 0 0 0 0 8 w) (w w 0 0 0 w w 0 w) (w 0 5 0 w 0 1 0 w) (w 4 w 0 w 1 7 0 w) (w w w w w w w w w)) (4 1) west) 'add-mark-to-maze '((procedure add-mark-to-maze (if mark? (get-mark (if mark? (put-mark) (put-mark put-mark (if wall? () (step add-mark-to-maze step-back)) turn-left (if wall? () (step add-mark-to-maze step-back)) turn-left (if wall? () (step add-mark-to-maze step-back)) turn-left turn-left (if wall? () (step add-mark-to-maze step-back)) turn-left (if wall? () (step add-mark-to-maze step-back)) turn-left get-mark))) (put-mark add-mark-to-maze get-mark))) (procedure step-back (turn-left turn-left turn-left step turn-left turn-left turn-left))) 20) output ((put-mark get-mark put-mark put-mark turn-left step put-mark get-mark put-mark put-mark step put-mark get-mark put-mark put-mark step put-mark get-mark put-mark put-mark step get-mark put-mark turn-left turn-left turn-left step turn-left turn-left turn-left turn-left step put-mark get-mark put-mark put-mark turn-left turn-left step put-mark get-mark put-mark put-mark step put-mark get-mark put-mark put-mark turn-left step get-mark put-mark turn-left turn-left turn-left step turn-left turn-left turn-left turn-left step get-mark put-mark turn-left turn-left turn-left step turn-left turn-left turn-left turn-left turn-left turn-left step put-mark get-mark put-mark put-mark step put-mark get-mark put-mark put-mark step get-mark put-mark turn-left turn-left turn-left step turn-left turn-left turn-left turn-left step put-mark get-mark put-mark put-mark step) (((w w w w w w w w w) (w 3 0 w 2 0 0 0 w) (w w 0 w 2 w w 2 w) (w 0 1 2 2 2 2 8 w) (w w 0 2 2 w w 0 w) (w 0 5 2 w 0 1 0 w) (w 4 w 0 w 1 7 0 w) (w w w w w w w w w)) (7 1) northeast))
sample08 'A binary arithmetic program.'
(((w w w w w w w) (w 0 0 1 1 w w) (w w 0 1 1 0 w) (w w w w w w w)) (4 1) west) add ((procedure add (sub-one turn-180 go turn-right step turn-right turn-right add-one turn-180 go turn-left turn-left step turn-left add)) (procedure add-one (if mark? (get-mark step add-one turn-180 step turn-180) (put-mark))) (procedure sub-one (if mark? (get-mark) (put-mark step sub-one turn-180 step turn-180))) (procedure turn-180 (turn-left turn-left turn-left)) (procedure turn-right (turn-left turn-left turn-left turn-left turn-left)) (procedure go (if wall? () (step go)))) 100 input (simulate '(((w w w w w w w) (w 0 0 1 1 w w) (w w 0 1 1 0 w) (w w w w w w w)) (4 1) west) 'add '((procedure add (sub-one turn-180 go turn-right step turn-right turn-right add-one turn-180 go turn-left turn-left step turn-left add)) (procedure add-one (if mark? (get-mark step add-one turn-180 step turn-180) (put-mark))) (procedure sub-one (if mark? (get-mark) (put-mark step sub-one turn-180 step turn-180))) (procedure turn-180 (turn-left turn-left turn-left)) (procedure turn-right (turn-left turn-left turn-left turn-left turn-left)) (procedure go (if wall? () (step go)))) 100) output ((get-mark turn-left turn-left turn-left turn-left turn-left turn-left turn-left turn-left step turn-left turn-left turn-left turn-left turn-left turn-left turn-left turn-left turn-left turn-left put-mark turn-left turn-left turn-left turn-left turn-left step turn-left put-mark step get-mark turn-left turn-left turn-left step turn-left turn-left turn-left turn-left turn-left turn-left turn-left turn-left turn-left turn-left turn-left step turn-left turn-left turn-left turn-left turn-left turn-left turn-left turn-left turn-left turn-left get-mark step get-mark step get-mark step put-mark turn-left turn-left turn-left step turn-left turn-left turn-left turn-left turn-left turn-left step turn-left turn-left turn-left turn-left turn-left turn-left step turn-left turn-left turn-left turn-left turn-left turn-left turn-left turn-left step turn-left get-mark turn-left turn-left turn-left turn-left turn-left turn-left turn-left turn-left step turn-left turn-left turn-left turn-left turn-left turn-left turn-left turn-left turn-left turn-left put-mark turn-left turn-left turn-left turn-left turn-left step turn-left put-mark step put-mark step put-mark step put-mark) (((w w w w w w w) (w 1 1 1 1 w w) (w w 1 0 0 1 w) (w w w w w w w)) (1 1) west))