OSDN Git Service

Refactor a bit.
authorSimon Forman <sforman@hushmail.com>
Mon, 22 Jul 2019 00:25:22 +0000 (17:25 -0700)
committerSimon Forman <sforman@hushmail.com>
Mon, 22 Jul 2019 00:25:22 +0000 (17:25 -0700)
thun/TLA.pl

index 7402259..a8bd74a 100644 (file)
@@ -58,26 +58,29 @@ die_hard(Small, Big, Small, 5) :- Big #\= 5, writeln("fill big").  % Fill big.
 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