[tutor] Update assignment

This commit is contained in:
tolauwae 2025-03-30 21:56:24 +02:00
parent 39c3af4ba5
commit ca687c0136
No known key found for this signature in database
GPG key ID: 20E068EB5B132116
18 changed files with 438 additions and 14 deletions

53
examples/lists/merlin.pl Normal file
View file

@ -0,0 +1,53 @@
% Merlin's Potion lab
:- dynamic ingredient/1.
% Rules of the game
% Add a new ingredient if it's not already present
add_ingredient(Item) :-
\+ ingredient(Item),
assertz(ingredient(Item)),
write('Added ingredient: '), write(Item), nl.
% Use an ingredient (remove it from memory)
use_ingredient(Item) :-
ingredient(Item),
retract(ingredient(Item)),
write('Used ingredient: '), write(Item), nl.
% Make a potion from two ingredients
make_potion(Item1, Item2) :-
ingredient(Item1),
ingredient(Item2),
Item1 \= Item2,
retract(ingredient(Item1)),
retract(ingredient(Item2)),
write('You mixed '), write(Item1), write(' and '), write(Item2),
write(' to create a potion!'), nl.
% Show what's left
show_ingredients :-
findall(X, ingredient(X), List),
write('Remaining ingredients: '), write(List), nl.
% Reset lab
reset_lab :-
retractall(ingredient(_)),
write('Potion lab reset.'), nl.
% Merlin's recipes
stock :-
add_ingredient(wolfsbane),
add_ingredient(mandrake),
add_ingredient(unicorn_blood),
add_ingredient(phoenix_feather),
add_ingredient(dittany).
brew :-
stock,
make_potion(wolfsbane, mandrake),
show_ingredients.
:- initialization(brew).