friendz: add solver_cmd for solve from command line
authorJean Privat <jean@pryen.org>
Tue, 5 Aug 2014 02:57:35 +0000 (22:57 -0400)
committerJean Privat <jean@pryen.org>
Mon, 11 Aug 2014 17:59:37 +0000 (13:59 -0400)
Signed-off-by: Jean Privat <jean@pryen.org>

contrib/friendz/src/solver_cmd.nit [new file with mode: 0644]
tests/sav/solver_cmd.res [new file with mode: 0644]
tests/sav/solver_cmd_args1.res [new file with mode: 0644]

diff --git a/contrib/friendz/src/solver_cmd.nit b/contrib/friendz/src/solver_cmd.nit
new file mode 100644 (file)
index 0000000..5a28c8b
--- /dev/null
@@ -0,0 +1,41 @@
+# Monsterz - Chains of Friends
+#
+# 2010-2014 (c) Jean Privat <jean@pryen.org>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the Do What The Fuck You Want To
+# Public License, Version 2, as published by Sam Hocevar. See
+# http://sam.zoy.org/projects/COPYING.WTFPL for more details.
+
+# Solver of levels on the command-line
+module solver_cmd
+
+import solver
+import level
+
+
+if args.is_empty then
+       print "Usage: solver_cmd levelnumber"
+       exit 0
+end
+var l = args.first.to_i
+var game = new Game
+var g = game.grid
+
+g.load(game.levels[l].str)
+g.size_problem
+
+var p = new FriendzProblem(g)
+var s = p.solve
+while s.is_running do
+       var r = s.run_steps(500000)
+       if r != null then
+               print "WON"
+               break
+       else if s.is_running then
+               print s
+               print g
+       end
+end
+print s
+printn g
diff --git a/tests/sav/solver_cmd.res b/tests/sav/solver_cmd.res
new file mode 100644 (file)
index 0000000..12b3a82
--- /dev/null
@@ -0,0 +1 @@
+Usage: solver_cmd levelnumber
diff --git a/tests/sav/solver_cmd_args1.res b/tests/sav/solver_cmd_args1.res
new file mode 100644 (file)
index 0000000..9750593
--- /dev/null
@@ -0,0 +1,12 @@
+FREE: 29
+KINDS: 2
+SIZE: 68630377364883.0
+WON
+#1229 d=19
+6x6
+\e[31mA\e[0m\e[31ma\e[0m\e[31ma\e[0m   |
+\e[36;1mB\e[0m\e[36;1mb\e[0m\e[31ma\e[0m   |
+#\e[36;1mb\e[0m\e[31mA\e[0m\e[31ma\e[0m\e[31ma\e[0m\e[31ma\e[0m|
\e[36;1mb\e[0m\e[36;1mb\e[0m\e[36;1mb\e[0m\e[36;1mb\e[0m\e[31ma\e[0m|
\e[31ma\e[0m\e[31mA\e[0m\e[31ma\e[0m\e[36;1mB\e[0m\e[31ma\e[0m|
\e[31mA\e[0m \e[31ma\e[0m\e[31ma\e[0m\e[31ma\e[0m|