<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
  <channel>
    <title>MaplePrimes - answers and comments on Question, queen problem by backtracking</title>
    <link>http://www.mapleprimes.com/questions/35573-Queen-Problem-By-Backtracking</link>
    <language>en-us</language>
    <copyright>2026 Maplesoft, A Division of Waterloo Maple Inc.</copyright>
    <generator>Maplesoft Document System</generator>
    <lastBuildDate>Fri, 12 Jun 2026 08:32:12 GMT</lastBuildDate>
    <pubDate>Fri, 12 Jun 2026 08:32:12 GMT</pubDate>
    <itunes:subtitle />
    <itunes:summary />
    <description>The latest answers and comments added to the Question, queen problem by backtracking</description>
    <image>
      <url>http://www.mapleprimes.com/images/mapleprimeswhite.jpg</url>
      <title>MaplePrimes - answers and comments on Question, queen problem by backtracking</title>
      <link>http://www.mapleprimes.com/questions/35573-Queen-Problem-By-Backtracking</link>
    </image>
    <item>
      <title>queens</title>
      <link>http://www.mapleprimes.com/questions/35573-Queen-Problem-By-Backtracking?ref=Feed:MaplePrimes:queen problem by backtracking:Comments#answer44333</link>
      <itunes:summary>&lt;p&gt;There are several problems with this&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;L is reassigned to an empty array in &lt;b&gt;place&lt;/b&gt;&lt;/li&gt;
    &lt;li&gt;L is local to &lt;b&gt;queens&lt;/b&gt;, so even if the above were corrected there is an issue.&lt;/li&gt;
    &lt;li&gt;The inner while loop in &lt;b&gt;queens&lt;/b&gt; should negate the result of place.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Here is a modified version.&amp;nbsp; I made L a parameter to &lt;b&gt;place&lt;/b&gt;.&lt;/p&gt;
&lt;pre&gt;
place := proc(k,L)
local i;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for i to k-1 do
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if L(i)=L(k) # two in the same column
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; or abs(L(i)-L(k)) = abs(i-k) # in the same diagonal
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi:
&amp;nbsp;&amp;nbsp;&amp;nbsp; end do;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;
end proc:

queens := proc(n)
local k,L;
&amp;nbsp;&amp;nbsp;&amp;nbsp; L := Array(1..n);
&amp;nbsp;&amp;nbsp;&amp;nbsp; k := 1; # k is the current row
&amp;nbsp;&amp;nbsp;&amp;nbsp; while k &amp;gt; 0 do
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; L(k) := L(k)+1; # move to the next column
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while L(k) &amp;lt;= n and not place(k,L) do # can this queen be placed
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; L(k) := L(k) + 1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end do;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if L(k)&amp;lt;=n # a position is found
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then if k = n # the solution has been found
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then print(L);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; k := k+1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; L(k) := 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; k := k-1; # backtrack
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end if;
&amp;nbsp;&amp;nbsp;&amp;nbsp; end do;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return NULL;
end proc:
&lt;/pre&gt;</itunes:summary>
      <description>&lt;p&gt;There are several problems with this&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;L is reassigned to an empty array in &lt;b&gt;place&lt;/b&gt;&lt;/li&gt;
    &lt;li&gt;L is local to &lt;b&gt;queens&lt;/b&gt;, so even if the above were corrected there is an issue.&lt;/li&gt;
    &lt;li&gt;The inner while loop in &lt;b&gt;queens&lt;/b&gt; should negate the result of place.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Here is a modified version.&amp;nbsp; I made L a parameter to &lt;b&gt;place&lt;/b&gt;.&lt;/p&gt;
&lt;pre&gt;
place := proc(k,L)
local i;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for i to k-1 do
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if L(i)=L(k) # two in the same column
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; or abs(L(i)-L(k)) = abs(i-k) # in the same diagonal
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi:
&amp;nbsp;&amp;nbsp;&amp;nbsp; end do;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;
end proc:

queens := proc(n)
local k,L;
&amp;nbsp;&amp;nbsp;&amp;nbsp; L := Array(1..n);
&amp;nbsp;&amp;nbsp;&amp;nbsp; k := 1; # k is the current row
&amp;nbsp;&amp;nbsp;&amp;nbsp; while k &amp;gt; 0 do
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; L(k) := L(k)+1; # move to the next column
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while L(k) &amp;lt;= n and not place(k,L) do # can this queen be placed
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; L(k) := L(k) + 1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end do;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if L(k)&amp;lt;=n # a position is found
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then if k = n # the solution has been found
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then print(L);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; k := k+1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; L(k) := 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; k := k-1; # backtrack
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end if;
&amp;nbsp;&amp;nbsp;&amp;nbsp; end do;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return NULL;
end proc:
&lt;/pre&gt;</description>
      <guid>44333</guid>
      <pubDate>Sun, 07 Mar 2010 06:31:36 Z</pubDate>
      <itunes:author>Joe
 Riel
</itunes:author>
      <author>Joe
 Riel
</author>
    </item>
  </channel>
</rss>