I have a [][]int slice that I want to follow a path until I get to the origin again, if possible.
I've tried a recursive function, but cannot get past a path already partially visited.
Array:
arr := [][]int{
[]int{1, 0, 0, 1},
[]int{0, 2, 0, 1},
[]int{1, 0, 3, 0},
[]int{0, 0, 1, 4},
}
The diagonal is the element number and the off diagonal is the link. Below the diagonal (e.g.) will show arr[3][3] is a child of arr[2][2] and above will show arr[3][3] is a parent of arr[1][1] and arr[0][0].
Looking at element 4 (arr[3][3]) I want to search upward until I get a 1
(arr[1][3]), move to arr[1][1] and then search down and not finding a 1
again. Then the function should move to arr[0][3], search down from arr[0][0] to arr[2][0], move down from arr[2][2] to arr[3][2] and find arr[3][3] again.
Thus outputting:
[]int{4, 1, 3, 4} // the actual element on the diagonal or even just the position