open Float let input = 265149 let coordinates n = let k = int_of_float (ceil (((sqrt (float_of_int n)) -. 1.) /. 2.)) in let t = 1 + (2 * k) in let m = int_of_float ((float_of_int t) ** 2.) in let t = t - 1 in if n >= m - t then (k - (m - n), -k) else if n >= m - (2 * t) then (-k, -k + (m - n)) else if n >= m - (3 * t) then (-k + (m - n), k) else (k, k - (m - n - t)) let () = let (x, y) = coordinates input in Printf.printf "%d\n" (Int.abs x + Int.abs y) (* Part 2 is listed on OEIS *)