I translated Java code into R. I need to check if all lines are translated correctly.
Some part most probably is correct because I ran it and R says:
Error: C stack usage 7970192 is too close to the limit.
I am not sure which part went wrong because when I compile it, it doesn't show any error for all the lines except when I try to run it
Original Java code:
public static void printQueens(int[] q) {
int n = q.length;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (q[i] == j) StdOut.print("Q ");
else StdOut.print("* ");
}
StdOut.println();
}
StdOut.println();
}
/***************************************************************************/
public static void enumerate(int n) {
int[] a = new int[n];
enumerate(a, 0);
}
public static void enumerate(int[] q, int k) {
int n = q.length;
if (k == n) printQueens(q);
else {
for (int i = 0; i < n; i++) {
q[k] = i;
if (isConsistent(q, k)) enumerate(q, k+1);
}
}
}
public static void main(String[] args) {
int n = Integer.parseInt(args[0]);
enumerate(n);
}
}
R code to be corrected
# Prints n-by-n placement of queens from permutation q
printQueens <- function(q) {
n = q.length
for(i in seq_len(n)) {
for(j in seq_len(n)) {
if(q[i] == j) print("Q ")
else{ print("* ")}
}
sep="/n"
}
sep="/n"
}
#Try all permutations using backtracking
enumerate <- function(q, k) {
n = q.length;
if(k == n) print(Queens(q))
else {
for(i in seq_len(n)) {
q[k] = i
if (isConsistent(q, k)) enumerate(q, k+1)
}
}
}
enumerate <- function(n) {
a = n
enumerate(a);
}
main <- function(args) {
n =args[0];
enumerate(n);
}