yo-compiler/test/nqueen/nqueen.yo
2026-01-13 10:32:47 +09:00

36 lines
540 B
Plaintext

package nqueen
export fn solve(n int) int {
arr := [16]int{};
return nqueen(0, 0, arr[:n]);
};
fn nqueen(r,ans int, arr []int) int {
if r == len(arr) {
return ans + 1;
};
for c:=0; c < len(arr); c=c+1 {
arr[r] = c;
if canput(r, arr) {
ans = nqueen(r+1, ans, arr);
};
};
return ans;
};
fn canput(r int, arr []int) bool {
for i:=0; i < r; i=i+1 {
if arr[r] == arr[i] || abs(arr[r] - arr[i]) == abs(r - i) {
return false;
};
};
return true;
};
fn abs(x int) int {
if x < 0 {
return x * -1;
};
return x;
};