In: Computer Science
can you please convert this python code into java?
Python code is as shown below:
# recursive function
def row_puzzle_rec(row, pos, visited):
# if the element at the current position is 0 we have
reached our goal
if row[pos] == 0:
possible = True
else:
# make a copy of the visited
array
visited = visited[:]
# if the element at the current
position has been already visited then it's a loop.
# as then its not possible to reach
the last element, set possible to False
if visited[pos]:
possible =
False
else:
# set visitied
for the element as True
visited[pos] =
True
possible =
False
# if its
possible to move left then recurse in the left direction
if pos -
row[pos] > 0 and row_puzzle_rec(row, pos - row[pos],
visited):
# return immediately if the goal is
reached
return True
# if its
possible to move right then recurse in the right direction
if pos +
row[pos] < len(row) and row_puzzle_rec(row, pos + row[pos],
visited):
# return immediately if the goal is
reached.
return True
return possible
def row_puzzle(row):
# visited array will be used to check if a particular
element was visited
# initialize the array to False
visited = [False for item in range(len(row))]
# second argument is the token position initialized to
0
return row_puzzle_rec(row, 0, visited)
possible = row_puzzle([2, 4, 5, 3, 1, 3, 1, 4, 0])
print(possible)
possible = row_puzzle([1, 3, 2, 1, 3, 4, 0])
print(possible)
Java Code:
public class Main
{
public static boolean row_puzzle_rec(int row[], int pos, boolean visited[]) {
boolean possible;
// if the element at the current position is 0 we have reached our goal
if(row[pos]==0) {
possible = true;
}
else {
// make a copy of the visited array
visited = visited;
// if the element at the current position has been already visited then it's a loop.
// as then its not possible to reach the last element, set possible to False
if(visited[pos]) {
possible = false;
}
else {
// set visitied for the element as True
visited[pos] = true;
possible = false;
// if its possible to move left then recurse in the left direction
if(pos - row[pos] > 0 && row_puzzle_rec(row, pos - row[pos], visited)) {
// return immediately if the goal is reached
return true;
}
// if its possible to move right then recurse in the right direction
if(pos + row[pos] < row.length && row_puzzle_rec(row, pos + row[pos], visited)) {
// return immediately if the goal is reached.
return true;
}
}
}
return possible;
}
public static boolean row_puzzle(int row[]) {
boolean visited[] = new boolean[row.length];
// visited array will be used to check if a particular element was visited
// initialize the array to False
for(int i = 0; i < row.length; i++)
visited[i] = false;
// second argument is the token position initialized to 0
return row_puzzle_rec(row, 0, visited);
}
public static void main(String[] args) {
boolean possible;
possible = row_puzzle(new int[]{2, 4, 5, 3, 1, 3, 1, 4, 0});
System.out.println(possible);
possible = row_puzzle(new int[]{1, 3, 2, 1, 3, 4, 0});
System.out.println(possible);
}
}
Output:
Please name the java file as Main.java