A Cyclops number is a number that has a zero in the center (so, it needs to have odd number of digits). The 0 should not appear anywhere else other than in center. They are named after one eyed giants Cyclops from Greek mythology. Ex. 79051 A Palindromic number is a number which is same even when read from backwards. Ex. 674476 Find the list of first 1000 Palindromic Cyclops number.
📌 Challenge Details and Links
ExcelBI Excel Challenge Number: 370
Challenge Difficulty: ⭐️
📥Download Sample File
📥Link to the solutions on LinkedIn
Solving the challenge of List Cyclops Palindromic Numbers with Power Query
Power Query solution 1 for List Cyclops Palindromic Numbers, proposed by John V.:
let
T = List.Transform, L = Text.Length,
n = T({1..1331}, each let a = Text.From(_) in a & "0" & Text.Reverse(a)),
R = List.Select(n, each L(_) - L(Text.Replace(_, "0", "")) = 1)
in
Table.FromColumns({T(R, each Number.From(_))})
Blessings!
Power Query solution 2 for List Cyclops Palindromic Numbers, proposed by Aditya Kumar Darak 🇮🇳:
let
Generate = List.Generate(
() => [a = 1, b = 1, c = 101],
each [b] <= 1000,
each [
a = [a] + 1,
T = Text.From(a),
TF = Number.Mod(a, 10) <> 0 and not Text.Contains(T, "0"),
b = [b] + Number.From(TF),
c = if TF then Number.From(T & "0" & Text.Reverse(T)) else null
],
each [c]
),
Return = List.RemoveNulls(Generate)
in
Return
Power Query solution 3 for List Cyclops Palindromic Numbers, proposed by Alejandro Simón 🇵🇦 🇪🇸:
let
Source = List.RemoveNulls(
List.Skip(
List.Generate(
() => [x = 0, y = 0, z = 0],
each [z] <= 1000,
each [
x = [x] + 1,
y =
if Text.Contains(Text.From(x), "0") then
null
else
Number.From(Text.From(x) & "0" & Text.Reverse(Text.From(x))),
z = if y = null then [z] else [z] + 1
],
each [y]
)
)
)
in
Source
Power Query solution 4 for List Cyclops Palindromic Numbers, proposed by Brian Julius:
let
Source = Table.FromList(
{1 .. 1500},
Splitter.SplitByNothing(),
{"Numbers"},
Text.Type,
ExtraValues.Error
),
AddAnswer = Table.AddColumn(
Source,
"Answer",
each [
a = Text.From([Numbers]),
b = if Text.Contains(a, "0") then null else a & "0" & Text.Reverse(a)
][b]
),
FilterNulls = Table.SelectRows(AddAnswer, each ([Answer] <> null)),
Clean = Table.RemoveColumns(Table.FirstN(FilterNulls, 1000), "Numbers")
in
Clean
Power Query solution 5 for List Cyclops Palindromic Numbers, proposed by Ramiro Ayala Chávez:
let
a = List.Transform({1 .. 1331}, Text.From),
b = List.Select(a, each not Text.Contains(_, "0")),
c = List.Transform(b, each Text.Reverse(_)),
d = List.Repeat({"0"}, List.Count(c)),
e = List.Transform({0 .. List.Count(d) - 1}, each b{_} & d{_} & c{_}),
Sol = Table.TransformColumnTypes(
Table.FromColumns({e}, {"Expected Answer"}),
{{"Expected Answer", Int64.Type}}
)
in
Sol
Power Query solution 6 for List Cyclops Palindromic Numbers, proposed by Glyn Willis:
let
Source = List.Select({1 .. 1331}, each not Text.Contains(Text.From(_), "0")),
Custom1 = List.Transform(Source, each Text.From(_) & "0" & Text.Reverse(Text.From(_))),
#"Converted to Table" = Table.FromList(
Custom1,
Splitter.SplitByNothing(),
null,
null,
ExtraValues.Error
),
#"Changed Type" = Table.TransformColumnTypes(#"Converted to Table", {{"Column1", Int64.Type}})
in
#"Changed Type"
Solving the challenge of List Cyclops Palindromic Numbers with Excel
Excel solution 1 for List Cyclops Palindromic Numbers, proposed by Bo Rydobon 🇹🇭:
=LET(
s,
SEQUENCE(
,
9
),
TAKE(
DROP(
SORT(
--TOCOL(
REDUCE(
0,
DROP(
s,
,
5
),
LAMBDA(
a,
v,
HSTACK(
a,
TOCOL(
s&TAKE(
a,
,
-1
)&s
)
)
)
),
3
)
),
1
),
1000
)
)
Excel solution 2 for List Cyclops Palindromic Numbers, proposed by Rick Rothstein:
=LET(
s,
SEQUENCE(
2000
),
n,
FILTER(
s,
ISERR(
FIND(
0,
s
)
)
),
r,
MAP(
n,
LAMBDA(
x,
CONCAT(
MID(
x,
SEQUENCE(
LEN(
x
),
,
LEN(
x
),
-1
),
1
)
)
)
),
TAKE(
MAP(
n,
r,
LAMBDA(
a,
b,
a&0&b
)
),
1000
)
)
Excel solution 3 for List Cyclops Palindromic Numbers, proposed by John V.:
=LET(
s,
ROW(
1:1331
),
--FILTER(
s&0&BYROW(
MID(
s,
{4,
3,
2,
1},
1
),
CONCAT
),
ISERR(
FIND(
0,
s
)
)
)
)
Excel solution 4 for List Cyclops Palindromic Numbers, proposed by محمد حلمي:
=--TOCOL(
MAP(
SEQUENCE(
1331
),
LAMBDA(
a,
CONCAT(
a,
0,
MID(
a,
{4,
3,
2,
1},
1
)
)/ISERR(
FIND(
0,
a
)
)
)
),
2
)
Excel solution 5 for List Cyclops Palindromic Numbers, proposed by محمد حلمي:
=--TOCOL(
MAP(
SEQUENCE(
BASE(
10000,
9
)
),
LAMBDA(
a,
CONCAT(
a,
0,
MID(
a,
{4,
3,
2,
1},
1
)
)/ISERR(
FIND(
0,
a
)
)
)
),
2
)
Excel solution 6 for List Cyclops Palindromic Numbers, proposed by محمد حلمي:
=--TOCOL(
MAP(
SEQUENCE(
1331
),
LAMBDA(
a,
CONCAT(
a,
0,
MID(
a,
{4,
3,
2,
1},
1
)
)/ISERR(
FIND(
0,
a
)
)
)
),
2
)
Excel solution 7 for List Cyclops Palindromic Numbers, proposed by Kris Jaganah:
=LET(
a,
1000,
b,
MAP(
SEQUENCE(
a*2
),
LAMBDA(
x,
CONCAT(
x,
0,
MID(
x,
SEQUENCE(
LEN(
x
),
,
LEN(
x
),
-1
),
1
)
)
)
),
--TAKE(
FILTER(
b,
ISNA(
TEXTAFTER(
b,
"0",
2
)
)
),
a
)
)
Excel solution 8 for List Cyclops Palindromic Numbers, proposed by Julian Poeltl:
=TAKE(LET(S,
SEQUENCE(
10000
),
SOS,
UNIQUE(
SORT(
VSTACK(
S&0&S,
S&0&MAP(
S,
LAMBDA(
B,
E_ReverseString(
B
)
)
)
)*1
)
),
CO,
LEN(
SOS
)-LEN(
SUBSTITUTE(
SOS,
0,
""
)
),
IP,
MAP(
SOS,
LAMBDA(
A,
E_ISPalindrome(
A
)
)
),
FILTER(SOS,
(CO=1)*(IP=TRUE))),
1000)
Pre-programmed Lambdas:
E_ReverseString:
=LAMBDA(String,
CONCAT(MID(String,
SEQUENCE,
(,
LEN(
String
),
LEN(
String
),
-1),
1)))
E_ISPalindrome:
=LAMBDA(PAL?,
LET(Text,
PAL?,
L,
LEFT(Text,
ROUNDUP((LEN(
Text
)-1)/2,
0)),
R,
CONCAT(L_ReverseHorizontalArray(MID(RIGHT(Text,
ROUNDUP((LEN(
Text
)-1)/2,
0)),
SEQUENCE(,
LEN(RIGHT(Text,
ROUNDUP((LEN(
Text
)-1)/2,
0)))),
1))),
RES,
L=R,
RES))
L_ReverseHorizontalArray:
=LAMBDA(
Array,
TRANSPOSE(
INDEX(
TRANSPOSE(
Array
),
SEQUENCE(
ROWS(
TRANSPOSE(
Array
)
),
1,
ROWS(
TRANSPOSE(
Array
)
),
-1
),
SEQUENCE(
1,
COLUMNS(
TRANSPOSE(
Array
)
)
)
)
)
)
Excel solution 9 for List Cyclops Palindromic Numbers, proposed by Timothée BLIOT:
=LET(A,SEQUENCE(10^4),B,TAKE(FILTER(A,MAP(A,LAMBDA(x,ISERR(FIND(0,x))))),10^3),B&0&MAP(B,LAMBDA(x,CONCAT(MID(x,SEQUENCE(LEN(x),,LEN(x),-1),1)))))
Excel solution 10 for List Cyclops Palindromic Numbers, proposed by Hussein SATOUR:
=--LET(
a,
SEQUENCE(
10000
),
b,
TAKE(
FILTER(
a,
ISERROR(
SEARCH(
"0",
a
)
)
),
1000
),
MAP(
b,
LAMBDA(
x,
x&"0"&CONCAT(
MID(
x,
SEQUENCE(
LEN(
x
),
,
LEN(
x
),
-1
),
1
)
)
)
)
)
Excel solution 11 for List Cyclops Palindromic Numbers, proposed by Sunny Baggu:
=LET(
_s1,
SEQUENCE(
1331
),
_s2,
FILTER(
_s1,
ISERR(
MAP(
_s1,
LAMBDA(
a,
FIND(
0,
a
)
)
)
)
),
_s3,
MAP(
_s2,
LAMBDA(
a,
CONCAT(
MID(
a,
LEN(
a
) + 1 - SEQUENCE(
LEN(
a
)
),
1
)
)
)
),
(_s2 & 0 & _s3) + 0
)
Excel solution 12 for List Cyclops Palindromic Numbers, proposed by 🇵🇪 Ned Navarrete C.:
=LET(
s,
SEQUENCE(
2^11
),
m,
FILTER(
s,
ISERR(
SEARCH(
0,
s
)
)
),
n,
MAP(
m,
LAMBDA(
r,
CONCAT(
MID(
r,
10-SEQUENCE(
9
),
1
)
)
)
),
--TAKE(
m&0&n,
1000
)
)
Excel solution 13 for List Cyclops Palindromic Numbers, proposed by Pieter de B.:
=TOCOL(
MAP(
SEQUENCE(
1331
),
LAMBDA(
a,
IFS(
ISERR(
FIND(
0,
a
)
),
a&0&CONCAT(
MID(
a,
SEQUENCE(
LEN(
a
),
,
LEN(
a
),
-1
),
1
)
)
)
)
),
2
)
Excel solution 14 for List Cyclops Palindromic Numbers, proposed by Charles Roldan:
=LET(
M,
LAMBDA(
f,
f(
f
)
),
O,
LAMBDA(
f,
LAMBDA(
x,
MAP(
x,
&f
)
)
),
A,
LAMBDA(
f,
LAMBDA(
x,
SCAN(
,
x,
f
)
)
),
K,
LAMBDA(
f,
LAMBDA(
x,
[y],
f(
x
)
)
),
S,
LAMBDA(
f,
M(
LAMBDA(
g,
LAMBDA(
x,
IF(
f(
x + 1
),
x + 1,
g(
g
)(
x + 1
)
)
)
)
)
),
_Cyclopify,
O(M(LAMBDA(f,
LAMBDA(x,
LEFT(
x
) & IF(x = "",
"0",
f(
f
)(REPLACE(
x,
1,
1,
))) & LEFT(
x
))))),
_NextNoZero,
A(
K(
S(
LAMBDA(
x,
ISERR(
FIND(
"0",
x
)
)
)
)
)
),
--_Cyclopify(
_NextNoZero(
SEQUENCE(
1000
)
)
)
)
Excel solution 15 for List Cyclops Palindromic Numbers, proposed by Charles Roldan:
=LET(
_NextNoZero, LAMBDA(f, f(f))(
LAMBDA(f, LAMBDA(x, IF(ISERR(SEARCH("0", x + 1)), x + 1, f(f)(x + 1))))
),
Left, SCAN(, SEQUENCE(1000), LAMBDA(x, _, _NextNoZero(x))),
_Reverse, LAMBDA(x, CONCAT(MID(x, SORT(SEQUENCE(LEN(x)), , -1), 1))),
MAP(Left, LAMBDA(x, --(x & 0 & _Reverse(x))))
)
Excel solution 16 for List Cyclops Palindromic Numbers, proposed by Bilal Mahmoud kh.:
=LET(
x,
SEQUENCE(
1000
),
y,
FILTER(
x,
MOD(
x,
10
)<>0
),
z,
MAP(
y,
LAMBDA(
x,
CONCAT(
MID(
x,
SEQUENCE(
LEN(
x
),
,
LEN(
x
),
-1
),
1
)
)
)
),
y&"0"&z
)
Excel solution 17 for List Cyclops Palindromic Numbers, proposed by JvdV -:
=--TOCOL(
LET(
s,
ROW(
1:1331
),
s&0&BYROW(
MID(
s,
{4,
3,
2,
1},
1
),
CONCAT
)/ISERR(
FIND(
0,
s
)
)
),
2
)
Excel solution 18 for List Cyclops Palindromic Numbers, proposed by Stefan Olsson:
=QUERY(
{
BYROW(
SEQUENCE(
1331
),
LAMBDA(
s,
REGEXREPLACE(
s&"0",
"([1-9])([1-9])?([1-9])?([1-9])?([0])",
"$1$2$3$4$5$4$3$2$1"
)
)
)
},
"Where Not Col1 Matches '.*0.*0.*'",
0
)
Excel solution 19 for List Cyclops Palindromic Numbers, proposed by Stefan Olsson:
=BYROW(
QUERY(
{SEQUENCE(
99999
)},
"Where Col1 Matches '^[1-9]+$' Limit 1000",
0
),
LAMBDA(
s,
--REGEXREPLACE(
s&"0",
"([1-9])([1-9])?([1-9])?([1-9])?([1-9])?([0])$",
"$1$2$3$4$5$6$5$4$3$2$1"
)
)
)
Excel solution 20 for List Cyclops Palindromic Numbers, proposed by Giorgi Goderdzishvili:
=LET(
_arr,SEQUENCE(2000),
_fl, FILTER(_arr, ISERROR(FIND(0,_arr))),
_rv, MAP(_fl,LAMBDA(x,
CONCAT(MID(x,SEQUENCE(,LEN(x),LEN(x),-1),1)))),
_fn, TAKE(_fl&0&_rv,1000)*1,
_fn)
Excel solution 21 for List Cyclops Palindromic Numbers, proposed by Edwin Tisnado:
=TOCOL(SCAN(0,
SEQUENCE(
1331
),
LAMBDA(x,
y,
LET(s,
SEQUENCE(
LEN(
y
)
),
t,
-MID(
y,
s,
1
),
(y&0&CONCAT(
-SORTBY(
t,
-s
)
))/AND(
-t
)))),
2)
Excel solution 22 for List Cyclops Palindromic Numbers, proposed by Diarmuid Early:
=LET(seq,
SEQUENCE(
BASE(
1000,
9
)
),
strt,
FILTER(
seq,
ISERROR(
SEARCH(
0,
seq
)
)
),
1*(strt&0&BYROW(
MID(
strt,
SEQUENCE(
,
4,
4,
-1
),
1
),
CONCAT
)))
strt is the list of numbers that comes before the 0,
and the BYROW reverses them.
Since there are no zeroes,
it's like a base-9 number,
hence the biggest number is 1000 in base 9 (1331)
Excel solution 23 for List Cyclops Palindromic Numbers, proposed by LUIS FLORENTINO COUTO CORTEGOSO:
=LET(
f,
LAMBDA(
f,
x,
y,
z,
o,
IF(
z>0,
f(
f,
IF(
o,
TOCOL(
x&y
),
TOCOL(
y&x
)
),
y,
z-1,
o
),
x
)
),
s,
SEQUENCE(
9,
,
1,
1
),
TAKE(
REDUCE(
s&"0"&s,
{1;2;3},
LAMBDA(
a,
i,
VSTACK(
a,
f(
f,
s,
TRANSPOSE(
s
),
i,
1
)&0&f(
f,
s,
TRANSPOSE(
s
),
i,
0
)
)
)
),
1000
)
)
Excel solution 24 for List Cyclops Palindromic Numbers, proposed by Md Ismail Hosen:
=LAMBDA(N,
LET(Next_Number,
LAMBDA(prev_number,
LET(incr_no_zero,
LAMBDA(
Number,
fx_rec,
IF(
ISNUMBER(
SEARCH(
0,
Number + 1
)
),
fx_rec(
Number + 1,
fx_rec
),
Number + 1
)
),
left_part,
incr_no_zero(LEFT(prev_number,
(LEN(
prev_number
) - 1) / 2),
incr_no_zero),
right_part,
TEXTJOIN(
"",
TRUE,
MID(
left_part,
SEQUENCE(
LEN(
left_part
),
,
LEN(
left_part
),
-1
),
1
)
),
next_number,
left_part & "0" & right_part,
next_number * 1)),
Result,
REDUCE(
{101},
SEQUENCE(
N - 1
),
LAMBDA(
a,
c,
VSTACK(
a,
Next_Number(
INDEX(
a,
c,
1
)
)
)
)
),
Result))(1000)
Excel solution 25 for List Cyclops Palindromic Numbers, proposed by Hazem Hassan:
=TAKE(
TOCOL(
MAP(
SEQUENCE(
1500
),
LAMBDA(
x,
IF(
ISERR(
FIND(
0,
x
)
),
x & 0 &
CONCAT(
MID(
x,
SORT(
SEQUENCE(
LEN(
x
)
),
,
-1
),
1
)
),
1 / 0
)
)
),
3
),
10 ^ 3
)
Excel solution 26 for List Cyclops Palindromic Numbers, proposed by Hazem Hassan:
=LET(
a,
SEQUENCE(
1500
),
b,
TAKE(
FILTER(
a,
ISERR(
FIND(
0,
a
)
)
),
10 ^ 3
),
b & 1 - SEQUENCE(
10 ^ 3
) ^ 0 &
BYROW(
MID(
b,
SORT(
SEQUENCE(
,
MAX(
LEN(
b
)
)
),
,
-1,
1
),
1
),
CONCAT
)
)
Excel solution 27 for List Cyclops Palindromic Numbers, proposed by Josh Brodrick:
=LET(
array,
MAP(
SEQUENCE(
1000000,
,
100
),
LAMBDA(
x,
IF(
AND(
LEN(
x
)=3,
MID(
x,
2,
1
)="0",
MID(
x,
1,
1
)=MID(
x,
3,
1
)
),
x,
IF(
AND(
LEN(
x
)=5,
MID(
x,
3,
1
)="0",
MID(
x,
{1,
2},
1
)=MID(
x,
{5,
4},
1
)
),
x,
IF(
AND(
LEN(
x
)=7,
MID(
x,
4,
1
)="0",
MID(
x,
{1,
2,
3},
1
)=MID(
x,
{7,
6,
5},
1
)
),
x,
IF(
AND(
LEN(
x
)=9,
MID(
x,
5,
1
)="0",
MID(
x,
{1,
2,
3,
4},
1
)=MID(
x,
{9,
8,
7,
6},
1
)
),
x,
0
)
)
)
)
)
),
FILTER(
array,
array<>0
)
)
Excel solution 28 for List Cyclops Palindromic Numbers, proposed by Arden Nguyen, CPA:
=LET(
n,
1000,
a,
LAMBDA(_a,
_b,
_s,
IF(
ROWS(
_a
) < n,
_s(
VSTACK(
_a,
HSTACK(
INT(SEQUENCE(9 ^ (_b + 1),
,
,
1 / 9 ^ (_b))),
INDEX(
TAKE(_a,
-(9 ^ (_b))),
MOD(SEQUENCE(9 ^ (_b + 1)) - 1,
9 ^ _b) + 1,
SEQUENCE(
1,
COLUMNS(
_a
)
)
)
)
),
_b + 1,
_s
),
TAKE(
_a,
n
)
)
),
b,
IFNA(
a(
SEQUENCE(
9
),
1,
a
),
""
),
c,
SORTBY(
b,
SEQUENCE(
,
COLUMNS(
b
),
,
-1
)
),
d,
BYROW(
HSTACK(
b,
SEQUENCE(
ROWS(
b
),
,
0,
0
),
c
),
LAMBDA(
_r,
CONCAT(
_r
)
)
),
d + 0
)
Excel solution 29 for List Cyclops Palindromic Numbers, proposed by Tyler Cameron:
=LET(
data,
MAP(
SEQUENCE(
100000,
,
1
),
LAMBDA(
array,
IFERROR(
IF(
SEARCH(
0,
array
)>0,
0
),
CONCAT(
array,
0,
TEXTJOIN(
"",
1,
MID(
array,
{10,
9,
8,
7,
6,
5,
4,
3,
2,
1},
1
)
)
)
)
)
),
FILTER(
data,
data<>0
)
)
Solving the challenge of List Cyclops Palindromic Numbers with Python
Python solution 1 for List Cyclops Palindromic Numbers, proposed by John V.:
Hi everyone!
or
Blessings!
Solving the challenge of List Cyclops Palindromic Numbers with R
R solution 1 for List Cyclops Palindromic Numbers, proposed by Konrad Gryczan, PhD:
Brute force - get a sequence and check all conditions on it
Generative - build numbers on certain conditions
library(tidyverse)
library(stringi)
library(readxl)
test = read_excel("Excel/370 Palindromic Cyclops Number.xlsx", range = "A1:A1001") %>%
mutate(`Expected Answer` = as.integer(`Expected Answer`))
generate_cyclopic_palindromes <- function(n) {
half_parts <- seq(1, 10^n - 1) %>%
keep(~ !str_detect(.x, "0")) %>%
map_chr(~ paste0(.x, "0", stri_reverse(.x))) %>%
as.integer()
half_parts
}
palindromic_cyclopic_numbers <- generate_cyclopic_palindromes(4) %>%
head(1000)
Solving the challenge of List Cyclops Palindromic Numbers with DAX
DAX solution 1 for List Cyclops Palindromic Numbers, proposed by Zoran Milokanović:
EVALUATE
SELECTCOLUMNS(
ADDCOLUMNS(
TOPN(1000, FILTER(GENERATESERIES(1, 1500), SEARCH("0", [Value], 1, 0) = 0)),
"S",
VAR V = CONVERT([Value], STRING)
VAR L = LEN(V)
VAR R = CONCATENATEX(GENERATESERIES(1, L), MID(V, L - [Value] + 1, 1), "")
RETURN
INT(V & "0" & R)
),
"Expected Answer",
[S]
)
&
