I am looking for the elements that are zeroes in a square matrix (of size n
), as a list of pair. I don't really like the following code, some condition seems rendundant but my knowledge of OCaml is limited and I can't find an elegant way to refactor it:
let find_zeroes input_matrix n =
let rec aux i j n =
if(i == n) then []
else begin
if(input_matrix.(i).(j) == 0) then begin
if(j < n-1) then (i,j)::(aux i (j+1) n)
else (i,j)::(aux (i+1) 0 n)
end else begin
if(j < n-1) then (aux i (j+1) n)
else (aux (i+1) 0 n)
end
end
in aux 0 0 n
;;
Actually, the n
arugment is optional:
let find_zeroes input_matrix =
let rec aux i j n =
if(i == n) then []
else begin
if(input_matrix.(i).(j) == 0) then begin
if(j < n-1) then (i,j)::(aux i (j+1) n)
else (i,j)::(aux (i+1) 0 n)
end else begin
if(j < n-1) then (aux i (j+1) n)
else (aux (i+1) 0 n)
end
end
in aux 0 0 (Array.length input_matrix)
;;