Jump to content

N-queens problem: Difference between revisions

Line 2,122:
 
def solve(size: Int) = (1 until size).foldLeft(seed(size)) (expand(_, size, _))</lang>
 
=={{header|SystemVerilog}}==
Create a random board configuration, with the 8-queens as a constraint
<lang SystemVerilog>program N_queens;
 
parameter SIZE_LOG2 = 3;
parameter SIZE = 1 << SIZE_LOG2;
 
`define ABS_DIFF(a,b) (a>b?a-b:b-a)
 
class board;
rand bit [SIZE_LOG2-1:0] row[SIZE];
 
constraint rook_moves {
foreach (row[i]) foreach (row[j]) if (i < j) {
row[i] != row[j];
}
}
 
constraint diagonal_moves {
foreach (row[i]) foreach (row[j]) if (i < j) {
`ABS_DIFF(row[i], row[j]) != `ABS_DIFF(i,j);
}
}
 
function void next;
randomize;
foreach (row[i]) begin
automatic bit [SIZE-1:0] x = 1 << row[i];
$display( " %b", x );
end
$display("--");
endfunction
 
endclass
 
board b = new;
initial repeat(1) b.next;
 
endprogram
</lang>
 
=={{header|Tcl}}==
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.