• + 0 comments

    This is my rust solution

    const SQUARES: [[[i32; 3]; 3]; 8] = [
        [[8, 1, 6], [3, 5, 7], [4, 9, 2]],
        [[6, 1, 8], [7, 5, 3], [2, 9, 4]],
        [[4, 9, 2], [3, 5, 7], [8, 1, 6]],
        [[2, 9, 4], [7, 5, 3], [6, 1, 8]],
        [[8, 3, 4], [1, 5, 9], [6, 7, 2]],
        [[4, 3, 8], [9, 5, 1], [2, 7, 6]],
        [[6, 7, 2], [1, 5, 9], [8, 3, 4]],
        [[2, 7, 6], [9, 5, 1], [4, 3, 8]],
    ];
    
    fn forming_magic_square(s: &[Vec<i32>]) -> i32 {
        SQUARES
            .iter()
            .map(|square| {
                square
                    .iter()
                    .zip(s)
                    .map(|(good, input)| {
                        good.iter()
                            .zip(input)
                            .map(|(&x, &y)| (x - y).abs())
                            .sum::<i32>()
                    })
                    .sum::<i32>()
            })
            .min()
            .unwrap()
    }