Design and develop an algorithm to solve the 4 queens problem?

def queens_collide?(i, j, col, diag_plus, diag_minus) col.include?(j) diag_plus.include?(i + j) diag_minus.include?(i - j) end def place_queens(n, i, j, col, diag_plus, diag_minus) if i.zero? col elsif j.zero? false elsif queens_collide?(i, j, col, diag_plus, diag_minus) place_queens(n, i, j - 1, col, diag_plus, diag_minus) else queen_placed_ok = place_queens( n, i - 1, n, col + [j], diag_plus + [i + j], diag_minus + [i - j] ) if queen_placed_ok queen_placed_ok else place_queens(n, i, j - 1, col, diag_plus, diag_minus) end end end def queens(n) place_queens(n, n, n, [], [], []) end puts queens(4).inspect # >> [3, 1, 4, 2]