Palindrome number is that which is same even when read backwards. Column A contains a list of Palindrome numbers. Find the next Palindrome number starting from the numbers given in column A.
📌 Challenge Details and Links
ExcelBI Excel Challenge Number: 141
Challenge Difficulty: ⭐️
📥Download Sample File
📥Link to the solutions on LinkedIn
Solving the challenge of Next Palindrome Number with Power Query
Power Query solution 1 for Next Palindrome Number, proposed by Bo Rydobon 🇹🇭:
let
Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
Res = List.Transform(
Table.ToRows(Source),
each
let
a = Text.ToList(Text.From(_{0})),
b = List.Count(a),
c = Number.IntegerDivide(b, 2),
d = Text.ToList(
Text.From(Number.From(Text.Combine(List.FirstN(a, Number.RoundUp(b / 2)))) + 1)
)
in
Number.From(Text.Combine(d & List.Reverse(List.RemoveLastN(d, Number.Mod(b, 2)))))
)
in
Res
Power Query solution 2 for Next Palindrome Number, proposed by Zoran Milokanović:
let
Source = Excel.CurrentWorkbook(){[Name = "Palindrome"]}[Content],
AddedPalindrome = Table.AddColumn(
Source,
"Answer Expected",
each List.Last(
List.Generate(
() => [Number] + 1,
each Number.ToText(_) <> Text.Reverse(Number.ToText(_)),
each _ + 1,
each _ + 1
)
)
)[[Answer Expected]]
in
AddedPalindrome
Power Query solution 3 for Next Palindrome Number, proposed by Aditya Kumar Darak 🇮🇳:
let
Source = Excel.CurrentWorkbook(){[Name = "data"]}[Content],
MyFun = (num) =>
List.Last(
List.Generate(
() => [x = num + 1],
each [x] <> Number.From(Text.Reverse(Text.From([x]))),
each [x = [x] + 1],
each [x] + 1
)
),
Return = Table.AddColumn(Source, "Output", each MyFun([Number]))
in
Return
Power Query solution 4 for Next Palindrome Number, proposed by Alejandro Simón 🇵🇦 🇪🇸:
let
Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
Type = Table.TransformColumnTypes(Source, {{"Number", type text}}),
Sol = Table.AddColumn(
Type,
"Expected Answer",
each Text.From(
List.Last(
List.Generate(
() => [Number = Number.From([Number]) + 1],
each [Number] <> Number.From(Text.Reverse(Text.From([Number]))),
each [Number = [Number] + 1],
each [Number] + 1
)
)
)
)
in
Sol
Power Query solution 5 for Next Palindrome Number, proposed by Brian Julius:
let
Source = Table.SelectColumns(Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], "Number"),
Calculation = Table.AddColumn(
Source,
"Dims",
each [
ToList = Text.ToList(Text.From([Number])),
Length = List.Count(ToList),
Half = Number.IntegerDivide(Length, 2),
Mod = Number.Mod(Length, 2),
a = List.FirstN(ToList, Half),
arev = List.Reverse(a),
b = Text.Combine(a, ""),
brev = Text.Combine(arev, ""),
c = Text.From(Number.From(b) + 1),
crev = Text.Combine(List.Reverse(Text.ToList(c)), ""),
FirstPart =
if Number.From(List.First(List.RemoveFirstN(ToList, Half))) = 9 then
Text.From(c)
else
Text.From(b),
SecondPart = Number.From(List.First(List.RemoveFirstN(ToList, Half))) + 1,
ThirdPart = brev,
Result =
if Number.IsEven(Length) then
c & crev
else
FirstPart & Text.From(SecondPart) & ThirdPart
][Result]
),
ReType = Table.TransformColumnTypes(Calculation, {{"Dims", Int64.Type}})
in
ReType
Power Query solution 6 for Next Palindrome Number, proposed by Udit Chatterjee:
let
Source = Excel.CurrentWorkbook(){[Name = "palindrome_numbers"]}[Content],
DatatypeChange = Table.TransformColumnTypes(Source, {{"Number", Int64.Type}}),
// calculate next palindrome number:
CustomColumnAddition = Table.AddColumn(
DatatypeChange,
"Next Palindrome",
each List.Max(
List.Generate(
() => [Number] + 1,
each _ <> Number.FromText(Text.Reverse(Number.ToText(_))),
each _ + 1
)
)
+ 1,
Int64.Type
)
in
CustomColumnAddition
Solving the challenge of Next Palindrome Number with Excel
Excel solution 1 for Next Palindrome Number, proposed by Bo Rydobon 🇹🇭:
=LET(a,A2:A10,b,LEN(a),(1.1-MOD(b,2))*10^(EVEN(b)/2)+a)
Excel solution 2 for Next Palindrome Number, proposed by Bo Rydobon 🇹🇭:
=MAP(A2:A10,LAMBDA(a,LET(b,LEN(a),c,EVEN(b)/2,d,c-MOD(b,2),e,LEFT(a,c)+1,--IF(d,e&CONCAT(MID(e,d+1-SEQUENCE(d),1)),e+(e>9)))))
Excel solution 3 for Next Palindrome Number, proposed by Rick Rothstein:
=LET(a,A2:A16,c,LEN(a),IF(MOD(c,2),a+10^INT(c/2),a+11*10^INT((c-1)/2)))
Excel solution 4 for Next Palindrome Number, proposed by Rick Rothstein:
=LET(a,A2:A16,c,LEN(a),IF(0+MID(a,INT((c+1)/2),1)<9,IF(M
OD(c,2),a+10^INT(c/2),a+11*10^INT((c-1)/2)),a+11*10^ROUNDUP((c-4+(c<4))/2,0)))
Excel solution 5 for Next Palindrome Number, proposed by John V.:
=LET(n,A2:A10,s,LEN(n),o,ISODD(s),n+(11-10*o&REPT(0,INT((s+o-1)/2))))
Excel solution 6 for Next Palindrome Number, proposed by محمد حلمي:
=MAP(A2:A10,LAMBDA(a,a+LET(
r,LEN(a),
IF(ISODD(r),10^ROUNDUP(r/3,),(11&REPT(0,r/2-1))))))
Excel solution 7 for Next Palindrome Number, proposed by محمد حلمي:
=LET(
a,A2:A10,
r,LEN(a),
IF(ISODD(r),10^ROUNDUP(r/3,),11&REPT(0,r/2-1))+a)
Excel solution 8 for Next Palindrome Number, proposed by محمد حلمي:
=LET(
a,A2:A10,
r,LEN(a),
IF(ISODD(r),1&REPT(0,r/2),11&REPT(0,r/2-1))+a)
Excel solution 9 for Next Palindrome Number, proposed by Kris Jaganah:
=MAP(A2:A10,LAMBDA(x,LET(a,LEN(x),b,EVEN(x),c,FLOOR(a/2,1),IF(ISODD(a),10^c,(10^c)+(10^(c-1)))+x)))
Excel solution 10 for Next Palindrome Number, proposed by Julian Poeltl:
=MAP(A2:A10,LAMBDA(P,LET(L,LEN(P),T,ROUNDUP(L/2,0),TT,IF(ISODD(L),T-1,T),E,LEFT(P,T)+1,CONCAT(E,MID(E,SEQUENCE(TT,,TT,-1),1)))*1))
Excel solution 11 for Next Palindrome Number, proposed by Timothée BLIOT:
=MAP(A2:A10,LAMBDA(z,LET(A,LEN(z)/2,B,NOT(INT(A)=A),C,CONCAT(MID(z,IF(B,SEQUENCE(2,,A),SEQUENCE(3,,A-1)),1)),D,IF(B,TEXT(C+1,"00"), TEXT(C+11,"000")),E,IF(A-2>0,MID(z,1,ROUNDUP(A-2,0)),""),CONCAT(E,D, LEFT(D)&IFERROR(CONCAT(MID(E,SEQUENCE(LEN(E),,LEN(E),-1),1)),""))*1)))
Excel solution 12 for Next Palindrome Number, proposed by Hussein SATOUR:
=MAP(A2:A10, LAMBDA(x, LET(b, LEN(x), c, --MID(x, ROUNDUP(b/2,0), 1+ISEVEN(b)),REPLACE(x, ROUNDUP(b/2,0), 1+ISEVEN(b), c+1+ISEVEN(b)*10))))
Excel solution 13 for Next Palindrome Number, proposed by Sunny Baggu:
=MAP(A2:A10,LAMBDA(a,LET(_len,LEN(a),_loc,ROUND(_len/2,0),_cnt,IF(ISEVEN(_len),2,1),
_left,LEFT(a,_loc-1),_midnor,MID(a,_loc,_cnt),
_midup,MID(_midnor,SEQUENCE(,LEN(_midnor)),1)+1,
_right,MID(a,_loc+_cnt,1000),TEXTJOIN("",,_left,_midup,_right)+0)))
Excel solution 14 for Next Palindrome Number, proposed by Md. Zohurul Islam:
=MAP(A2:A10,LAMBDA(z,LET(a,LEN(z),b,FLOOR(a/2,1),d,10^b,e,10^(b-1),f,d+e,g,IF(MOD(a,2)=0,f,d),h,z+g,h)))
Excel solution 15 for Next Palindrome Number, proposed by Jaroslaw Kujawa:
=1*LET(a, A2:A10, len, LEN(a), center, MID(a, (len+1)/2, 1), left, MID(a, 1, len-(len+1)/2), right_odd, MID(a, 1+(len+1)/2, len-(len+1)/2), right_even, MID(a, 2+(len+1)/2, len-(len)/2), odd, 1*ISODD(len), left&REPT(center+1, 2-odd)&REPT(right_odd, odd)&REPT(right_even, IF(odd, odd-1, odd+1)))
Excel solution 16 for Next Palindrome Number, proposed by Guillermo Arroyo:
=MAP(A2:A10,LAMBDA(a,LET(l,LEN(a),n,LEFT(a,ROUNDUP(l/2,0))+1,p,LEN(n),--CONCAT(n,MID(LEFT(n,l-p),SEQUENCE(l-p,,l-p,-1),1)))))
Excel solution 17 for Next Palindrome Number, proposed by Tsiory RAZAFITSEHENO:
SI(EST.IMPAIR(NBCAR(A2));A2+10^(NBCAR(A2)/2-0,5);A2+10^(NBCAR(A2)/2)+10^(NBCAR(A2)/2-1))
Solving the challenge of Next Palindrome Number with Python in Excel
Python in Excel solution 1 for Next Palindrome Number, proposed by Alejandro Campos:
df = xl("A1:A10", headers=True)
def is_palindrome(n):
return str(n) == str(n)[::-1]
def next_palindrome(n):
n += 1
while not is_palindrome(n):
n += 1
return n
df['Next Palindrome'] = df['Number'].apply(next_palindrome)
df['Next Palindrome']
&&&
