about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2017-09-24 23:31:57 -0700
committerKartik K. Agaram <vc@akkartik.com>2017-09-24 23:31:57 -0700
commit4f1d1944873c949b6d474f63e16098804c588a33 (patch)
tree5fefd252971a4f7a78ab22e6731f66301b2df916
parent947c639ec646b67d1e434759a80eebfffedafe8d (diff)
downloadmu-4f1d1944873c949b6d474f63e16098804c588a33.tar.gz
4006
-rw-r--r--html/nqueens.mu.html97
-rw-r--r--nqueens.mu9
2 files changed, 52 insertions, 54 deletions
diff --git a/html/nqueens.mu.html b/html/nqueens.mu.html
index 6180c160..bb65102c 100644
--- a/html/nqueens.mu.html
+++ b/html/nqueens.mu.html
@@ -97,7 +97,7 @@ if ('onhashchange' in window) {
 <span id="L36" class="LineNr"> 36 </span>  <span class="Conceal">¦</span> <span class="Delimiter">{</span>
 <span id="L37" class="LineNr"> 37 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr-conflicts?:bool <span class="Special">&lt;-</span> <a href='nqueens.mu.html#L53'>conflict?</a> curr, queens
 <span id="L38" class="LineNr"> 38 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> curr-conflicts?
-<span id="L39" class="LineNr"> 39 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> queens:&amp;:<a href='064list.mu.html#L6'>list</a>:<a href='nqueens.mu.html#L6'>square</a> <span class="Special">&lt;-</span> push curr, queens
+<span id="L39" class="LineNr"> 39 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> queens <span class="Special">&lt;-</span> push curr, queens
 <span id="L40" class="LineNr"> 40 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> sub-result:num <span class="Special">&lt;-</span> <a href='nqueens.mu.html#L11'>nqueens</a> n, queens
 <span id="L41" class="LineNr"> 41 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> result <span class="Special">&lt;-</span> add result, sub-result
 <span id="L42" class="LineNr"> 42 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> queens <span class="Special">&lt;-</span> <a href='064list.mu.html#L25'>rest</a> queens
@@ -114,54 +114,53 @@ if ('onhashchange' in window) {
 <span id="L53" class="LineNr"> 53 </span><span class="muRecipe">def</span> <a href='nqueens.mu.html#L53'>conflict?</a> curr:<a href='nqueens.mu.html#L6'>square</a>, queens:&amp;:<a href='064list.mu.html#L6'>list</a>:<a href='nqueens.mu.html#L6'>square</a><span class="muRecipe"> -&gt; </span>result:bool [
 <span id="L54" class="LineNr"> 54 </span>  <span class="Constant">local-scope</span>
 <span id="L55" class="LineNr"> 55 </span>  <span class="Constant">load-ingredients</span>
-<span id="L56" class="LineNr"> 56 </span>  result1:bool <span class="Special">&lt;-</span> <a href='nqueens.mu.html#L62'>conflicting-file?</a> curr, queens
-<span id="L57" class="LineNr"> 57 </span>  <span class="muControl">return-if</span> result1, result1
-<span id="L58" class="LineNr"> 58 </span>  result2:bool <span class="Special">&lt;-</span> <a href='nqueens.mu.html#L78'>conflicting-diagonal?</a> curr, queens
-<span id="L59" class="LineNr"> 59 </span>  <span class="muControl">return</span> result2
-<span id="L60" class="LineNr"> 60 </span>]
-<span id="L61" class="LineNr"> 61 </span>
-<span id="L62" class="LineNr"> 62 </span><span class="muRecipe">def</span> <a href='nqueens.mu.html#L62'>conflicting-file?</a> curr:<a href='nqueens.mu.html#L6'>square</a>, queens:&amp;:<a href='064list.mu.html#L6'>list</a>:<a href='nqueens.mu.html#L6'>square</a><span class="muRecipe"> -&gt; </span>result:bool [
-<span id="L63" class="LineNr"> 63 </span>  <span class="Constant">local-scope</span>
-<span id="L64" class="LineNr"> 64 </span>  <span class="Constant">load-ingredients</span>
-<span id="L65" class="LineNr"> 65 </span>  curr-file:num <span class="Special">&lt;-</span> get curr, <span class="Constant">file:offset</span>
-<span id="L66" class="LineNr"> 66 </span>  <span class="Delimiter">{</span>
-<span id="L67" class="LineNr"> 67 </span>  <span class="Conceal">¦</span> <span class="muControl">break-unless</span> queens
-<span id="L68" class="LineNr"> 68 </span>  <span class="Conceal">¦</span> q:<a href='nqueens.mu.html#L6'>square</a> <span class="Special">&lt;-</span> first queens
-<span id="L69" class="LineNr"> 69 </span>  <span class="Conceal">¦</span> qfile:num <span class="Special">&lt;-</span> get q, <span class="Constant">file:offset</span>
-<span id="L70" class="LineNr"> 70 </span>  <span class="Conceal">¦</span> file-match?:bool <span class="Special">&lt;-</span> equal curr-file, qfile
-<span id="L71" class="LineNr"> 71 </span>  <span class="Conceal">¦</span> <span class="muControl">return-if</span> file-match?, <span class="Constant">1/conflict-found</span>
-<span id="L72" class="LineNr"> 72 </span>  <span class="Conceal">¦</span> queens <span class="Special">&lt;-</span> <a href='064list.mu.html#L25'>rest</a> queens
-<span id="L73" class="LineNr"> 73 </span>  <span class="Conceal">¦</span> <span class="muControl">loop</span>
-<span id="L74" class="LineNr"> 74 </span>  <span class="Delimiter">}</span>
-<span id="L75" class="LineNr"> 75 </span>  <span class="muControl">return</span> <span class="Constant">0/no-conflict-found</span>
-<span id="L76" class="LineNr"> 76 </span>]
-<span id="L77" class="LineNr"> 77 </span>
-<span id="L78" class="LineNr"> 78 </span><span class="muRecipe">def</span> <a href='nqueens.mu.html#L78'>conflicting-diagonal?</a> curr:<a href='nqueens.mu.html#L6'>square</a>, queens:&amp;:<a href='064list.mu.html#L6'>list</a>:<a href='nqueens.mu.html#L6'>square</a><span class="muRecipe"> -&gt; </span>result:bool [
-<span id="L79" class="LineNr"> 79 </span>  <span class="Constant">local-scope</span>
-<span id="L80" class="LineNr"> 80 </span>  <span class="Constant">load-ingredients</span>
-<span id="L81" class="LineNr"> 81 </span>  curr-rank:num <span class="Special">&lt;-</span> get curr, <span class="Constant">rank:offset</span>
-<span id="L82" class="LineNr"> 82 </span>  curr-file:num <span class="Special">&lt;-</span> get curr, <span class="Constant">file:offset</span>
-<span id="L83" class="LineNr"> 83 </span>  <span class="Delimiter">{</span>
-<span id="L84" class="LineNr"> 84 </span>  <span class="Conceal">¦</span> <span class="muControl">break-unless</span> queens
-<span id="L85" class="LineNr"> 85 </span>  <span class="Conceal">¦</span> q:<a href='nqueens.mu.html#L6'>square</a> <span class="Special">&lt;-</span> first queens
-<span id="L86" class="LineNr"> 86 </span>  <span class="Conceal">¦</span> qrank:num <span class="Special">&lt;-</span> get q, <span class="Constant">rank:offset</span>
-<span id="L87" class="LineNr"> 87 </span>  <span class="Conceal">¦</span> qfile:num <span class="Special">&lt;-</span> get q, <span class="Constant">file:offset</span>
-<span id="L88" class="LineNr"> 88 </span>  <span class="Conceal">¦</span> rank-delta:num <span class="Special">&lt;-</span> subtract qrank, curr-rank
-<span id="L89" class="LineNr"> 89 </span>  <span class="Conceal">¦</span> file-delta:num <span class="Special">&lt;-</span> subtract qfile, curr-file
-<span id="L90" class="LineNr"> 90 </span>  <span class="Conceal">¦</span> rank-delta <span class="Special">&lt;-</span> <a href='070table.mu.html#L103'>abs</a> rank-delta
-<span id="L91" class="LineNr"> 91 </span>  <span class="Conceal">¦</span> file-delta <span class="Special">&lt;-</span> <a href='070table.mu.html#L103'>abs</a> file-delta
-<span id="L92" class="LineNr"> 92 </span>  <span class="Conceal">¦</span> diagonal-match?:bool <span class="Special">&lt;-</span> equal rank-delta, file-delta
-<span id="L93" class="LineNr"> 93 </span>  <span class="Conceal">¦</span> <span class="muControl">return-if</span> diagonal-match?, <span class="Constant">1/conflict-found</span>
-<span id="L94" class="LineNr"> 94 </span>  <span class="Conceal">¦</span> queens <span class="Special">&lt;-</span> <a href='064list.mu.html#L25'>rest</a> queens
-<span id="L95" class="LineNr"> 95 </span>  <span class="Conceal">¦</span> <span class="muControl">loop</span>
-<span id="L96" class="LineNr"> 96 </span>  <span class="Delimiter">}</span>
-<span id="L97" class="LineNr"> 97 </span>  <span class="muControl">return</span> <span class="Constant">0/no-conflict-found</span>
-<span id="L98" class="LineNr"> 98 </span>]
-<span id="L99" class="LineNr"> 99 </span>
-<span id="L100" class="LineNr">100 </span><span class="muRecipe">def</span> <a href='nqueens.mu.html#L100'>main</a> [
-<span id="L101" class="LineNr">101 </span>  <a href='nqueens.mu.html#L11'>nqueens</a><span class="Constant"> 4</span>
-<span id="L102" class="LineNr">102 </span>  $dump-trace <span class="Constant">[app]</span>
-<span id="L103" class="LineNr">103 </span>]
+<span id="L56" class="LineNr"> 56 </span>  result:bool <span class="Special">&lt;-</span> <a href='nqueens.mu.html#L61'>conflicting-file?</a> curr, queens
+<span id="L57" class="LineNr"> 57 </span>  <span class="muControl">return-if</span> result
+<span id="L58" class="LineNr"> 58 </span>  result:bool <span class="Special">&lt;-</span> <a href='nqueens.mu.html#L77'>conflicting-diagonal?</a> curr, queens
+<span id="L59" class="LineNr"> 59 </span>]
+<span id="L60" class="LineNr"> 60 </span>
+<span id="L61" class="LineNr"> 61 </span><span class="muRecipe">def</span> <a href='nqueens.mu.html#L61'>conflicting-file?</a> curr:<a href='nqueens.mu.html#L6'>square</a>, queens:&amp;:<a href='064list.mu.html#L6'>list</a>:<a href='nqueens.mu.html#L6'>square</a><span class="muRecipe"> -&gt; </span>result:bool [
+<span id="L62" class="LineNr"> 62 </span>  <span class="Constant">local-scope</span>
+<span id="L63" class="LineNr"> 63 </span>  <span class="Constant">load-ingredients</span>
+<span id="L64" class="LineNr"> 64 </span>  curr-file:num <span class="Special">&lt;-</span> get curr, <span class="Constant">file:offset</span>
+<span id="L65" class="LineNr"> 65 </span>  <span class="Delimiter">{</span>
+<span id="L66" class="LineNr"> 66 </span>  <span class="Conceal">¦</span> <span class="muControl">break-unless</span> queens
+<span id="L67" class="LineNr"> 67 </span>  <span class="Conceal">¦</span> q:<a href='nqueens.mu.html#L6'>square</a> <span class="Special">&lt;-</span> first queens
+<span id="L68" class="LineNr"> 68 </span>  <span class="Conceal">¦</span> qfile:num <span class="Special">&lt;-</span> get q, <span class="Constant">file:offset</span>
+<span id="L69" class="LineNr"> 69 </span>  <span class="Conceal">¦</span> file-match?:bool <span class="Special">&lt;-</span> equal curr-file, qfile
+<span id="L70" class="LineNr"> 70 </span>  <span class="Conceal">¦</span> <span class="muControl">return-if</span> file-match?, <span class="Constant">1/conflict-found</span>
+<span id="L71" class="LineNr"> 71 </span>  <span class="Conceal">¦</span> queens <span class="Special">&lt;-</span> <a href='064list.mu.html#L25'>rest</a> queens
+<span id="L72" class="LineNr"> 72 </span>  <span class="Conceal">¦</span> <span class="muControl">loop</span>
+<span id="L73" class="LineNr"> 73 </span>  <span class="Delimiter">}</span>
+<span id="L74" class="LineNr"> 74 </span>  <span class="muControl">return</span> <span class="Constant">0/no-conflict-found</span>
+<span id="L75" class="LineNr"> 75 </span>]
+<span id="L76" class="LineNr"> 76 </span>
+<span id="L77" class="LineNr"> 77 </span><span class="muRecipe">def</span> <a href='nqueens.mu.html#L77'>conflicting-diagonal?</a> curr:<a href='nqueens.mu.html#L6'>square</a>, queens:&amp;:<a href='064list.mu.html#L6'>list</a>:<a href='nqueens.mu.html#L6'>square</a><span class="muRecipe"> -&gt; </span>result:bool [
+<span id="L78" class="LineNr"> 78 </span>  <span class="Constant">local-scope</span>
+<span id="L79" class="LineNr"> 79 </span>  <span class="Constant">load-ingredients</span>
+<span id="L80" class="LineNr"> 80 </span>  curr-rank:num <span class="Special">&lt;-</span> get curr, <span class="Constant">rank:offset</span>
+<span id="L81" class="LineNr"> 81 </span>  curr-file:num <span class="Special">&lt;-</span> get curr, <span class="Constant">file:offset</span>
+<span id="L82" class="LineNr"> 82 </span>  <span class="Delimiter">{</span>
+<span id="L83" class="LineNr"> 83 </span>  <span class="Conceal">¦</span> <span class="muControl">break-unless</span> queens
+<span id="L84" class="LineNr"> 84 </span>  <span class="Conceal">¦</span> q:<a href='nqueens.mu.html#L6'>square</a> <span class="Special">&lt;-</span> first queens
+<span id="L85" class="LineNr"> 85 </span>  <span class="Conceal">¦</span> qrank:num <span class="Special">&lt;-</span> get q, <span class="Constant">rank:offset</span>
+<span id="L86" class="LineNr"> 86 </span>  <span class="Conceal">¦</span> qfile:num <span class="Special">&lt;-</span> get q, <span class="Constant">file:offset</span>
+<span id="L87" class="LineNr"> 87 </span>  <span class="Conceal">¦</span> rank-delta:num <span class="Special">&lt;-</span> subtract qrank, curr-rank
+<span id="L88" class="LineNr"> 88 </span>  <span class="Conceal">¦</span> file-delta:num <span class="Special">&lt;-</span> subtract qfile, curr-file
+<span id="L89" class="LineNr"> 89 </span>  <span class="Conceal">¦</span> rank-delta <span class="Special">&lt;-</span> <a href='070table.mu.html#L103'>abs</a> rank-delta
+<span id="L90" class="LineNr"> 90 </span>  <span class="Conceal">¦</span> file-delta <span class="Special">&lt;-</span> <a href='070table.mu.html#L103'>abs</a> file-delta
+<span id="L91" class="LineNr"> 91 </span>  <span class="Conceal">¦</span> diagonal-match?:bool <span class="Special">&lt;-</span> equal rank-delta, file-delta
+<span id="L92" class="LineNr"> 92 </span>  <span class="Conceal">¦</span> <span class="muControl">return-if</span> diagonal-match?, <span class="Constant">1/conflict-found</span>
+<span id="L93" class="LineNr"> 93 </span>  <span class="Conceal">¦</span> queens <span class="Special">&lt;-</span> <a href='064list.mu.html#L25'>rest</a> queens
+<span id="L94" class="LineNr"> 94 </span>  <span class="Conceal">¦</span> <span class="muControl">loop</span>
+<span id="L95" class="LineNr"> 95 </span>  <span class="Delimiter">}</span>
+<span id="L96" class="LineNr"> 96 </span>  <span class="muControl">return</span> <span class="Constant">0/no-conflict-found</span>
+<span id="L97" class="LineNr"> 97 </span>]
+<span id="L98" class="LineNr"> 98 </span>
+<span id="L99" class="LineNr"> 99 </span><span class="muRecipe">def</span> <a href='nqueens.mu.html#L99'>main</a> [
+<span id="L100" class="LineNr">100 </span>  <a href='nqueens.mu.html#L11'>nqueens</a><span class="Constant"> 4</span>
+<span id="L101" class="LineNr">101 </span>  $dump-trace <span class="Constant">[app]</span>
+<span id="L102" class="LineNr">102 </span>]
 </pre>
 </body>
 </html>
diff --git a/nqueens.mu b/nqueens.mu
index 87ce90b6..51495009 100644
--- a/nqueens.mu
+++ b/nqueens.mu
@@ -36,7 +36,7 @@ def nqueens n:num, queens:&:list:square -> result:num, queens:&:list:square [
     {
       curr-conflicts?:bool <- conflict? curr, queens
       break-if curr-conflicts?
-      queens:&:list:square <- push curr, queens
+      queens <- push curr, queens
       sub-result:num <- nqueens n, queens
       result <- add result, sub-result
       queens <- rest queens
@@ -53,10 +53,9 @@ def nqueens n:num, queens:&:list:square -> result:num, queens:&:list:square [
 def conflict? curr:square, queens:&:list:square -> result:bool [
   local-scope
   load-ingredients
-  result1:bool <- conflicting-file? curr, queens
-  return-if result1, result1
-  result2:bool <- conflicting-diagonal? curr, queens
-  return result2
+  result:bool <- conflicting-file? curr, queens
+  return-if result
+  result:bool <- conflicting-diagonal? curr, queens
 ]
 
 def conflicting-file? curr:square, queens:&:list:square -> result:bool [