Skip to content

Instantly share code, notes, and snippets.

@mrryanjohnston
Last active August 1, 2021 17:54
Show Gist options
  • Save mrryanjohnston/09c664f7c17ee03ad6fbb3c79c7a4b67 to your computer and use it in GitHub Desktop.
Save mrryanjohnston/09c664f7c17ee03ad6fbb3c79c7a4b67 to your computer and use it in GitHub Desktop.
CLIPS Solution: The Hunger Games - Zoo Disaster!

The Hunger Games - Zoo Disaster!

Implements the algorithm described here using CLIPS.

(load rules.clp)
(reset)
(assert (animals fox bug chicken grass sheep))
(run)
(facts)
(reset)
(assert (animals chicken fox leaves bug grass sheep))
(run)
(facts)
(reset)
(assert (animals bear big-fish lion cow bug leaves))
(run)
(facts)
(reset)
(assert (animals grass grass cow leaves bug big-fish leaves bear))
(run)
(facts)
(reset)
(assert (animals giraffe leaves leaves leaves bear bug leaves leaves panda))
(run)
(facts)
(exit)
(deffacts rule
(rule antelope eats grass)
(rule big-fish eats little-fish)
(rule bug eats leaves)
(rule bear eats big-fish)
(rule bear eats bug)
(rule bear eats chicken)
(rule bear eats cow)
(rule bear eats leaves)
(rule bear eats sheep)
(rule chicken eats bug)
(rule cow eats grass)
(rule fox eats chicken)
(rule fox eats sheep)
(rule giraffe eats leaves)
(rule lion eats antelope)
(rule lion eats cow)
(rule panda eats leaves)
(rule sheep eats grass))
(defrule left
(declare (salience 30))
(rule ?predator eats ?prey)
?animals <- (animals ?predator ?prey $?rest)
=>
(printout t ?predator " eats " ?prey crlf)
(retract ?animals)
(assert (animals ?predator $?rest)))
(defrule right
(declare (salience 20))
(rule ?predator eats ?prey)
?animals <- (animals $?start ?prey ?predator $?rest)
=>
(printout t ?predator " eats " ?prey crlf)
(retract ?animals)
(assert (animals $?start ?predator $?rest)))
(defrule other-right
(declare (salience 10))
(rule ?predator eats ?prey)
?animals <- (animals $?start ?predator ?prey $?rest)
=>
(printout t ?predator " eats " ?prey crlf)
(retract ?animals)
(assert (animals $?start ?predator $?rest)))
@mrryanjohnston
Copy link
Author

I got the following output from running clips -f program.bat:

         CLIPS (6.4 2/9/21)
CLIPS> (load rules.clp)
$***
TRUE
CLIPS>
(reset)
CLIPS> (assert (animals fox bug chicken grass sheep))
<Fact-19>
CLIPS> (run)
chicken eats bug
fox eats chicken
sheep eats grass
fox eats sheep
CLIPS> (facts)
f-1     (rule antelope eats grass)
f-2     (rule big-fish eats little-fish)
f-3     (rule bug eats leaves)
f-4     (rule bear eats big-fish)
f-5     (rule bear eats bug)
f-6     (rule bear eats chicken)
f-7     (rule bear eats cow)
f-8     (rule bear eats leaves)
f-9     (rule bear eats sheep)
f-10    (rule chicken eats bug)
f-11    (rule cow eats grass)
f-12    (rule fox eats chicken)
f-13    (rule fox eats sheep)
f-14    (rule giraffe eats leaves)
f-15    (rule lion eats antelope)
f-16    (rule lion eats cow)
f-17    (rule panda eats leaves)
f-18    (rule sheep eats grass)
f-23    (animals fox)
For a total of 19 facts.
CLIPS>
(reset)
CLIPS> (assert (animals chicken fox leaves bug grass sheep))
<Fact-19>
CLIPS> (run)
fox eats chicken
bug eats leaves
sheep eats grass
CLIPS> (facts)
f-1     (rule antelope eats grass)
f-2     (rule big-fish eats little-fish)
f-3     (rule bug eats leaves)
f-4     (rule bear eats big-fish)
f-5     (rule bear eats bug)
f-6     (rule bear eats chicken)
f-7     (rule bear eats cow)
f-8     (rule bear eats leaves)
f-9     (rule bear eats sheep)
f-10    (rule chicken eats bug)
f-11    (rule cow eats grass)
f-12    (rule fox eats chicken)
f-13    (rule fox eats sheep)
f-14    (rule giraffe eats leaves)
f-15    (rule lion eats antelope)
f-16    (rule lion eats cow)
f-17    (rule panda eats leaves)
f-18    (rule sheep eats grass)
f-22    (animals fox bug sheep)
For a total of 19 facts.
CLIPS>
(reset)
CLIPS> (assert (animals bear big-fish lion cow bug leaves))
<Fact-19>
CLIPS> (run)
bear eats big-fish
lion eats cow
bug eats leaves
CLIPS> (facts)
f-1     (rule antelope eats grass)
f-2     (rule big-fish eats little-fish)
f-3     (rule bug eats leaves)
f-4     (rule bear eats big-fish)
f-5     (rule bear eats bug)
f-6     (rule bear eats chicken)
f-7     (rule bear eats cow)
f-8     (rule bear eats leaves)
f-9     (rule bear eats sheep)
f-10    (rule chicken eats bug)
f-11    (rule cow eats grass)
f-12    (rule fox eats chicken)
f-13    (rule fox eats sheep)
f-14    (rule giraffe eats leaves)
f-15    (rule lion eats antelope)
f-16    (rule lion eats cow)
f-17    (rule panda eats leaves)
f-18    (rule sheep eats grass)
f-22    (animals bear lion bug)
For a total of 19 facts.
CLIPS>
(reset)
CLIPS> (assert (animals grass grass cow leaves bug big-fish leaves bear))
<Fact-19>
CLIPS> (run)
cow eats grass
cow eats grass
bug eats leaves
bear eats leaves
bear eats big-fish
bear eats bug
bear eats cow
CLIPS> (facts)
f-1     (rule antelope eats grass)
f-2     (rule big-fish eats little-fish)
f-3     (rule bug eats leaves)
f-4     (rule bear eats big-fish)
f-5     (rule bear eats bug)
f-6     (rule bear eats chicken)
f-7     (rule bear eats cow)
f-8     (rule bear eats leaves)
f-9     (rule bear eats sheep)
f-10    (rule chicken eats bug)
f-11    (rule cow eats grass)
f-12    (rule fox eats chicken)
f-13    (rule fox eats sheep)
f-14    (rule giraffe eats leaves)
f-15    (rule lion eats antelope)
f-16    (rule lion eats cow)
f-17    (rule panda eats leaves)
f-18    (rule sheep eats grass)
f-26    (animals bear)
For a total of 19 facts.
CLIPS>
(reset)
CLIPS> (assert (animals giraffe leaves leaves leaves bear bug leaves leaves panda))
<Fact-19>
CLIPS> (run)
giraffe eats leaves
giraffe eats leaves
giraffe eats leaves
panda eats leaves
panda eats leaves
bear eats bug
CLIPS> (facts)
f-1     (rule antelope eats grass)
f-2     (rule big-fish eats little-fish)
f-3     (rule bug eats leaves)
f-4     (rule bear eats big-fish)
f-5     (rule bear eats bug)
f-6     (rule bear eats chicken)
f-7     (rule bear eats cow)
f-8     (rule bear eats leaves)
f-9     (rule bear eats sheep)
f-10    (rule chicken eats bug)
f-11    (rule cow eats grass)
f-12    (rule fox eats chicken)
f-13    (rule fox eats sheep)
f-14    (rule giraffe eats leaves)
f-15    (rule lion eats antelope)
f-16    (rule lion eats cow)
f-17    (rule panda eats leaves)
f-18    (rule sheep eats grass)
f-25    (animals giraffe bear panda)
For a total of 19 facts.
CLIPS> (exit)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment