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
SolSolving 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
)
)
)
)
)