Warning, file /frameworks/syntax-highlighting/autotests/html/highlight.exu.dark.html was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 <!DOCTYPE html>
0002 <html><head>
0003 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
0004 <title>highlight.exu</title>
0005 <meta name="generator" content="KF5::SyntaxHighlighting - Definition (Euphoria) - Theme (Breeze Dark)"/>
0006 </head><body style="background-color:#232629;color:#cfcfc2"><pre>
0007 <span style="color:#7a7c7d;">-- Test file for Kate's Euphoria syntax highlighting/code folding.</span>
0008 <span style="color:#2980b9;background-color:#153042;">-- BEGIN region marker test</span>
0009 
0010 <span style="color:#7a7c7d;">-- code here</span>
0011 
0012 <span style="color:#2980b9;background-color:#153042;">-- END region marker test</span>
0013 
0014 <span style="color:#7a7c7d;">-- The N Queens Problem:</span>
0015 <span style="color:#7a7c7d;">-- Place N Queens on an NxN chess board</span>
0016 <span style="color:#7a7c7d;">-- such that they don't threaten each other.</span>
0017 <span style="color:#2980b9;">constant</span> N = <span style="color:#f67400;">8</span> <span style="color:#7a7c7d;">-- try some other sizes</span>
0018 <span style="color:#2980b9;">constant</span> ROW = <span style="color:#f67400;">1</span>, COLUMN = <span style="color:#f67400;">2</span>
0019 <span style="color:#2980b9;">constant</span> <span style="font-weight:bold;">TRUE</span> = <span style="color:#f67400;">1</span>, <span style="font-weight:bold;">FALSE</span> = <span style="color:#f67400;">0</span>
0020 <span style="font-weight:bold;">type</span> square(<span style="color:#2980b9;">sequence</span> x)
0021 <span style="color:#7a7c7d;">-- a square on the board</span>
0022     <span style="font-weight:bold;">return</span> <span style="font-weight:bold;">length</span>(x) = <span style="color:#f67400;">2</span>
0023 <span style="font-weight:bold;">end type</span>
0024 <span style="font-weight:bold;">type</span> row(<span style="color:#2980b9;">integer</span> x)
0025 <span style="color:#7a7c7d;">-- a row on the board</span>
0026     <span style="font-weight:bold;">return</span> x &gt;= <span style="color:#f67400;">1</span> <span style="font-weight:bold;">and</span> x &lt;= N
0027 <span style="font-weight:bold;">end type</span>
0028 
0029 <span style="font-weight:bold;">function</span> threat(square q1, square q2)
0030 <span style="color:#7a7c7d;">-- do two queens threaten each other?</span>
0031     <span style="font-weight:bold;">if</span> q1[COLUMN] = q2[COLUMN] <span style="font-weight:bold;">then</span>
0032  <span style="font-weight:bold;">return</span> <span style="font-weight:bold;">TRUE</span>
0033     <span style="font-weight:bold;">elsif</span> q1[ROW] - q1[COLUMN] = q2[ROW] - q2[COLUMN] <span style="font-weight:bold;">then</span>
0034  <span style="font-weight:bold;">return</span> <span style="font-weight:bold;">TRUE</span>
0035     <span style="font-weight:bold;">elsif</span> q1[ROW] + q1[COLUMN] = q2[ROW] + q2[COLUMN] <span style="font-weight:bold;">then</span>
0036  <span style="font-weight:bold;">return</span> <span style="font-weight:bold;">TRUE</span>
0037     <span style="font-weight:bold;">elsif</span> q1[ROW] = q2[ROW] <span style="font-weight:bold;">then</span>
0038  <span style="font-weight:bold;">return</span> <span style="font-weight:bold;">TRUE</span>
0039     <span style="font-weight:bold;">else</span>
0040  <span style="font-weight:bold;">return</span> <span style="font-weight:bold;">FALSE</span>
0041     <span style="font-weight:bold;">end if</span>
0042 <span style="font-weight:bold;">end function</span>
0043 
0044 <span style="font-weight:bold;">function</span> conflict(square q, <span style="color:#2980b9;">sequence</span> queens)
0045 <span style="color:#7a7c7d;">-- Would square p cause a conflict with other queens on board so far?</span>
0046     <span style="font-weight:bold;">for</span> i = <span style="color:#f67400;">1</span> <span style="font-weight:bold;">to</span> <span style="font-weight:bold;">length</span>(queens) <span style="font-weight:bold;">do</span>
0047  <span style="font-weight:bold;">if</span> threat(q, queens[i]) <span style="font-weight:bold;">then</span>
0048      <span style="font-weight:bold;">return</span> <span style="font-weight:bold;">TRUE</span>
0049  <span style="font-weight:bold;">end if</span>
0050     <span style="font-weight:bold;">end for</span>
0051     <span style="font-weight:bold;">return</span> <span style="font-weight:bold;">FALSE</span>
0052 <span style="font-weight:bold;">end function</span>
0053 
0054 <span style="color:#2980b9;">integer</span> soln
0055 soln = <span style="color:#f67400;">0</span> <span style="color:#7a7c7d;">-- solution number</span>
0056 
0057 <span style="font-weight:bold;">procedure</span> print_board(<span style="color:#2980b9;">sequence</span> queens)
0058 <span style="color:#7a7c7d;">-- print a solution, showing the Queens on the board</span>
0059     <span style="color:#2980b9;">integer</span> k
0060     <span style="font-weight:bold;">position</span>(<span style="color:#f67400;">1</span>, <span style="color:#f67400;">1</span>)
0061     <span style="font-weight:bold;">printf</span>(<span style="color:#f67400;">1</span>, <span style="color:#f44f4f;">&quot;Solution #%d\n\n  &quot;</span>, soln)
0062     <span style="font-weight:bold;">for</span> c = 'a' <span style="font-weight:bold;">to</span> 'a' + N - <span style="color:#f67400;">1</span> <span style="font-weight:bold;">do</span>
0063  <span style="font-weight:bold;">printf</span>(<span style="color:#f67400;">1</span>, <span style="color:#f44f4f;">&quot;%2s&quot;</span>, c)
0064     <span style="font-weight:bold;">end for</span>
0065     <span style="font-weight:bold;">puts</span>(<span style="color:#f67400;">1</span>, <span style="color:#f44f4f;">&quot;\n&quot;</span>)
0066     <span style="font-weight:bold;">for</span> r = <span style="color:#f67400;">1</span> <span style="font-weight:bold;">to</span> N <span style="font-weight:bold;">do</span>
0067  <span style="font-weight:bold;">printf</span>(<span style="color:#f67400;">1</span>, <span style="color:#f44f4f;">&quot;%2d &quot;</span>, r)
0068  <span style="font-weight:bold;">for</span> c = <span style="color:#f67400;">1</span> <span style="font-weight:bold;">to</span> N <span style="font-weight:bold;">do</span>
0069      <span style="font-weight:bold;">if</span> <span style="font-weight:bold;">find</span>({r,c}, queens) <span style="font-weight:bold;">then</span>
0070   <span style="font-weight:bold;">puts</span>(<span style="color:#f67400;">1</span>, <span style="color:#f44f4f;">&quot;Q &quot;</span>)
0071      <span style="font-weight:bold;">else</span>
0072   <span style="font-weight:bold;">puts</span>(<span style="color:#f67400;">1</span>, <span style="color:#f44f4f;">&quot;. &quot;</span>)
0073      <span style="font-weight:bold;">end if</span>
0074  <span style="font-weight:bold;">end for</span>
0075  <span style="font-weight:bold;">puts</span>(<span style="color:#f67400;">1</span>, <span style="color:#f44f4f;">&quot;\n&quot;</span>)
0076     <span style="font-weight:bold;">end for</span>
0077     <span style="font-weight:bold;">puts</span>(<span style="color:#f67400;">1</span>, <span style="color:#f44f4f;">&quot;\nPress Enter. (q to quit) &quot;</span>)
0078     <span style="font-weight:bold;">while</span> <span style="font-weight:bold;">TRUE</span> <span style="font-weight:bold;">do</span>
0079  k = <span style="font-weight:bold;">get_key</span>()
0080  <span style="font-weight:bold;">if</span> k = 'q' <span style="font-weight:bold;">then</span>
0081      <span style="font-weight:bold;">abort</span>(<span style="color:#f67400;">0</span>)
0082  <span style="font-weight:bold;">elsif</span> k != -<span style="color:#f67400;">1</span> <span style="font-weight:bold;">then</span>
0083      <span style="font-weight:bold;">exit</span>
0084  <span style="font-weight:bold;">end if</span>
0085     <span style="font-weight:bold;">end while</span>
0086 <span style="font-weight:bold;">end procedure</span>
0087 
0088 <span style="font-weight:bold;">procedure</span> place_queen(<span style="color:#2980b9;">sequence</span> queens)
0089 <span style="color:#7a7c7d;">-- place queens on a NxN chess board</span>
0090 <span style="color:#7a7c7d;">-- (recursive procedure)</span>
0091     row r <span style="color:#7a7c7d;">-- only need to consider one row for each queen</span>
0092     <span style="font-weight:bold;">if</span> <span style="font-weight:bold;">length</span>(queens) = N <span style="font-weight:bold;">then</span>
0093  soln += <span style="color:#f67400;">1</span>
0094  print_board(queens)
0095  <span style="font-weight:bold;">return</span>
0096     <span style="font-weight:bold;">end if</span>
0097     r = <span style="font-weight:bold;">length</span>(queens)+<span style="color:#f67400;">1</span>
0098     <span style="font-weight:bold;">for</span> c = <span style="color:#f67400;">1</span> <span style="font-weight:bold;">to</span> N <span style="font-weight:bold;">do</span>
0099  <span style="font-weight:bold;">if</span> <span style="font-weight:bold;">not</span> conflict({r,c}, queens) <span style="font-weight:bold;">then</span>
0100      place_queen(<span style="font-weight:bold;">append</span>(queens, {r,c}))
0101  <span style="font-weight:bold;">end if</span>
0102     <span style="font-weight:bold;">end for</span>
0103 <span style="font-weight:bold;">end procedure</span>
0104 </pre></body></html>