Anonymous user
N-queens problem: Difference between revisions
→{{header|Heron}}: Removed superfluous white space
(Added a version for Heron) |
(→{{header|Heron}}: Removed superfluous white space) |
||
Line 223:
=={{header|Heron}}==
<lang heron>module NQueens {
inherits {▼
▲ inherits
{▼
Heron.Windows.Console;
}
fields {
n : Int = 4;
sols : List = new List();
}
methods {
PosToString(row : Int, col : Int) : String {▼
▲ PosToString(row : Int, col : Int) : String
return "row " + row.ToString() + ", col " + col.ToString();
}
AddQueen(b : Board, row : Int, col : Int)
{
//b.Output();▼
if (!b.TryAddQueen(row, col))
return;
if (row < n - 1)
foreach (i in 0..n-1)
Line 255 ⟶ 245:
sols.Add(b);
}
Main() {
foreach (i in 0..n-1)
AddQueen(new Board(), 0, i);
b.Output();
WriteLine("");
}
WriteLine("Found " + sols.Count().ToString() + " solutions");
}
Line 271 ⟶ 257:
}
class Board {
▲ fields {
rows = new List();
}
methods {
Constructor() {
var col = new List();
foreach (c in 0..n-1)
Line 289 ⟶ 270:
}
}
Constructor(b : Board) {
Constructor();
foreach (r in 0..n-1)
Line 296 ⟶ 276:
SetSpaceOccupied(r, c, b.SpaceOccupied(r, c));
}
SpaceOccupied(row : Int, col : Int) : Bool {
return rows[row][col];
}
SetSpaceOccupied(row : Int, col : Int, b : Bool) {
rows[row][col] = b;
}
ValidPos(row : Int, col : Int) : Bool {
return ((row >= 0) && (row < n)) && ((col >= 0) && (col < n));
}
VectorOccupied(row : Int, col : Int, rowDir : Int, colDir : Int) : Bool {
var nextRow = row + rowDir;
var nextCol = col + colDir;
Line 318 ⟶ 294:
return VectorOccupied(nextRow, nextCol, rowDir, colDir);
}
TryAddQueen(row : Int, col : Int) : Bool {
foreach (rowDir in -1..1)
foreach (colDir in -1..1)
Line 328 ⟶ 303:
return true;
}
Output() {
foreach (row in 0..n-1) {
foreach (
if (SpaceOccupied(row, col)) {
Write("Q");
}
else {
Write(".");
}
Line 347 ⟶ 317:
}
}
}</lang>▼
▲</lang>
=={{header|J}}==
|