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();
//WriteLine();
//ReadKey();
 
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.Outputforeach (b in sols); {
 
foreach (b in sols)
{
b.Output();
WriteLine("");
}
 
WriteLine("Found " + sols.Count().ToString() + " solutions");
}
Line 271 ⟶ 257:
}
 
class Board {
fields {
{
fields
{
rows = new List();
}
methods {
Constructor() {
Constructor foreach (r in 0..n-1) {
{
foreach (r in 0..n-1)
{
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 (rowcol in 0..n-1) {
if (SpaceOccupied(row, col)) {
foreach (col in 0..n-1)
{
if (SpaceOccupied(row, col))
{
Write("Q");
}
else {
{
Write(".");
}
Line 347 ⟶ 317:
}
}
}</lang>
}
</lang>
 
 
=={{header|J}}==
Anonymous user