Palindrome numbers are those which are same even when read from backwards. We need not consider single digit numbers for this purpose. Hence, 1 to 9 will not be considered as Palindromes. Example – 44, 121, 5665. Find Count, Min and Max Palindromes in the given range of numbers.
📌 Challenge Details and Links
ExcelBI Excel Challenge Number: 107
Challenge Difficulty: ⭐️⭐️
📥Download Sample File
📥Link to the solutions on LinkedIn
Solving the challenge of Count Palindromes in Range with Power Query
Power Query solution 1 for Count Palindromes in Range, proposed by Aditya Kumar Darak 🇮🇳:
let
Source = Excel.CurrentWorkbook(){[Name = "data"]}[Content],
List = List.Buffer(
List.Select({10 .. List.Max(Source[To])}, (f) => Text.Reverse(Text.From(f)) = Text.From(f))
),
Select = Table.AddColumn(
Source,
"Select",
each List.Select(List, (f) => f >= [From] and f <= [To])
),
Calc = Table.AddColumn(
Select,
"Record",
each [Count = List.Count([Select]), Min = List.Min([Select]), Max = List.Max([Select])]
),
Result = Table.FromRecords(Calc[Record])
in
Result
Power Query solution 2 for Count Palindromes in Range, proposed by Alejandro Simón 🇵🇦 🇪🇸:
let
Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
Lista = Table.AddColumn(
Source,
"New",
each List.Transform(
List.Transform(
List.Select(
List.Transform(List.Select({[From] .. [To]}, each _ > 9), each Text.ToList(Text.From(_))),
each _ = List.Reverse(_)
),
each Text.Combine(_, "")
),
each Number.From(_)
)
),
Record = Table.AddColumn(
Lista,
"New2",
each [Count = List.Count([New]), Min = List.Min([New]), Max = List.Max([New])]
)[[New2]],
Solucion = Table.ExpandRecordColumn(
Record,
"New2",
{"Count", "Min", "Max"},
{"Count", "Min", "Max"}
)
in
Solucion
Power Query solution 3 for Count Palindromes in Range, proposed by Luan Rodrigues:
let
Fonte = Tabela1,
list = Table.AddColumn(Fonte, "Personalizar", each {[From] .. [To]}),
exp = Table.ExpandListColumn(list, "Personalizar"),
rec = Table.AddColumn(
exp,
"Personalizar.1",
each [
a = List.Reverse(Text.ToList(Text.From([Personalizar]))),
b = Text.ToList(Text.From([Personalizar])),
c = List.Count(b),
d = a = b
]
),
tru = Table.ExpandRecordColumn(rec, "Personalizar.1", {"c", "d"}, {"c", "d"}),
fil = Table.SelectRows(tru, each ([c] <> 1) and ([d] = true)),
Result = Table.Group(
fil,
{"To"},
{
{"Count", each Table.RowCount(_)},
{"Min", each List.Min([Personalizar])},
{"Max", each List.Max([Personalizar])}
}
)[[Count], [Min], [Max]]
in
Result
Power Query solution 4 for Count Palindromes in Range, proposed by Brian Julius:
let
Source = Table.AddIndexColumn(Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], "Index", 1, 1),
NumTextList = Table.ExpandListColumn(
Table.AddColumn(Source, "NumList", each List.Numbers([From], [To] - [From] + 1)),
"NumList"
),
Filter = Table.SelectRows(
NumTextList,
each [NumList] > 9 and (Text.From([NumList]) = Text.Reverse(Text.From([NumList])))
),
Group = Table.Group(
Filter,
{"From", "To"},
{
{"Count", each Table.RowCount(_), Int64.Type},
{"Min", each List.Min([NumList]), type number},
{"Max", each List.Max([NumList]), type number}
}
)
in
Group
Power Query solution 5 for Count Palindromes in Range, proposed by Bhavya Gupta:
let
Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
Transformed = Table.ReplaceValue(
Source,
each [From],
null,
(a, b, c) =>
List.Transform(
List.Select(
List.Transform({b .. a}, each Text.ToList(Text.From(_))),
each List.Reverse(_) = _ and List.Count(_) > 1
),
each Number.From(Text.Combine(_))
),
{"To"}
)[To],
ExpectedOutput = Table.FromRecords(
List.Transform(Transformed, each [Count = List.Count(_), Min = List.Min(_), Max = List.Max(_)])
)
in
ExpectedOutput
Power Query solution 6 for Count Palindromes in Range, proposed by Bhavya Gupta:
let
Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
ExpectedOutput = Table.FromRecords(
List.Transform(
Table.TransformRows(
Source,
each List.Transform(
List.Select({[From] .. [To]}, each _ > 9 and Text.Reverse(Text.From(_)) = Text.From(_)),
(x) => Number.From(x)
)
),
each [Count = List.Count(_), Max = List.First(_), Min = List.Last(_)]
)
)
in
ExpectedOutput
Power Query solution 7 for Count Palindromes in Range, proposed by Matthias Friedmann:
let
Source = Excel.CurrentWorkbook(){[Name = "Palindromes"]}[Content],
Custom = Table.Combine(
Table.AddColumn(
Source,
"Custom",
each [
a = List.Select({[From] .. [To]}, each _ > 9 and Text.From(_) = Text.Reverse(Text.From(_))),
b = List.Count(a),
c = List.First(a),
d = List.Last(a),
e = Table.FromColumns({{b}, {c}, {d}}, {"Count", "Min", "Max"})
][e]
)[Custom]
)
in
Custom
Power Query solution 8 for Count Palindromes in Range, proposed by Rafael González B.:
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
RangeToList = Table.AddColumn(Source, "ToList",
each List.Numbers( [From],([To]-[From])+1)),
ListToList = Table.AddColumn(RangeToList, "LtoL",
each List.Split([ToList], List.Count([ToList]))),
RemoveColumns = Table.RemoveColumns(ListToList,{"ToList"}),
ListsToTable = Table.AddColumn(RemoveColumns, "LtoT",
each Table.FromColumns([LtoL])),
ItemsToText = Table.AddColumn(ListsToTable, "ToText",
each Table.TransformColumnTypes([LtoT], {"Column1", type text})),
ColumnAggregate = Table.AddColumn(ItemsToText, "ColumnAgg",
each Table.DuplicateColumn([ToText], "Column1", "ColumnR")),
ColumnReverse = Table.AddColumn(ColumnAggregate, "Reverse",
each Table.TransformColumns([ColumnAgg], {"ColumnR", Text.Reverse})),
....see next part
Power Query solution 9 for Count Palindromes in Range, proposed by Jan Willem Van Holst:
let
Source = Table.FromRows(
Json.Document(
Binary.Decompress(
Binary.FromText(
"i45WMlTSUTI0MFCK1YlWMrIAccwtwBxzEMfE0hIiY2wC5JmZmoJ5QPUGQK6RAYiOjQUA",
BinaryEncoding.Base64
),
Compression.Deflate
)
),
let
_t = ((type nullable text) meta [Serialized.Text = true])
in
type table [From = _t, To = _t]
),
#"Added Custom" = Table.AddColumn(
Source,
"Custom",
each {Number.From([From]) .. Number.From([To])}
),
#"Added Custom1" = Table.AddColumn(
#"Added Custom",
"excludeOne",
each List.Select([Custom], each _ > 9)
),
#"Added Custom2" = Table.AddColumn(
#"Added Custom1",
"palindrome",
(x) => List.Select(x[excludeOne], each Number.ToText(_) = Text.Reverse(Number.ToText(_)))
),
#"Added Custom3" = Table.AddColumn(#"Added Custom2", "Count", each List.Count([palindrome])),
#"Added Custom4" = Table.AddColumn(#"Added Custom3", "Min", each List.Min([palindrome])),
#"Added Custom5" = Table.AddColumn(#"Added Custom4", "Max", each List.Max([palindrome])),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom5", {"Custom", "excludeOne", "palindrome"})
in
#"Removed Columns"
Power Query solution 10 for Count Palindromes in Range, proposed by Ian Segard:
let
Source = Excel.CurrentWorkbook(){[Name = "Table6"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source, {{"From", Int64.Type}, {"To", Int64.Type}}),
#"Added Custom" = Table.AddColumn(
#"Changed Type",
"Custom",
each List.Numbers([From], [To] - [From])
),
#"Added Custom1" = Table.AddColumn(
#"Added Custom",
"Custom.1",
each List.RemoveItems([Custom], List.Numbers(1, 9))
),
#"Added Custom2" = Table.AddColumn(
#"Added Custom1",
"Custom.2",
each List.Select([Custom.1], each Text.From(_) = Text.Reverse(Text.From(_)))
),
#"Added Custom3" = Table.AddColumn(#"Added Custom2", "Max", each List.Max([Custom.2])),
#"Added Custom4" = Table.AddColumn(#"Added Custom3", "Min", each List.Min([Custom.2])),
#"Added Custom5" = Table.AddColumn(#"Added Custom4", "Count", each List.Count([Custom.2])),
#"Removed Other Columns" = Table.SelectColumns(#"Added Custom5", {"Max", "Min", "Count"}),
#"Reordered Columns" = Table.ReorderColumns(#"Removed Other Columns", {"Count", "Min", "Max"})
in
#"Reordered Columns"
Solving the challenge of Count Palindromes in Range with Excel
Excel solution 1 for Count Palindromes in Range, proposed by Bo Rydobon 🇹🇭:
=LET(
z,
B2:B6,
n,
SEQUENCE(
MAX(
z
)
)+9,
f,
FILTER(
n,
n=MAP(
n,
LAMBDA(
m,
--CONCAT(
MID(
m,
LEN(
m
)+1-SEQUENCE(
LEN(
m
)
),
1
)
)
)
)
),
v,
XMATCH(
A2:A6,
f,
1
),
x,
XMATCH(
z,
f,
-1
),
VSTACK(
{"Count",
"Min",
"Max"},
HSTACK(
x-v+1,
INDEX(
f,
v
),
INDEX(
f,
x
)
)
)
)
Excel solution 2 for Count Palindromes in Range, proposed by John V.:
=REDUCE(
{"Count",
"Min",
"Max"},
ROW(
1:5
),
LAMBDA(
i,
x,
LET(
f,
MAX(
10,
INDEX(
A2:A6,
x
)
),
s,
SEQUENCE(
1+INDEX(
B2:B6,
x
)-f,
,
f
),
b,
MAP(
s,
LAMBDA(
x,
LET(
l,
LEN(
x
),
z,
SEQUENCE(
l
),
AND(
MID(
x,
z,
1
)=MID(
x,
1+l-z,
1
)
)
)
)
),
VSTACK(
i,
HSTACK(
SUM(
--b
),
TAKE(
FILTER(
s,
b
),
{1,
-1}
)
)
)
)
)
)
✅=REDUCE({"Count",
"Min",
"Max"},
ROW(
1:5
),
LAMBDA(i,
x,
LET(s,
9+SEQUENCE(
MAX(
B2:B6
)
),
f,
FILTER(s,
(s=MAP(
s,
LAMBDA(
n,
--CONCAT(
MID(
n,
1+LEN(
n
)-SEQUENCE(
LEN(
n
)
),
1
)
)
)
))*(s>=INDEX(
A2:A6,
x
))*(s<=INDEX(
B2:B6,
x
))),
VSTACK(
i,
HSTACK(
COUNT(
f
),
MIN(
f
),
MAX(
f
)
)
))))
Excel solution 3 for Count Palindromes in Range, proposed by محمد حلمي:
=REDUCE(
{"Count",
"Min",
"Max"},
SEQUENCE(
ROWS(
A2:A6
)
),
LAMBDA(
e,
r,
LET(
o,
INDEX(
A2:A6,
r
),
s,
SEQUENCE(
INDEX(
B2:B6,
r
)-o+1,
,
o
),
v,
FILTER(
s,
MAP(
s,
LAMBDA(
d,
LET(
l,
LEN(
d
),
IF(
l>1,
d=0+CONCAT(
MID(
d,
l-SEQUENCE(
l
)+1,
1
)
)
)
)
)
)
),
VSTACK(
e,
HSTACK(
ROWS(
v
),
MIN(
v
),
MAX(
v
)
)
)
)
)
)
Excel solution 4 for Count Palindromes in Range, proposed by 🇰🇷 Taeyong Shin:
=REDUCE(D1:F1,
A2:A6,
LAMBDA(a,
v,
LET(s,
SEQUENCE(
@+DROP(
B6:v,
,
1
)-v+1,
,
v
),
n,
IF(REGEXTEST(
s,
"^((.)(?1)2|.?)$"
)*(s>9),
s),
VSTACK(
a,
HSTACK(
COUNT(
n
),
MIN(
n
),
MAX(
n
)
)
))))
Excel solution 5 for Count Palindromes in Range, proposed by Julian Poeltl:
=--TEXTSPLIT(
TEXTJOIN(
"|",
,
MAP(
A2:A6,
B2:B6,
LAMBDA(
F,
T,
LET(
FF,
MAX(
F,
10
),
S,
SEQUENCE(
T-FF,
,
FF
),
IP,
FILTER(
S,
MAP(
S,
LAMBDA(
A,
LET(
L,
LEN(
& A
),
LEFT(
A,
L/2
)=CONCAT(
MID(
A,
SEQUENCE(
L/2,
,
L,
-1
),
1
)
)
)
)
)
),
TEXTJOIN(
",",
,
ROWS(
IP
),
MIN(
IP
),
MAX(
IP
)
)
)
)
)
),
",",
"|"
)
Excel solution 6 for Count Palindromes in Range, proposed by Aditya Kumar Darak 🇮🇳:
=LET(
_fr,
A2:A6,
_t,
B2:B6,
_seq,
SEQUENCE(
MAX(
_t
) - 10,
,
10
),
_e1,
LAMBDA(
a,
--CONCAT(
MID(
a,
SEQUENCE(
LEN(
a
),
,
LEN(
a
),
-1
),
1
)
) = a
),
_c1,
MAP(
_seq,
_e1
),
_f,
FILTER(
_seq,
_c1
),
_e2,
LAMBDA(a,
b,
VSTACK(
a,
LET(
fr,
INDEX(
_fr,
b
),
t,
INDEX(
_t,
b
),
f,
FILTER(_f,
(_f >= fr) * (_f <= t)),
r,
HSTACK(
COUNT(
f
),
MIN(
f
),
MAX(
f
)
),
r
)
)
),
_r,
REDUCE(
{"Count",
"Min",
"Max"},
SEQUENCE(
COUNT(
_fr
)
),
_e2
),
_r
)
Excel solution 7 for Count Palindromes in Range, proposed by Timothée BLIOT:
=REDUCE({"Count",
"Min",
"Max"},
A2:A6,
LAMBDA(ac,
v,
LET(w,
XLOOKUP(
v,
A2:A6,
B2:B6
),
S,
SEQUENCE(
w-v+1,
,
v
),
A,
FILTER(
S,
LEN(
S
)>1
),
B,
MAP(
A,
LAMBDA(
x,
LEFT(
x,
ROUNDDOWN(
LEN(
x
)/2,
0
)
)*1
)
),
D,
MAP(
A,
LAMBDA(
x,
LET(
W,
RIGHT(
x,
ROUNDDOWN(
LEN(
x
)/2,
0
)
),
CONCAT(
MID(
W,
SEQUENCE(
LEN(
W
),
,
LEN(
W
),
-1
),
1
)
)*1
)
)
),
VSTACK(ac,
HSTACK(SUM(--(B=D)),
MIN(
FILTER(
A,
B=D
)
),
MAX(
FILTER(
A,
B=D
)
))))))
Excel solution 8 for Count Palindromes in Range, proposed by Hussein SATOUR:
=LET(
fr,
A2:A6,
to,
B2:B6,
F,
LAMBDA(
x,
y,
LET(
a,
SEQUENCE(
y - x,
,
x
),
FILTER(
a,
a = MAP(
a,
LAMBDA(
z,
--CONCAT(
MID(
z,
SEQUENCE(
LEN(
z
),
,
LEN(
z
),
-1
),
1
)
)
)
)
)
)
),
Co,
MAP(
fr,
to,
LAMBDA(
x,
y,
COUNT(
F(
x,
y
)
)
)
),
Mi,
MAP(
fr,
to,
LAMBDA(
x,
y,
MIN(
F(
x,
y
)
)
)
),
Ma,
MAP(
fr,
to,
LAMBDA(
x,
y,
MAX(
F(
x,
y
)
)
)
),
HSTACK(
Co,
Mi,
Ma
)
)
Excel solution 9 for Count Palindromes in Range, proposed by Md. Zohurul Islam:
=LET(
aa,
A2:B6,
bb,
BYROW(
aa,
LAMBDA(
z,
LET(
a,
ABS(
TAKE(
z,
,
1
)
),
b,
ABS(
TAKE(
z,
,
-1
)
),
c,
b-a+1,
d,
SEQUENCE(
c,
,
a
),
e,
MAP(
d,
LAMBDA(
p,
LET(
q,
LEN(
p
),
r,
SEQUENCE(
q,
,
q,
-1
),
s,
MID(
p,
r,
1
),
u,
ABS(
CONCAT(
s
)
),
u
)
)
),
f,
MAP(
d,
e,
LAMBDA(
x,
y,
IF(
AND(
LEN(
x
)>1,
x=y
),
1,
0
)
)
),
g,
FILTER(
d,
f>0
),
h,
TEXTJOIN(
"/",
,
COUNT(
g
),
MIN(
g
),
MAX(
g
)
),
h
)
)
),
hdr,
HSTACK(
"Count",
"Min",
"Max"
),
cc,
REDUCE(
hdr,
bb,
LAMBDA(
v,
w,
LET(
dd,
TEXTSPLIT(
w,
"/"
),
ee,
VSTACK(
v,
ABS(
dd
)
),
ee
)
)
),
cc
)
Excel solution 10 for Count Palindromes in Range, proposed by Charles Roldan:
=LAMBDA(
_ISPAL,
LET(
Data,
A2:B6,
Candidates,
SEQUENCE(
MAX(
Data
)
),
Pals,
FILTER(
Candidates,
MAP(
Candidates,
_ISPAL
)
),
Indices,
IFNA(
MATCH(
Data,
Pals,
1
),
),
HSTACK(
MMULT(
Indices,
{-1;1}
),
INDEX(
Pals,
{1,
0}+Indices
)
)
)
)(LAMBDA(
x,
LET(y,
LEN(
x
),
(y>1)*(x=--CONCAT(
MID(
x,
SEQUENCE(
y,
1,
y,
-1
),
1
)
)))))
Excel solution 11 for Count Palindromes in Range, proposed by Stefan Olsson:
=MAP(A2:A6,
B2:B6,
LAMBDA(f,
t,
QUERY(
MAP(SEQUENCE(
t-f+1,
1,
f,
1
),
LAMBDA(s,
s*(s>9)*(s=--REGEXREPLACE(
s&"",
REPT(
"(d)",
LEN(
s
)
),
JOIN(
"$",
"",
SEQUENCE(
LEN(
s
),
1,
LEN(
s
),
-1
)
)
))
)
),
"Select Count(Col1), Min(Col1), Max(Col1) Where Col1>0 Label Count(Col1) '', Min(Col1) '', Max(Col1) ''",
0)
)
)
Excel solution 12 for Count Palindromes in Range, proposed by Victor Momoh (MVP, MOS, R.Eng):
=VSTACK({"Count",
"Min",
"Max"},
DROP(REDUCE("",
SEQUENCE(
COUNTA(
A2:A6
)
),
LAMB
DA(p,
q,
VSTACK(p,
LET(a,
SEQUENCE(
INDEX(
B2:B6,
q
)-INDEX(
A2:A6,
q
)+1,
,
INDEX(
A2:A6,
q
)
),
b,
FILTER(a,
(a>9)*(MAP(
a,
LAMBDA(
x,
x=--CONCAT(
MID(
x,
SEQUENCE(
LEN(
x
),
,
LEN(
x
),
-1
),
1
)
)
)
))),
HSTACK(
COUNT(
b
),
MIN(
b
),
MAX(
b
)
))))),
1))
Excel solution 13 for Count Palindromes in Range, proposed by Abhishek Kumar Jain:
=VSTACK(
{"Count",
"Min",
"Max"},
--TEXTSPLIT(
TEXTJOIN(
"|",
TRUE,
MAP(
A2:A6,
B2:B6,
LAMBDA(
y,
z,
LET(
a,
SEQUENCE(
z-y+1,
,
y
),
b,
MAP(
a,
LAMBDA(
x,
IFS(
x<10,
0,
x=--TEXTJOIN(
"",
TRUE,
MID(
x,
SEQUENCE(
LEN(
x
),
,
LEN(
x
),
-1
),
1
)
),
1,
TRUE,
0
)
)
),
c,
MIN(
FILTER(
a,
b=1
)
),
d,
MAX(
FILTER(
a,
b=1
)
),
SUM(
b
)&" "&c&" "&d
)
)
)
),
" ",
"|"
)
)
Excel solution 14 for Count Palindromes in Range, proposed by Guillermo Arroyo:
=VSTACK({"Count",
"Min",
"Max"},
--TEXTSPLIT(TEXTJOIN("&",
0,
MAP(A2:A6,
B2:B6,
LAMBDA(i,
j,
LET(a,
SEQUENCE(
j-i+1,
,
i,
1
),
b,
MAP(a,
LAMBDA(c,
--(CONCAT(
MID(
c,
SEQUENCE(
LEN(
c
),
,
LEN(
c
),
-1
),
1
)
)))),
d,
FILTER(a,
(LEN(
a
)>1)*(a=b)),
TEXTJOIN(
"|",
0,
COUNT(
d
),
MIN(
d
),
MAX(
d
)
))))),
"|",
"&"))
Excel solution 15 for Count Palindromes in Range, proposed by roberto mensa:
=SUM(--(LEFT(
ROW(
INDIRECT(
A2&":"&B2
)
),
INT(
LEN(
ROW(
INDIRECT(
A2&":"&B2
)
)
)/2
)
)=LEFT(TEXT(MMULT(RIGHT(
INT(
RIGHT(
ROW(
INDIRECT(
A2&":"&B2
)
),
INT(
LEN(
ROW(
INDIRECT(
A2&":"&B2
)
)
)/2
)
)/10^SEQUENCE(
,
15,
0
)
)
)*1,
10^(15-ROW(
$1:$15
))),
REPT(
0,
15
)),
LEN(
RIGHT(
ROW(
INDIRECT(
A2&":"&B2
)
),
INT(
LEN(
ROW(
INDIRECT(
A2&":"&B2
)
)
)/2
)
)
))))
Min
=SMALL(IF(LEFT(
ROW(
INDIRECT(
A2&":"&B2
)
),
INT(
LEN(
& ROW(
INDIRECT(
A2&":"&B2
)
)
)/2
)
)=LEFT(TEXT(MMULT(RIGHT(
INT(
RIGHT(
ROW(
INDIRECT(
A2&":"&B2
)
),
INT(
LEN(
ROW(
INDIRECT(
A2&":"&B2
)
)
)/2
)
)/10^SEQUENCE(
,
15,
0
)
)
)*1,
10^(15-ROW(
$1:$15
))),
REPT(
0,
15
)),
LEN(
RIGHT(
ROW(
INDIRECT(
A2&":"&B2
)
),
INT(
LEN(
ROW(
INDIRECT(
A2&":"&B2
)
)
)/2
)
)
)),
ROW(
INDIRECT(
A2&":"&B2
)
)),
1)
Max
=LARGE(IF(LEFT(
ROW(
INDIRECT(
A2&":"&B2
)
),
INT(
LEN(
ROW(
INDIRECT(
A2&":"&B2
)
)
)/2
)
)=LEFT(TEXT(MMULT(RIGHT(
INT(
RIGHT(
ROW(
INDIRECT(
A2&":"&B2
)
),
INT(
LEN(
ROW(
INDIRECT(
A2&":"&B2
)
)
)/2
)
)/10^SEQUENCE(
,
15,
0
)
)
)*1,
10^(15-ROW(
$1:$15
))),
REPT(
0,
15
)),
LEN(
RIGHT(
ROW(
INDIRECT(
A2&":"&B2
)
),
INT(
LEN(
ROW(
INDIRECT(
A2&":"&B2
)
)
)/2
)
)
)),
ROW(
INDIRECT(
A2&":"&B2
)
)),
1)
Solving the challenge of Count Palindromes in Range with Python in Excel
Python in Excel solution 1 for Count Palindromes in Range, proposed by Alejandro Campos:
def is_palindrome(n):
s = str(n)
return s == s[::-1]
def find_palindromes_in_range(start, end):
palindromes = [num for num in range(start, end + 1) if is_palindrome(num)]
count = len(palindromes)
if count > 0:
min_palindrome = min(palindromes)
max_palindrome = max(palindromes)
else:
min_palindrome = None
max_palindrome = None
return count, min_palindrome, max_palindrome
ranges = [
(10, 100),
(28, 178),
(78, 499),
(234, 655),
(1000, 20000)
]
data = []
for start, end in ranges:
count, min_palindrome, max_palindrome = find_palindromes_in_range(start, end)
data.append({
'Count': count,
'Min': min_palindrome,
'Max': max_palindrome
})
df = pd.DataFrame(data)
df
Solving the challenge of Count Palindromes in Range with SQL
SQL solution 1 for Count Palindromes in Range, proposed by Zoran Milokanović:
WITH /* Microsoft SQL Server 2019 */
NUMBERS
AS
(
SELECT
D."FROM" AS NUM
,D."FROM"
,D."TO"
FROM DATA D
UNION ALL
SELECT
N.NUM + 1 AS NUM
,N."FROM"
,N."TO"
FROM NUMBERS N
WHERE
N.NUM < N."TO"
)
SELECT
COUNT(*) AS COUNT
,MIN(N.NUM) AS MIN
,MAX(N.NUM) AS MAX
FROM NUMBERS N
WHERE
N.NUM = REVERSE(N.NUM)
AND LEN(N.NUM) > 1
GROUP BY
N."FROM"
ORDER BY
N."FROM"
OPTION (MAXRECURSION 32000)
;
&
