<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<head>
<style>.content {
  padding: 20px;
  height: 100%;
  width: 944px;
  margin-left: auto;
  margin-right: auto;
}
.fold {
  width: 20px;
  float: left;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
.number {
  width: 45px;
  float: left;
  margin-right: 10px;
  text-align: right;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
.line {
}
.content {
  font-family: "Monospace";
  font-size: 1em;
  background: #3f3f3f;
  color: White;
  width: 944px;
  padding: 20px;
  height: 100%;
  margin-left: auto;
  margin-right: auto;
}
font.Alert {
	color: Yellow;
	font-weight: bold;
}
font.Annotation {
   color: Yellow;
	font-style: italic;
}
font.Attribute {
   color: LightPink;
}
font.BaseN {
   color: Gold;
}
font.BuiltIn {
   color: Coral;
}
font.Char {
   color: Cyan;
}
font.Comment {
   color: Beige;
	font-style: italic;
}
font.CommentVar {
   color: LightBlue;
	font-style: italic;
}
font.Constant {
   color: White;
	font-weight: bold;
}
font.ControlFlow {
   color: DeepPink;
}
font.DataType {
   color: CadetBlue;
}
font.DecVal {
   color: MediumPurple;
	font-weight: bold;
}
font.Documentation {
   color: Gold;
	font-style: italic;
}
font.Error {
   color: Red;
	font-weight: bold;
}
font.Extension {
   color: DarkGray;
	font-weight: bold;
}
font.Float {
   color: DarkViolet;
	font-weight: bold;
}
font.Function {
   color: RosyBrown;
}
font.Import {
   color: PaleVioletRed;
}
font.Information {
   color: LightGreen;
	font-style: italic;
}
font.Keyword {
   color: LightGreen;
	font-weight: bold;
}
font.Normal {
   color: White;
}
font.Operator {
   color: Magenta;
}
font.Others {
   color: GreenYellow;
}
font.Preprocessor {
   color: DarkSeaGreen ;
	font-weight: bold;
}
font.RegionMarker {
   color: Plum;
}
font.SpecialChar {
   color: Plum;
	font-weight: bold;
}
font.SpecialString {
   color: LightBlue;
}
font.String {
   color: MediumAquaMarine;
}
font.Variable {
   color: Turquoise;
	font-weight: bold;
}
font.VerbatimString {
   color: LightSkyBlue;
}
font.Warning {
   color: Brown;
	font-weight: bold;
}

</style>
<title>Kamelon output</title>
</head>
<body>

<div class="content">
<div id="1" class="line"><font class="Comment">--&nbsp;Test&nbsp;file&nbsp;for&nbsp;Kate's&nbsp;Euphoria&nbsp;syntax&nbsp;highlighting/code&nbsp;folding.</font></br></div>
<div id="2" class="line"><font class="RegionMarker">--&nbsp;BEGIN&nbsp;region&nbsp;marker&nbsp;test</font></br></div>
<div id="3" class="line"></br></div>
<div id="4" class="line"><font class="Comment">--&nbsp;code&nbsp;here</font></br></div>
<div id="5" class="line"></br></div>
<div id="6" class="line"><font class="RegionMarker">--&nbsp;END&nbsp;region&nbsp;marker&nbsp;test</font></br></div>
<div id="7" class="line"></br></div>
<div id="8" class="line"><font class="Comment">--&nbsp;The&nbsp;N&nbsp;Queens&nbsp;Problem:</font></br></div>
<div id="9" class="line"><font class="Comment">--&nbsp;Place&nbsp;N&nbsp;Queens&nbsp;on&nbsp;an&nbsp;NxN&nbsp;chess&nbsp;board</font></br></div>
<div id="10" class="line"><font class="Comment">--&nbsp;such&nbsp;that&nbsp;they&nbsp;don't&nbsp;threaten&nbsp;each&nbsp;other.</font></br></div>
<div id="11" class="line"><font class="DataType">constant</font><font class="Normal">&nbsp;N&nbsp;=&nbsp;</font><font class="DecVal">8</font><font class="Normal">&nbsp;</font><font class="Comment">--&nbsp;try&nbsp;some&nbsp;other&nbsp;sizes</font></br></div>
<div id="12" class="line"><font class="DataType">constant</font><font class="Normal">&nbsp;ROW&nbsp;=&nbsp;</font><font class="DecVal">1</font><font class="Normal">,&nbsp;COLUMN&nbsp;=&nbsp;</font><font class="DecVal">2</font></br></div>
<div id="13" class="line"><font class="DataType">constant</font><font class="Normal">&nbsp;</font><font class="Keyword">TRUE</font><font class="Normal">&nbsp;=&nbsp;</font><font class="DecVal">1</font><font class="Normal">,&nbsp;</font><font class="Keyword">FALSE</font><font class="Normal">&nbsp;=&nbsp;</font><font class="DecVal">0</font></br></div>
<div id="14" class="line"><font class="Keyword">type</font><font class="Normal">&nbsp;square(</font><font class="DataType">sequence</font><font class="Normal">&nbsp;x)</font></br></div>
<div id="15" class="line"><font class="Comment">--&nbsp;a&nbsp;square&nbsp;on&nbsp;the&nbsp;board</font></br></div>
<div id="16" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">return</font><font class="Normal">&nbsp;</font><font class="Keyword">length</font><font class="Normal">(x)&nbsp;=&nbsp;</font><font class="DecVal">2</font></br></div>
<div id="17" class="line"><font class="Keyword">end&nbsp;type</font></br></div>
<div id="18" class="line"><font class="Keyword">type</font><font class="Normal">&nbsp;row(</font><font class="DataType">integer</font><font class="Normal">&nbsp;x)</font></br></div>
<div id="19" class="line"><font class="Comment">--&nbsp;a&nbsp;row&nbsp;on&nbsp;the&nbsp;board</font></br></div>
<div id="20" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">return</font><font class="Normal">&nbsp;x&nbsp;&gt;=&nbsp;</font><font class="DecVal">1</font><font class="Normal">&nbsp;</font><font class="Keyword">and</font><font class="Normal">&nbsp;x&nbsp;&lt;=&nbsp;N</font></br></div>
<div id="21" class="line"><font class="Keyword">end&nbsp;type</font></br></div>
<div id="22" class="line"></br></div>
<div id="23" class="line"><font class="Keyword">function</font><font class="Normal">&nbsp;threat(square&nbsp;q1,&nbsp;square&nbsp;q2)</font></br></div>
<div id="24" class="line"><font class="Comment">--&nbsp;do&nbsp;two&nbsp;queens&nbsp;threaten&nbsp;each&nbsp;other?</font></br></div>
<div id="25" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">if</font><font class="Normal">&nbsp;q1[COLUMN]&nbsp;=&nbsp;q2[COLUMN]&nbsp;</font><font class="Keyword">then</font></br></div>
<div id="26" class="line"><font class="Normal">&nbsp;</font><font class="Keyword">return</font><font class="Normal">&nbsp;</font><font class="Keyword">TRUE</font></br></div>
<div id="27" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">elsif</font><font class="Normal">&nbsp;q1[ROW]&nbsp;-&nbsp;q1[COLUMN]&nbsp;=&nbsp;q2[ROW]&nbsp;-&nbsp;q2[COLUMN]&nbsp;</font><font class="Keyword">then</font></br></div>
<div id="28" class="line"><font class="Normal">&nbsp;</font><font class="Keyword">return</font><font class="Normal">&nbsp;</font><font class="Keyword">TRUE</font></br></div>
<div id="29" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">elsif</font><font class="Normal">&nbsp;q1[ROW]&nbsp;+&nbsp;q1[COLUMN]&nbsp;=&nbsp;q2[ROW]&nbsp;+&nbsp;q2[COLUMN]&nbsp;</font><font class="Keyword">then</font></br></div>
<div id="30" class="line"><font class="Normal">&nbsp;</font><font class="Keyword">return</font><font class="Normal">&nbsp;</font><font class="Keyword">TRUE</font></br></div>
<div id="31" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">elsif</font><font class="Normal">&nbsp;q1[ROW]&nbsp;=&nbsp;q2[ROW]&nbsp;</font><font class="Keyword">then</font></br></div>
<div id="32" class="line"><font class="Normal">&nbsp;</font><font class="Keyword">return</font><font class="Normal">&nbsp;</font><font class="Keyword">TRUE</font></br></div>
<div id="33" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">else</font></br></div>
<div id="34" class="line"><font class="Normal">&nbsp;</font><font class="Keyword">return</font><font class="Normal">&nbsp;</font><font class="Keyword">FALSE</font></br></div>
<div id="35" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">end&nbsp;if</font></br></div>
<div id="36" class="line"><font class="Keyword">end&nbsp;function</font></br></div>
<div id="37" class="line"></br></div>
<div id="38" class="line"><font class="Keyword">function</font><font class="Normal">&nbsp;conflict(square&nbsp;q,&nbsp;</font><font class="DataType">sequence</font><font class="Normal">&nbsp;queens)</font></br></div>
<div id="39" class="line"><font class="Comment">--&nbsp;Would&nbsp;square&nbsp;p&nbsp;cause&nbsp;a&nbsp;conflict&nbsp;with&nbsp;other&nbsp;queens&nbsp;on&nbsp;board&nbsp;so&nbsp;far?</font></br></div>
<div id="40" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">for</font><font class="Normal">&nbsp;i&nbsp;=&nbsp;</font><font class="DecVal">1</font><font class="Normal">&nbsp;</font><font class="Keyword">to</font><font class="Normal">&nbsp;</font><font class="Keyword">length</font><font class="Normal">(queens)&nbsp;</font><font class="Keyword">do</font></br></div>
<div id="41" class="line"><font class="Normal">&nbsp;</font><font class="Keyword">if</font><font class="Normal">&nbsp;threat(q,&nbsp;queens[i])&nbsp;</font><font class="Keyword">then</font></br></div>
<div id="42" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">return</font><font class="Normal">&nbsp;</font><font class="Keyword">TRUE</font></br></div>
<div id="43" class="line"><font class="Normal">&nbsp;</font><font class="Keyword">end&nbsp;if</font></br></div>
<div id="44" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">end&nbsp;for</font></br></div>
<div id="45" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">return</font><font class="Normal">&nbsp;</font><font class="Keyword">FALSE</font></br></div>
<div id="46" class="line"><font class="Keyword">end&nbsp;function</font></br></div>
<div id="47" class="line"></br></div>
<div id="48" class="line"><font class="DataType">integer</font><font class="Normal">&nbsp;soln</font></br></div>
<div id="49" class="line"><font class="Normal">soln&nbsp;=&nbsp;</font><font class="DecVal">0</font><font class="Normal">&nbsp;</font><font class="Comment">--&nbsp;solution&nbsp;number</font></br></div>
<div id="50" class="line"></br></div>
<div id="51" class="line"><font class="Keyword">procedure</font><font class="Normal">&nbsp;print_board(</font><font class="DataType">sequence</font><font class="Normal">&nbsp;queens)</font></br></div>
<div id="52" class="line"><font class="Comment">--&nbsp;print&nbsp;a&nbsp;solution,&nbsp;showing&nbsp;the&nbsp;Queens&nbsp;on&nbsp;the&nbsp;board</font></br></div>
<div id="53" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="DataType">integer</font><font class="Normal">&nbsp;k</font></br></div>
<div id="54" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">position</font><font class="Normal">(</font><font class="DecVal">1</font><font class="Normal">,&nbsp;</font><font class="DecVal">1</font><font class="Normal">)</font></br></div>
<div id="55" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">printf</font><font class="Normal">(</font><font class="DecVal">1</font><font class="Normal">,&nbsp;</font><font class="String">&quot;Solution&nbsp;#%d\n\n&nbsp;&nbsp;&quot;</font><font class="Normal">,&nbsp;soln)</font></br></div>
<div id="56" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">for</font><font class="Normal">&nbsp;c&nbsp;=&nbsp;'a'&nbsp;</font><font class="Keyword">to</font><font class="Normal">&nbsp;'a'&nbsp;+&nbsp;N&nbsp;-&nbsp;</font><font class="DecVal">1</font><font class="Normal">&nbsp;</font><font class="Keyword">do</font></br></div>
<div id="57" class="line"><font class="Normal">&nbsp;</font><font class="Keyword">printf</font><font class="Normal">(</font><font class="DecVal">1</font><font class="Normal">,&nbsp;</font><font class="String">&quot;%2s&quot;</font><font class="Normal">,&nbsp;c)</font></br></div>
<div id="58" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">end&nbsp;for</font></br></div>
<div id="59" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">puts</font><font class="Normal">(</font><font class="DecVal">1</font><font class="Normal">,&nbsp;</font><font class="String">&quot;\n&quot;</font><font class="Normal">)</font></br></div>
<div id="60" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">for</font><font class="Normal">&nbsp;r&nbsp;=&nbsp;</font><font class="DecVal">1</font><font class="Normal">&nbsp;</font><font class="Keyword">to</font><font class="Normal">&nbsp;N&nbsp;</font><font class="Keyword">do</font></br></div>
<div id="61" class="line"><font class="Normal">&nbsp;</font><font class="Keyword">printf</font><font class="Normal">(</font><font class="DecVal">1</font><font class="Normal">,&nbsp;</font><font class="String">&quot;%2d&nbsp;&quot;</font><font class="Normal">,&nbsp;r)</font></br></div>
<div id="62" class="line"><font class="Normal">&nbsp;</font><font class="Keyword">for</font><font class="Normal">&nbsp;c&nbsp;=&nbsp;</font><font class="DecVal">1</font><font class="Normal">&nbsp;</font><font class="Keyword">to</font><font class="Normal">&nbsp;N&nbsp;</font><font class="Keyword">do</font></br></div>
<div id="63" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">if</font><font class="Normal">&nbsp;</font><font class="Keyword">find</font><font class="Normal">({r,c},&nbsp;queens)&nbsp;</font><font class="Keyword">then</font></br></div>
<div id="64" class="line"><font class="Normal">&nbsp;&nbsp;</font><font class="Keyword">puts</font><font class="Normal">(</font><font class="DecVal">1</font><font class="Normal">,&nbsp;</font><font class="String">&quot;Q&nbsp;&quot;</font><font class="Normal">)</font></br></div>
<div id="65" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">else</font></br></div>
<div id="66" class="line"><font class="Normal">&nbsp;&nbsp;</font><font class="Keyword">puts</font><font class="Normal">(</font><font class="DecVal">1</font><font class="Normal">,&nbsp;</font><font class="String">&quot;.&nbsp;&quot;</font><font class="Normal">)</font></br></div>
<div id="67" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">end&nbsp;if</font></br></div>
<div id="68" class="line"><font class="Normal">&nbsp;</font><font class="Keyword">end&nbsp;for</font></br></div>
<div id="69" class="line"><font class="Normal">&nbsp;</font><font class="Keyword">puts</font><font class="Normal">(</font><font class="DecVal">1</font><font class="Normal">,&nbsp;</font><font class="String">&quot;\n&quot;</font><font class="Normal">)</font></br></div>
<div id="70" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">end&nbsp;for</font></br></div>
<div id="71" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">puts</font><font class="Normal">(</font><font class="DecVal">1</font><font class="Normal">,&nbsp;</font><font class="String">&quot;\nPress&nbsp;Enter.&nbsp;(q&nbsp;to&nbsp;quit)&nbsp;&quot;</font><font class="Normal">)</font></br></div>
<div id="72" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">while</font><font class="Normal">&nbsp;</font><font class="Keyword">TRUE</font><font class="Normal">&nbsp;</font><font class="Keyword">do</font></br></div>
<div id="73" class="line"><font class="Normal">&nbsp;k&nbsp;=&nbsp;</font><font class="Keyword">get_key</font><font class="Normal">()</font></br></div>
<div id="74" class="line"><font class="Normal">&nbsp;</font><font class="Keyword">if</font><font class="Normal">&nbsp;k&nbsp;=&nbsp;'q'&nbsp;</font><font class="Keyword">then</font></br></div>
<div id="75" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">abort</font><font class="Normal">(</font><font class="DecVal">0</font><font class="Normal">)</font></br></div>
<div id="76" class="line"><font class="Normal">&nbsp;</font><font class="Keyword">elsif</font><font class="Normal">&nbsp;k&nbsp;!=&nbsp;</font><font class="DecVal">-1</font><font class="Normal">&nbsp;</font><font class="Keyword">then</font></br></div>
<div id="77" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">exit</font></br></div>
<div id="78" class="line"><font class="Normal">&nbsp;</font><font class="Keyword">end&nbsp;if</font></br></div>
<div id="79" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">end&nbsp;while</font></br></div>
<div id="80" class="line"><font class="Keyword">end&nbsp;procedure</font></br></div>
<div id="81" class="line"></br></div>
<div id="82" class="line"><font class="Keyword">procedure</font><font class="Normal">&nbsp;place_queen(</font><font class="DataType">sequence</font><font class="Normal">&nbsp;queens)</font></br></div>
<div id="83" class="line"><font class="Comment">--&nbsp;place&nbsp;queens&nbsp;on&nbsp;a&nbsp;NxN&nbsp;chess&nbsp;board</font></br></div>
<div id="84" class="line"><font class="Comment">--&nbsp;(recursive&nbsp;procedure)</font></br></div>
<div id="85" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;row&nbsp;r&nbsp;</font><font class="Comment">--&nbsp;only&nbsp;need&nbsp;to&nbsp;consider&nbsp;one&nbsp;row&nbsp;for&nbsp;each&nbsp;queen</font></br></div>
<div id="86" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">if</font><font class="Normal">&nbsp;</font><font class="Keyword">length</font><font class="Normal">(queens)&nbsp;=&nbsp;N&nbsp;</font><font class="Keyword">then</font></br></div>
<div id="87" class="line"><font class="Normal">&nbsp;soln&nbsp;+=&nbsp;</font><font class="DecVal">1</font></br></div>
<div id="88" class="line"><font class="Normal">&nbsp;print_board(queens)</font></br></div>
<div id="89" class="line"><font class="Normal">&nbsp;</font><font class="Keyword">return</font></br></div>
<div id="90" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">end&nbsp;if</font></br></div>
<div id="91" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;=&nbsp;</font><font class="Keyword">length</font><font class="Normal">(queens)</font><font class="DecVal">+1</font></br></div>
<div id="92" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">for</font><font class="Normal">&nbsp;c&nbsp;=&nbsp;</font><font class="DecVal">1</font><font class="Normal">&nbsp;</font><font class="Keyword">to</font><font class="Normal">&nbsp;N&nbsp;</font><font class="Keyword">do</font></br></div>
<div id="93" class="line"><font class="Normal">&nbsp;</font><font class="Keyword">if</font><font class="Normal">&nbsp;</font><font class="Keyword">not</font><font class="Normal">&nbsp;conflict({r,c},&nbsp;queens)&nbsp;</font><font class="Keyword">then</font></br></div>
<div id="94" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;place_queen(</font><font class="Keyword">append</font><font class="Normal">(queens,&nbsp;{r,c}))</font></br></div>
<div id="95" class="line"><font class="Normal">&nbsp;</font><font class="Keyword">end&nbsp;if</font></br></div>
<div id="96" class="line"><font class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;</font><font class="Keyword">end&nbsp;for</font></br></div>
<div id="97" class="line"><font class="Keyword">end&nbsp;procedure</font></br></div>
</div>
</body>
</html>