about summary refs log tree commit diff stats
path: root/nqueens.mu
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2016-09-17 12:55:10 -0700
committerKartik K. Agaram <vc@akkartik.com>2016-09-17 12:55:10 -0700
commit760f683f2755038a1b0c16522f5001b889096aa5 (patch)
treee07afd384d45be93d81fb4c1788b332fe05799a0 /nqueens.mu
parent80df524b566a708551f752ce8b82e21738591651 (diff)
downloadmu-760f683f2755038a1b0c16522f5001b889096aa5.tar.gz
3389
Diffstat (limited to 'nqueens.mu')
-rw-r--r--nqueens.mu17
1 files changed, 12 insertions, 5 deletions
diff --git a/nqueens.mu b/nqueens.mu
index f23d7799..94631e09 100644
--- a/nqueens.mu
+++ b/nqueens.mu
@@ -1,12 +1,14 @@
 # http://rosettacode.org/wiki/N-queens_problem
 # port of the Arc solution at http://arclanguage.org/item?id=19743
+# run with tracing turned on:
+#   ./mu --trace nqueens.mu
 
 container square [
   rank:num
   file:num
 ]
 
-def nqueens n:num, queens:address:list:square -> result:num [
+def nqueens n:num, queens:&:list:square -> result:num [
   local-scope
   load-ingredients
   # if 'queens' is already long enough, print it and return
@@ -34,7 +36,7 @@ def nqueens n:num, queens:address:list:square -> result:num [
     {
       curr-conflicts?:boolean <- conflict? curr, queens
       break-if curr-conflicts?
-      new-queens:address:list:square <- push curr, queens
+      new-queens:&:list:square <- push curr, queens
       sub-result:num <- nqueens n, new-queens
       result <- add result, sub-result
     }
@@ -43,7 +45,7 @@ def nqueens n:num, queens:address:list:square -> result:num [
   }
 ]
 
-def conflict? curr:square, queens:address:list:square -> result:boolean [
+def conflict? curr:square, queens:&:list:square -> result:boolean [
   local-scope
   load-ingredients
   result1:boolean <- conflicting-file? curr, queens
@@ -52,7 +54,7 @@ def conflict? curr:square, queens:address:list:square -> result:boolean [
   reply result2
 ]
 
-def conflicting-file? curr:square, queens:address:list:square -> result:boolean [
+def conflicting-file? curr:square, queens:&:list:square -> result:boolean [
   local-scope
   load-ingredients
   curr-file:num <- get curr, file:offset
@@ -68,7 +70,7 @@ def conflicting-file? curr:square, queens:address:list:square -> result:boolean
   reply 0/no-conflict-found
 ]
 
-def conflicting-diagonal? curr:square, queens:address:list:square -> result:boolean [
+def conflicting-diagonal? curr:square, queens:&:list:square -> result:boolean [
   local-scope
   load-ingredients
   curr-rank:num <- get curr, rank:offset
@@ -89,3 +91,8 @@ def conflicting-diagonal? curr:square, queens:address:list:square -> result:bool
   }
   reply 0/no-conflict-found
 ]
+
+def main [
+  nqueens 4
+  $dump-trace [app]
+]