def magic_squares_for_3 [ [ [8, 1, 6], [3, 5, 7], [4, 9, 2], ], [ [6, 1, 8], [7, 5, 3], [2, 9, 4], ], [ [8, 3, 4], [1, 5, 9], [6, 7, 2], ], [ [6, 7, 2], [1, 5, 9], [8, 3, 4], ], [ [4, 9, 2], [3, 5, 7], [8, 1, 6], ], [ [2, 9, 4], [7, 5, 3], [6, 1, 8] ], [ [4, 3, 8], [9, 5, 1], [2, 7, 6], ], [ [2, 7, 6], [9, 5, 1], [4, 3, 8], ], ] end def magic_square(matrix) magic_squares_for_3.map do |m| (0..2).flat_map do |i| (0..2).map do |j| (matrix[i][j] - m[i][j]).abs end end.inject(&:+) end.min end matrix = 3.times.map do gets.strip.split(' ').map(&:to_i) end p magic_square(matrix)