<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=EightQueenProblem%2F%EB%B0%A5%EB%B2%8C%EB%A0%88</id>
	<title>EightQueenProblem/밥벌레 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=EightQueenProblem%2F%EB%B0%A5%EB%B2%8C%EB%A0%88"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=EightQueenProblem/%EB%B0%A5%EB%B2%8C%EB%A0%88&amp;action=history"/>
	<updated>2026-05-14T23:12:31Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=EightQueenProblem/%EB%B0%A5%EB%B2%8C%EB%A0%88&amp;diff=31517&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:23, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=EightQueenProblem/%EB%B0%A5%EB%B2%8C%EB%A0%88&amp;diff=31517&amp;oldid=prev"/>
		<updated>2021-02-07T05:23:11Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;일단 찍어 놓을테니까 좀 세줘- 라는 개념의 소스...다소 엽기 소스라 볼 수있을지도...-_-;;;&lt;br /&gt;
버튼1을 누르면 찾는 과정이 애니메이션(?) 됩니다..&lt;br /&gt;
여기 있는 소스들중 가장 인간적인(?) 소스라 자부함.. :) (다들 어쩌면 그렇게 아이디어들이 번뜩이시는지)&lt;br /&gt;
&lt;br /&gt;
 unit Unit1;&lt;br /&gt;
 &lt;br /&gt;
 interface&lt;br /&gt;
 &lt;br /&gt;
 uses&lt;br /&gt;
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,&lt;br /&gt;
   StdCtrls;&lt;br /&gt;
 &lt;br /&gt;
 type&lt;br /&gt;
   TForm1 = class(TForm)&lt;br /&gt;
     Button1: TButton;&lt;br /&gt;
     procedure FormPaint(Sender: TObject);&lt;br /&gt;
     procedure Button1Click(Sender: TObject);&lt;br /&gt;
   private&lt;br /&gt;
     { Private declarations }&lt;br /&gt;
   public&lt;br /&gt;
     { Public declarations }&lt;br /&gt;
   end;&lt;br /&gt;
 &lt;br /&gt;
 var&lt;br /&gt;
   Form1: TForm1;&lt;br /&gt;
 &lt;br /&gt;
 implementation&lt;br /&gt;
 &lt;br /&gt;
 {$R *.DFM}&lt;br /&gt;
 &lt;br /&gt;
 var&lt;br /&gt;
   Table: array[0..8-1, 0..8-1] of Boolean;&lt;br /&gt;
 &lt;br /&gt;
 procedure ClearTable;&lt;br /&gt;
 var&lt;br /&gt;
   i, j: Integer;&lt;br /&gt;
 begin&lt;br /&gt;
   for i := 0 to 8 -1 do&lt;br /&gt;
     for j := 0 to 8 -1 do&lt;br /&gt;
       Table[i, j] := False;&lt;br /&gt;
 end;&lt;br /&gt;
 &lt;br /&gt;
 function CountRow(row: Integer): Integer;&lt;br /&gt;
 var&lt;br /&gt;
   i: Integer;&lt;br /&gt;
 begin&lt;br /&gt;
   Result := 0;&lt;br /&gt;
   for i := 0 to 8-1 do&lt;br /&gt;
     if Table[i, row] then&lt;br /&gt;
       Inc(Result);&lt;br /&gt;
 end;&lt;br /&gt;
 &lt;br /&gt;
 procedure SetQueens(n: Integer);   // 퀸 배치하기. 이 소스의 핵심함수. n은 현재 사용안한다. 처음엔 RandomSeed로 쓰려했음..-_-;&lt;br /&gt;
 var&lt;br /&gt;
   i, row: Integer;&lt;br /&gt;
 begin&lt;br /&gt;
   ClearTable;&lt;br /&gt;
   for i := 0 to 8-1 do    //  가로 세로만 조건에 일치하도록 랜덤하게 배치함.&lt;br /&gt;
     while True do&lt;br /&gt;
     begin&lt;br /&gt;
       row := random(8);&lt;br /&gt;
       Table[i, row] := True;&lt;br /&gt;
       if CountRow(row) &amp;amp;gt; 1 then&lt;br /&gt;
         Table[i, row] := False&lt;br /&gt;
       else&lt;br /&gt;
         Break;&lt;br /&gt;
     end;&lt;br /&gt;
 end;&lt;br /&gt;
 &lt;br /&gt;
 function CheckQueens: Boolean; // 제대로 배치되었는지 검사하는 함수.&lt;br /&gt;
   function CountColumn(column: Integer): Integer;&lt;br /&gt;
   var&lt;br /&gt;
     i: Integer;&lt;br /&gt;
   begin&lt;br /&gt;
     Result := 0;&lt;br /&gt;
     for i := 0 to 8-1 do&lt;br /&gt;
       if Table[column, i] then&lt;br /&gt;
         Inc(Result);&lt;br /&gt;
   end;&lt;br /&gt;
 &lt;br /&gt;
   function CountSlash(column: Integer): Integer;&lt;br /&gt;
   var&lt;br /&gt;
     i: Integer;&lt;br /&gt;
     x, y: Integer;&lt;br /&gt;
   begin&lt;br /&gt;
     Result := 0;&lt;br /&gt;
     for i := 0 to 8*2-1 do&lt;br /&gt;
     begin&lt;br /&gt;
       x := column - i;&lt;br /&gt;
       y := i;&lt;br /&gt;
       if (x &amp;amp;gt; 7) or (y &amp;amp;gt; 7) or (x &amp;amp;lt; 0) or (y &amp;amp;lt; 0) then&lt;br /&gt;
         Continue;&lt;br /&gt;
       if Table[x, y] then&lt;br /&gt;
         Inc(Result);&lt;br /&gt;
     end;&lt;br /&gt;
   end;&lt;br /&gt;
 &lt;br /&gt;
   function CountBackSlash(column: Integer): Integer;&lt;br /&gt;
   var&lt;br /&gt;
     i: Integer;&lt;br /&gt;
     x, y: Integer;&lt;br /&gt;
   begin&lt;br /&gt;
     Result := 0;&lt;br /&gt;
     for i := 0 to 8*2-1 do&lt;br /&gt;
     begin&lt;br /&gt;
       x := column + i;&lt;br /&gt;
       y := i;&lt;br /&gt;
       if (x &amp;amp;gt; 7) or (y &amp;amp;gt; 7) or (x &amp;amp;lt; 0) or (y &amp;amp;lt; 0) then&lt;br /&gt;
         Continue;&lt;br /&gt;
       if Table[x, y] then&lt;br /&gt;
         Inc(Result);&lt;br /&gt;
     end;&lt;br /&gt;
   end;&lt;br /&gt;
 &lt;br /&gt;
 var&lt;br /&gt;
   i: Integer;&lt;br /&gt;
 begin&lt;br /&gt;
   Result := False;&lt;br /&gt;
   for i := 0 to 8-1 do&lt;br /&gt;
   begin&lt;br /&gt;
     if CountRow(i) &amp;amp;gt; 1 then&lt;br /&gt;
       Exit;&lt;br /&gt;
     if CountColumn(i) &amp;amp;gt; 1 then&lt;br /&gt;
       Exit;&lt;br /&gt;
   end;&lt;br /&gt;
 &lt;br /&gt;
   for i := 0 to 16-1 do&lt;br /&gt;
     if CountSlash(i) &amp;amp;gt; 1 then&lt;br /&gt;
       Exit;&lt;br /&gt;
   for i := -8 to 8-1 do&lt;br /&gt;
     if CountBackSlash(i) &amp;amp;gt; 1 then&lt;br /&gt;
       Exit;&lt;br /&gt;
   Result := True;&lt;br /&gt;
 end;&lt;br /&gt;
 &lt;br /&gt;
 procedure DrawQueens;&lt;br /&gt;
 var&lt;br /&gt;
   i, j: Integer;&lt;br /&gt;
   x, y: Integer;&lt;br /&gt;
   r: TRect;&lt;br /&gt;
 begin&lt;br /&gt;
   for i := 0 to 8 -1 do&lt;br /&gt;
     for j := 0 to 8 -1 do&lt;br /&gt;
     begin&lt;br /&gt;
       x := i * 32;&lt;br /&gt;
       y := j * 32;&lt;br /&gt;
       r := Bounds(x, y, 32, 32);&lt;br /&gt;
       if Table[i, j] then&lt;br /&gt;
         Form1.Canvas.Brush.Color := clRed&lt;br /&gt;
       else&lt;br /&gt;
         Form1.Canvas.Brush.Color := clWhite;&lt;br /&gt;
       Form1.Canvas.Rectangle(r);&lt;br /&gt;
     end;&lt;br /&gt;
 end;&lt;br /&gt;
 &lt;br /&gt;
 procedure TForm1.FormPaint(Sender: TObject);&lt;br /&gt;
 begin&lt;br /&gt;
   DrawQueens;&lt;br /&gt;
 end;&lt;br /&gt;
 &lt;br /&gt;
 procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;
 var&lt;br /&gt;
   n: Integer;&lt;br /&gt;
 begin&lt;br /&gt;
   Randomize;&lt;br /&gt;
   n := 0;&lt;br /&gt;
   repeat&lt;br /&gt;
     SetQueens(n);&lt;br /&gt;
     Inc(n);&lt;br /&gt;
     DrawQueens;&lt;br /&gt;
   until CheckQueens;&lt;br /&gt;
 end;&lt;br /&gt;
 &lt;br /&gt;
 end.&lt;br /&gt;
&lt;br /&gt;
모든 퀸 찾기. 이런건 반칙이다- 하셔도 별 할말이 없음 -_-;;;&lt;br /&gt;
30분동안 뭔가 다른 방법을 찾아 볼라고 고민을 했습니다만 포기.......-_-;;&lt;br /&gt;
&lt;br /&gt;
 procedure FindAllQueens;&lt;br /&gt;
 var&lt;br /&gt;
   n: Integer;&lt;br /&gt;
   i0, i1, i2, i3, i4, i5, i6, i7: Integer;&lt;br /&gt;
 begin&lt;br /&gt;
   n := 0;&lt;br /&gt;
   for i0 := 0 to 8-1 do&lt;br /&gt;
   for i1 := 0 to 8-1 do&lt;br /&gt;
   for i2 := 0 to 8-1 do&lt;br /&gt;
   for i3 := 0 to 8-1 do&lt;br /&gt;
   for i4 := 0 to 8-1 do&lt;br /&gt;
   for i5 := 0 to 8-1 do&lt;br /&gt;
   for i6 := 0 to 8-1 do&lt;br /&gt;
   for i7 := 0 to 8-1 do&lt;br /&gt;
   begin&lt;br /&gt;
     ClearTable;&lt;br /&gt;
     Table[0, i0] := True;&lt;br /&gt;
     Table[1, i1] := True;&lt;br /&gt;
     Table[2, i2] := True;&lt;br /&gt;
     Table[3, i3] := True;&lt;br /&gt;
     Table[4, i4] := True;&lt;br /&gt;
     Table[5, i5] := True;&lt;br /&gt;
     Table[6, i6] := True;&lt;br /&gt;
     Table[7, i7] := True;&lt;br /&gt;
     if CheckQueens then&lt;br /&gt;
     begin&lt;br /&gt;
       DrawQueens;&lt;br /&gt;
       Inc(n);&lt;br /&gt;
       form1.Caption := inttostr(n);&lt;br /&gt;
     end;&lt;br /&gt;
   end;&lt;br /&gt;
 end;&lt;br /&gt;
 &lt;br /&gt;
 procedure TForm1.Button2Click(Sender: TObject);&lt;br /&gt;
 begin&lt;br /&gt;
   FindAllQueens;&lt;br /&gt;
 end;&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>