196-Algorithm – Take any positive integer of two digits or more, reverse the digits, and add to the original number. Now repeat the procedure with the sum so obtained until a Palindromic number is obtained. We know that a Palindromic number is that number which is same even when read backward. Work out the Palindromic number associated with the column A numbers. Note – All numbers given in this problem will eventually reach to a Palindromic number.
📌 Challenge Details and Links
ExcelBI Excel Challenge Number: 296
Challenge Difficulty: ⭐️⭐️
📥Download Sample File
📥Link to the solutions on LinkedIn
Solving the challenge of Find Palindromic Numbers via 196 with Power Query
Power Query solution 1 for Find Palindromic Numbers via 196, proposed by Bo Rydobon 🇹🇭:
let
Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
Rc = (n) =>
let
c = n + Number.From(Text.Reverse(Text.From(n)))
in
if c = Number.From(Text.Reverse(Text.From(c))) then c else @Rc(c),
Ans = Table.TransformRows(Source, each Rc([Number]))
in
Ans
Power Query solution 2 for Find Palindromic Numbers via 196, proposed by Zoran Milokanović:
let
Source = Excel.CurrentWorkbook(){[Name = "Input"]}[Content],
R = (n) => Number.From(Text.Combine(List.Reverse(Text.ToList(Text.From(n))))),
S = Table.TransformRows(
Source,
each
let
i = [Number] + R([Number])
in
List.Max(List.Generate(() => i, each _ <> R(_), each _ + R(_), each _ + R(_))) ?? i
)
in
S
Power Query solution 3 for Find Palindromic Numbers via 196, proposed by Alejandro Simón 🇵🇦 🇪🇸:
let
Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
G = (f) =>
let
a = Number.From(Text.Reverse(Text.From(f))) + f,
b = if Text.From(a) = Text.Reverse(Text.From(a)) then a else @G(a)
in
b,
Sol = Table.AddColumn(Source, "Answer", each G([Number]))[[Answer]]
in
Sol
Power Query solution 4 for Find Palindromic Numbers via 196, proposed by Luan Rodrigues:
let
Fonte = Tabela1,
loop = (x) =>
[
a = Number.From(Text.Reverse(Text.From(x))) + x,
b = if Text.From(a) = Text.Reverse(Text.From(a)) then a else @loop(a)
][b],
res = Table.TransformColumns(Fonte, {{"Number", each loop(_)}})
in
res
Power Query solution 5 for Find Palindromic Numbers via 196, proposed by Rafael González B.:
let
Source = Excel.CurrentWorkbook(){0}[Content],
PN = (num as number) =>
let
n = num,
t = Text.From(n),
r = Text.Reverse(t),
n2 = Text.From(Number.From(r) + n),
r2 = Text.Reverse(n2),
c = n2 = r2
in
if c then Number.From(n2) else @PN(Number.From(n2)),
Ans = Table.AddColumn(Source, "Answer Expected", each PN([Number]))
in
Ans[[Answer Expected]]
🎩 🎩 🎩
Power Query solution 6 for Find Palindromic Numbers via 196, proposed by Szabolcs Phraner:
let
Source = Excel.CurrentWorkbook(){[Name = "NR"]}[Content],
//Custom function to check if number is Palindromic
IsPalindromic = (nr) =>
let
l = Text.From(nr),
r = Text.Reverse(l)
in
Number.From(l = r),
//Custom function for Alg-196
AddDigits = (nr) => nr + Number.From(Text.Reverse(Text.From(nr))),
Alg196 = (nr) =>
let
ListGen = List.Generate(
() => [a = nr, b = AddDigits(a), c = IsPalindromic(b)],
each [c] <= 1,
each [a = [b], b = AddDigits(a), c = IsPalindromic(b) + [c]],
each [b]
)
in
List.Last(ListGen),
AddCol = Table.AddColumn(Forrás, "ALG-196", each Alg196([Number]), Int64.Type)
in
AddCol
Power Query solution 7 for Find Palindromic Numbers via 196, proposed by ASHFAQUE AHMED:
let
Source = ... // Your data source
#"Added Custom Column" = Table.AddColumn(Source, "NewColumn", each [Column1] + [Column2])
in
#"Added Custom Column"
Solving the challenge of Find Palindromic Numbers via 196 with Excel
Excel solution 1 for Find Palindromic Numbers via 196, proposed by Bo Rydobon 🇹🇭:
=LET(
R,
LAMBDA(
r,
n,
[m],
LET(
c,
CONCAT(
MID(
n,
16-SEQUENCE(
15
),
1
)
),
IF(
n=m*c,
n,
r(
r,
n+c,
1
)
)
)
),
MAP(
A2:A10,
LAMBDA(
a,
R(
R,
a
)
)
)
)
Excel solution 2 for Find Palindromic Numbers via 196, proposed by Bo Rydobon 🇹🇭:
=MAP(A2:A10,
LAMBDA(n,
REDUCE(n,
SEQUENCE(
999
),
LAMBDA(a,
w,
LET(b,
CONCAT(
MID(
a,
16-SEQUENCE(
15
),
1
)
),
IF((w>1)*(a=--b),
a,
a+b))))))
Excel solution 3 for Find Palindromic Numbers via 196, proposed by John V.:
=MAP(A2:A10,
LAMBDA(n,
LET(s,
ROW(
1:25
),
f,
LAMBDA(
x,
CONCAT(
MID(
x,
26-s,
1
)
)
),
REDUCE(n+f(
n
),
s,
LAMBDA(a,
v,
a+f(
a
)*(a<>--f(
a
)))))))
Excel solution 4 for Find Palindromic Numbers via 196, proposed by محمد حلمي:
=MAP(
A2:A10,
LAMBDA(
a,
LET(
s,
SEQUENCE(
50
),
r,
LAMBDA(
x,
CONCAT(
MID(
x,
51-s,
1
)
)
),
v,
SCAN(
a,
s,
LAMBDA(
a,
d,
r(
a
)+a
)
),
@FILTER(
v,
BYROW(
v,
LAMBDA(
a,
a=--r(
a
)
)
)
)
)
)
)
Excel solution 5 for Find Palindromic Numbers via 196, proposed by Kris Jaganah:
=MAP(A2:A10,LAMBDA(z,LET(a,SCAN(z,SEQUENCE(30),LAMBDA(x,y,SUM(--CONCAT(MID(x,SEQUENCE(LEN(x),,LEN(x),-1),1)),x))),MIN(IF(MAP(a,LAMBDA(z,--CONCAT(MID(z,SEQUENCE(LEN(z),,LEN(z),-1),1))))=a,a,"")))))
Excel solution 6 for Find Palindromic Numbers via 196, proposed by Timothée BLIOT:
=MAP(
A2:A10,
LAMBDA(
z,
LET(
R,
LAMBDA(
n,
--CONCAT(
MID(
n,
20-ROW(
1:19
),
1
)
)
),
F,
LAMBDA(
me,
n,
IF(
n=R(
n
),
n,
me(
me,
R(
n
)+n
)
)
),
F(
F,
R(
z
)+z
)
)
)
)
=MAP(
A2:A10,
LAMBDA(
z,
LET(
R,
LAMBDA(
n,
--CONCAT(
MID(
n,
20-ROW(
1:19
),
1
)
)
),
REDUCE(
z,
ROW(
1:999
),
LAMBDA(
a,
v,
IF(
v>1,
IF(
R(
a
)=a,
a,
R(
a
)+a
),
R(
a
)+a
)
)
)
)
)
)
Excel solution 7 for Find Palindromic Numbers via 196, proposed by Sunny Baggu:
=MAP(
A2:A10,
LAMBDA(
n,
LET(
_rev,
LAMBDA(
x,
CONCAT(
MID(
x,
LEN(
x
) + 1 - SEQUENCE(
LEN(
x
)
),
1
)
)
),
_col1,
SCAN(
n,
SEQUENCE(
100
),
LAMBDA(
a,
v,
_rev(
a
) + a
)
),
_col2,
MAP(
_col1,
LAMBDA(
y,
_rev(
y
)
)
),
TAKE(
FILTER(
_col1,
_col1 = _col2 + 0
),
1
)
)
)
)
Excel solution 8 for Find Palindromic Numbers via 196, proposed by Sunny Baggu:
=MAP(
A2:A10,
LAMBDA(
n,
REDUCE(
n,
SEQUENCE(
100
),
LAMBDA(
a,
v,
LET(
_rev,
LAMBDA(
x,
CONCAT(
MID(
x,
LEN(
x
) + 1 - SEQUENCE(
LEN(
x
)
),
1
)
)
),
_revadd,
_rev(
a
) + a,
IF(
AND(
v > 1,
a - _rev(
a
) = 0
),
a,
a + _rev(
a
)
)
)
)
)
)
)
Excel solution 9 for Find Palindromic Numbers via 196, proposed by LEONARD OCHEA 🇷🇴:
=LET(
F,
LAMBDA(
x,
LET(
l,
LEN(
x
),
--CONCAT(
MID(
x,
l-SEQUENCE(
l
)+1,
1
)
)
)
),
MAP(
A2:A10,
LAMBDA(
a,
LET(
R,
LAMBDA(
R,
y,
LET(
n,
y+F(
y
),
IF(
n=F(
n
),
n,
R(
R,
n
)
)
)
),
R(
R,
a
)
)
)
)
)
Excel solution 10 for Find Palindromic Numbers via 196, proposed by Abdallah Ally:
=MAP(
A2:A10,
LAMBDA(
u,
LET(
a,
LAMBDA(
x,
--CONCAT(
MID(
x,
SEQUENCE(
LEN(
x
),
,
LEN(
x
),
-1
),
1
)
)
),
rfn,
LAMBDA(
f,
rng,
IF(
rng=a(
rng
),
rng,
f(
f,
rng+a(
rng
)
)
)
),
rfn(
rfn,
u+a(
u
)
)
)
)
)
Excel solution 11 for Find Palindromic Numbers via 196, proposed by Charles Roldan:
=LET(
M,
LAMBDA(
g,
g(
g
)
),
Mp,
LAMBDA(
f,
LAMBDA(
x,
MAP(
x,
f
)
)
),
B,
LAMBDA(
f,
LAMBDA(
g,
LAMB&DA(
x,
f(
g(
x
)
)
)
)
),
Rev,
M(LAMBDA(g,
LAMBDA(x,
IF(LEN(
x
),
g(
g
)(REPLACE(
x,
1,
1,
)) & LEFT(
x
),
)))),
f,
LAMBDA(
x,
x + Rev(
x
)
),
Mp(B(M(LAMBDA(g,
LAMBDA(x,
LET(y,
f(
x
),
IF(2 * x - y,
g(
g
)(y),
x))))))(f))
)(A2:A10)
Excel solution 12 for Find Palindromic Numbers via 196, proposed by Pieter de Bruijn:
=MAP(
A2:A10,
LAMBDA(
a,
REDUCE(
a+CONCAT(
MID(
a,
SEQUENCE(
LEN(
a
),
,
LEN(
a
),
-1
),
1
)
),
SEQUENCE(
LEN(
a
)*15
),
LAMBDA(
x,
y,
LET(
z,
MID(
x,
SEQUENCE(
LEN(
x
),
,
LEN(
x
),
-1
),
1
),
IF(
AND(
z=MID(
x,
SEQUENCE(
LEN(
x
)
),
1
)
),
x,
x+CONCAT(
z
)
)
)
)
)
)
)
Excel solution 13 for Find Palindromic Numbers via 196, proposed by Mihai Radu O:
= r(
b
),
b,
fct(
b + r(
b
),
fct
))
),
fct(
b,
fct
)
)
)
)
Excel solution 14 for Find Palindromic Numbers via 196, proposed by samir tobeil:
=MAP(
A2:A10,
LAMBDA(
x,
LET(
l,
LAMBDA(
f,
CONCAT(
MID(
f,
21-ROW(
1:20
),
1
)
)
),
REDUCE(
x+l(
x
),
SEQUENCE(
30
),
LAMBDA(
a,
i,
IF(
a=--l(
a
),
a+0,
a+l(
a
)
)
)
)
)
)
)
Excel solution 15 for Find Palindromic Numbers via 196, proposed by Kriddakorn Pongthanisorn:
=MAP(
A2:A10,
LAMBDA(
r,
LET(
z,
r,
al,
LAMBDA(
al,
x,
IF(
AND(
--CONCAT(
MID(
x,
SEQUENCE(
LEN(
x
),
1,
LEN(
x
),
-1
),
1
)
)=x,
x>z
),
x,
al(
al,
x+--CONCAT(
MID(
x,
SEQUENCE(
LEN(
x
),
1,
LEN(
x
),
-1
),
1
)
)
)
)
),
al(
al,
r
)
)
)
)
Solving the challenge of Find Palindromic Numbers via 196 with Python in Excel
Python in Excel solution 1 for Find Palindromic Numbers via 196, proposed by Bo Rydobon 🇹🇭:
def OS(n):
while True:
n +=int(str(n)[::-1])
if str(n) == str(n)[::-1] : return n
[OS(n) for n in xl("A2:A10")[0]]
Solving the challenge of Find Palindromic Numbers via 196 with R
R solution 1 for Find Palindromic Numbers via 196, proposed by Konrad Gryczan, PhD:
(pretty short)
library(tidyverse)
library(stringi)
library(readxl)
input = read_excel("196-Algorithm.xlsx")
compute_196_palindrome = function(number) {
original_number = number
while (TRUE) {
number = number + as.numeric(stri_reverse(as.character(number)))
if (as.character(number) == stri_reverse(as.character(number)) & number != original_number) {
break
}
}
return(number)
}
result = input %>%
mutate(my_answer = map_dbl(Number, compute_196_palindrome),
check = `Expected Answer`== my_answer)
print(result)
Solving the challenge of Find Palindromic Numbers via 196 with Excel VBA
Excel VBA solution 1 for Find Palindromic Numbers via 196, proposed by Rick Rothstein:
Sub Algorithm169()
Dim X As Long, LC As Range
Dim Data As Variant
Dim Temp As Variant
Dim Result As Variant
Set LC = Cells(Rows.Count, "A").End(xlUp)
Data = Range("A2", LC).Value
ReDim Result(1 To UBound(Data), 1 To 1)
On Error Resume Next
For X = 1 To UBound(Data)
Temp = CDec(Data(X, 1))
Do
Temp = CDec(Temp) + StrReverse(Temp)
If Err.Number Then
Err.Clear
Exit Do
End If
Loop While Temp <> StrReverse(Temp)
If Len(Temp) > 15 Then Temp = "'" & Temp
Result(X, 1) = Temp
Next
On Error GoTo 0
With Range("C2").Resize(UBound(Result))
.NumberFormat = String(15, "#")
.Value = Result
End With
End Sub
&&
