• + 0 comments

    JS/Javascript solution:-

    function formingMagicSquare(s) {
        // Flatten the input 2D array
        const flatInput = s.flat();
    
        // Define all possible 3x3 magic squares
        const magicSquares = [
            [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]
        ];
    
        // Calculate the minimum cost to convert to any magic square
        let minCost = Infinity;
    
        for (const magic of magicSquares) {
            let cost = 0;
            for (let i = 0; i < 9; i++) {
                cost += Math.abs(flatInput[i] - magic[i]);
            }
            minCost = Math.min(minCost, cost);
        }
    
        return minCost;
    }