die_hard(Small, Big, 0, Big) :- Small #> 0, writeln("empty small"). % empty small.\r
die_hard(Small, Big, Small, 0) :- Big #> 0, writeln("empty big"). % empty big.\r
\r
-die_hard(Small, Big, 0, B) :- % small to big.\r
- Big #< 5, Small #> 0,\r
- Small + Big #=< 5,\r
- B is Small + Big, writeln("small to big"). \r
-die_hard(Small, Big, S, 5) :- % small to big.\r
- Big #< 5, Small #> 0,\r
- Small + Big #> 5,\r
- N is 5 - Big,\r
- (N #< Small -> S is Small - N ; S=0), writeln("small to big"). \r
+die_hard(Small, Big, S, B) :- Big #< 5, Small #> 0,\r
+ small_to_big(Small, Big, S, B),\r
+ writeln("small to big").\r
\r
-die_hard(Small, Big, S, 0) :- % big to small.\r
- Small #< 3, Big #> 0,\r
+die_hard(Small, Big, S, B) :- Small #< 3, Big #> 0,\r
+ big_to_small(Small, Big, S, B),\r
+ writeln("big to small").\r
+\r
+big_to_small(Small, Big, S, 0) :-\r
Small + Big #=< 3,\r
- S is Small + Big, writeln("big to small"). \r
+ S is Small + Big.\r
\r
-die_hard(Small, Big, 3, B) :- % big to small.\r
- Small #< 3, Big #> 0,\r
+big_to_small(Small, Big, 3, B) :- % \r
Small + Big #> 3,\r
- N is 3 - Small,\r
- (N #< Big -> B is Big - N ; B=0), writeln("big to small"). \r
+ B is Big - (3 - Small).\r
+\r
+small_to_big(Small, Big, 0, B) :-\r
+ Small + Big #=< 5,\r
+ B is Small + Big.\r
+\r
+small_to_big(Small, Big, S, 5) :-\r
+ Small + Big #> 5,\r
+ S is Small - (5 - Big).\r
\r
/*\r
\r