Stair-climbing puzzle: Difference between revisions

Added Prolog
(Add Factor example)
(Added Prolog)
Line 907:
VERBOSE: Up one step
VERBOSE: Up one step</pre>
 
=={{header|Prolog}}==
The robot code is very short
<lang Prolog>step_robot :- repeat, step, fail.</lang>
The test program uses a global variable to store the current level and then implements the step behaviour which determines and reports the success of the step and updates the level.
 
This is capped at 20 steps but removing the last line will enable the program to run forever.
<lang Prolog>test_step_robot :-
nb_setval(level, 1),
step_robot.
step :-
nb_getval(level, Level),
random_between(0,3,N),
(
N > 0 ->
succ(Level, NewLevel), format('Climbed up to ~d~n', NewLevel)
;
succ(NewLevel, Level), format('Fell down to ~d~n', NewLevel)
),
nb_setval(level, NewLevel),
Level > 20 -> abort.</lang>
{{out}}
<pre>
?- test_step_robot.
Climbed up to 2
Climbed up to 3
Climbed up to 4
Climbed up to 5
Fell down to 4
Climbed up to 5
Climbed up to 6
Climbed up to 7
Climbed up to 8
Climbed up to 9
Climbed up to 10
Fell down to 9
Climbed up to 10
Climbed up to 11
Climbed up to 12
Climbed up to 13
Climbed up to 14
Climbed up to 15
Climbed up to 16
Climbed up to 17
Climbed up to 18
Fell down to 17
Climbed up to 18
Climbed up to 19
Climbed up to 20
Climbed up to 21
Fell down to 20
% Execution Aborted
?-
</pre>
 
=={{header|PureBasic}}==
Anonymous user