Home »  Sudoku In Excel

 Sudoku In Excel

Solving  Sudoku In Excel challenge by Power Query, Power BI, Excel, Python and R

Solve the left side Sudoku table and replace X by a number based on the below rule: Use the numbers 1 through 6 instead of X. Each number must appear exactly once in each row, each column, and in each block.

📌 Challenge Details and Links
Challenge Number: 19
Challenge Difficulty: ⭐⭐⭐⭐⭐
📥Download Sample File
📥Link to the solutions on LinkedIn

Solving the challenge of  Sudoku In Excel with Power Query

Power Query solution 1 for  Sudoku In Excel, proposed by Ramiro Ayala Chávez:

let
S = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
c = Table.ToColumns(S),
r = Table.ToRows(S),
a = List.Combine(r),
b = List.Zip({a,List.Positions(a)}),
d = List.Select(b, each _{0}="X"),
e = List.Transform(d, each _{1}),
f = List.Generate(()=>[i=0,j=0], each [i]<=5, each if [j]=5 then [i=[i]+1,j=0] else [i=[i],j=[j]+1], each r{[i]}&c{[j]}),
g = List.Generate(()=>[i=0], each [i]<List.Count(e), each [i=[i]+1], each List.Combine({f{e{[i]}}})),
h = List.Transform(g, each List.Difference({1..6,"X"},_)),
i = List.Transform(h, each {_{0}}),
j = List.Select(b, each _{0}<>"X"),
k = List.Transform({0..List.Count(d)-1}, each d{_}&i{_}),
l = List.Transform(k, each List.Reverse(List.Skip(_))),
m = Table.FromRows(l&j,{"C","D"}),
n = Table.Sort(m,{{"D",0}})[C],
Sol = Table.FromRows(List.Split(n,6))
in
Sol

Solving the challenge of  Sudoku In Excel with Excel

Excel solution 1 for  Sudoku In Excel, proposed by Bo Rydobon 🇹🇭:
=LET(r,
    SEQUENCE(
        6
    ),
    c,
    TOROW(
        r
    ),
    b,
    ODD(
        r-1
    )+INT((c-1)/3),
    REDUCE(
        B3:G8,
        SEQUENCE(
            1
        ),
        LAMBDA(
            a,
            w,
            
            MAP(
                a,
                r&c,
                b,
                LAMBDA(
                    n,
                    p,
                    q,
                    IF(
                        n>9,
                        --CONCAT(
                            REPT(
                                r,
                                ISNA(
                                    XMATCH(
                                        r,
                                        TOCOL(
                                            VSTACK(
                                                INDEX(
                                                    a,
                                                    LEFT(
                                                        p
                                                    ),
                                                    
                                                ),
                                                INDEX(
                                                    a,
                                                    ,
                                                    RIGHT(
                                                        p
                                                    )
                                                ),
                                                IFS(
                                                    b=q,
                                                    a
                                                )
                                            ),
                                            3
                                        )
                                    )
                                )
                            )
                        ),
                        n
                    )
                )
            )
        )
    ))
Excel solution 2 for  Sudoku In Excel, proposed by Bo Rydobon 🇹🇭:
=LET(r,
    SEQUENCE(
        6
    ),
    c,
    TOROW(
        r
    ),
    REDUCE(B3:G8,
    SEQUENCE(
        9
    ),
    LAMBDA(a,
    w,MAP(a,
    r&c,
    LAMBDA(n,
    p,
    IF((n="X")+(LEN(
        n
    )>1),
    --CONCAT(
        REPT(
            r,
            ISNA(
                XMATCH(
                    r,
                    INDEX(
                        a,
                        LEFT(
                            p
                        ),
                        
                    )
                )
            )*ISNA(
                XMATCH(
                    r,
                    INDEX(
                        a,
                        ,
                        RIGHT(
                            p
                        )
                    )
                )
            )
        )
    ),
    n))))))
Excel solution 3 for  Sudoku In Excel, proposed by محمد حلمي:
=MAP(
    B3:G8,
    LAMBDA(
        v,
        LET(
            
            b,
            B3:G8,
            s,
            SEQUENCE(
                6
            ),
            c,
            COLUMN(
                v
            ),
            r,
            ROW(
                v
            ),
            
            i,
            FILTER(
                s,
                ISNA(
                    XMATCH(
                        s,
                        TOCOL(
                            CHOOSEROWS(
                                
                                IF(
                                    c<5,
                                    TAKE(
                                        b,
                                        ,
                                        3
                                    ),
                                    DROP(
                                        b,
                                        ,
                                        3
                                    )
                                ),
                                
                                r+IF(
                                    ISODD(
                                        r
                                    ),
                                    {0,
                                    1},
                                    {0,
                                    -1}
                                )-2
                            )
                        )
                    )
                )
            ),
            
            IF(
                v="x",
                MAX(
                    MAP(
                        i,
                        LAMBDA(
                            a,
                            a*
                            ISNA(
                                XMATCH(
                                    a,
                                    FILTER(
                                        b,
                                        COLUMN(
                                            b
                                        )=c
                                    )
                                )
                            )*
                            ISNA(
                                XMATCH(
                                    a,
                                    FILTER(
                                        b,
                                        ROW(
                                            b
                                        )=r
                                    )
                                )
                            )
                        )
                    )
                ),
                v
            )
        )
    )
)
Excel solution 4 for  Sudoku In Excel, proposed by John Jairo Vergara Domínguez:
=MAKEARRAY(
    6,
    6,
    LAMBDA(
        r,
        c,
        LET(
            q,
            B3:G8,
            f,
            LAMBDA(
                a,
                v,
                FILTER(
                    a,
                    ISNA(
                        XMATCH(
                            a,
                            v
                        )
                    )
                )
            ),
            p,
            INDEX(
                q,
                r,
                c
            ),
            IF(
                p="X",
                @f(
                    f(
                        ROW(
                            1:6
                        ),
                        INDEX(
                            q,
                            r,
                            
                        )
                    ),
                    INDEX(
                        q,
                        ,
                        c
                    )
                ),
                p
            )
        )
    )
)
Excel solution 5 for  Sudoku In Excel, proposed by Bilal Mahmoud kh.:
=SCAN(
    B3,
    B3:G8,
    LAMBDA(
        a,
        b,
        IF(
            b="X",
            CONCAT(
                MIN(
                    LET(
                        x,
                        SEQUENCE(
                            6
                        ),
                        y,
                        TOCOL(
                            CHOOSEROWS(
                                B3:G8,
                                ROW(
                                    b
                                )-2
                            )
                        ),
                        z,
                        CHOOSECOLS(
                            B3:G8,
                            COLUMN(
                                    b
                                )-1
                        ),
                        n,
                        MAP(
                            x,
                            LAMBDA(
                                r,
                                IF(
                                    AND(
                                        XLOOKUP(
                                            r,
                                            y,
                                            y,
                                            0
                                        )=0,
                                        XLOOKUP(
                                            r,
                                            z,
                                            z,
                                            0
                                        )=0
                                    ),
                                    r,
                                    ""
                                )
                            )
                        ),
                        n
                    )
                )
            ),
            b
        )
    )
)
Excel solution 6 for  Sudoku In Excel, proposed by Hussein SATOUR:
=MAP(
    B3:G8,
    LAMBDA(
        x,
        IF(
            x<>"X",
            x,
            LET(
                t,
                B3:G8,
                PR,
                ROW(
                    x
                )-2,
                PC,
                COLUMN(
                    x
                )-1,
                UNIQUE(
                    VSTACK(
                        CHOOSECOLS(
                            t,
                            PC
                        ),
                        TOCOL(
                            CHOOSEROWS(
                                t,
                                PR
                            )
                        ),
                        TOCOL(
                            TAKE(
                                DROP(
                                    t,
                                    IF(
                                        ISODD(
                                            PR
                                        ),
                                        PR-1,
                                        PR-2
                                    )
                                ),
                                2,
                                IF(
                                    PC<4,
                                    3,
                                    -3
                                )
                            )
                        ),
                        SEQUENCE(
                            6
                        )
                    ),
                    ,
                    1
                )
            )
        )
    )
)

Leave a Reply