Find first 50 numbers where both the number and its reversed number are – Even – Perfect squares Ex. 44100 – This is even and its reversed number 00144 is also even. Square roots of 44100 is 2100 and of 00144 is 12 which are perfect squares.
📌 Challenge Details and Links
ExcelBI Excel Challenge Number: 565
Challenge Difficulty: ⭐️⭐️⭐️
📥Download Sample File
📥Link to the solutions on LinkedIn
Solving the challenge of Reversed Even Perfect Squares with Power Query
Power Query solution 1 for Reversed Even Perfect Squares, proposed by Kris Jaganah:
let
A = Table.FromColumns(
{
List.FirstN(
List.RemoveNulls(
List.Transform(
{10 .. 25000},
each
let
a = Number.Power(_, 2),
b = Number.Sqrt(Number.From(Text.Reverse(Text.From(a))))
in
if Number.Mod(b, 1) = 0 and Number.IsEven(a) and Number.IsEven(b) then a else null
)
),
50
)
},
{"Expected Answer"}
)
in
A
Power Query solution 2 for Reversed Even Perfect Squares, proposed by Alejandro Simón 🇵🇦 🇪🇸:
let
Source = Table.Combine(
List.Skip(
List.Generate(
() => [x = 4, y = 0, z = 0],
each [y] <= 50,
each [
x = [x] + 2,
z = [x] * [x],
y =
if Number.Mod(Number.Sqrt(Number.From(Text.Reverse(Text.From(z)))), 2) = 0 then
[y] + 1
else
[y]
],
each Table.FromRows({Record.ToList([[z], [y]])})
)
)
),
Sol = Table.Skip(Table.Group(Source, "Column2", {{"A", each [Column1]{0}}}))[A]
in
Sol
Power Query solution 3 for Reversed Even Perfect Squares, proposed by Abdallah Ally:
let
RevPerfectEven = (n) =>
[
a = Number.From(Text.Reverse(Text.From(n))),
b = Number.Sqrt(a),
c = n > 9 and b = Number.Round(b) and Number.IsEven(a)
][c],
Result = List.RemoveNulls(
List.Generate(
() => [num = 2, cond = RevPerfectEven(num * num), count = 0],
each [count] <= 50,
each [num = [num] + 2, cond = RevPerfectEven(num * num), count = [count] + Byte.From(cond)],
each if [cond] then [num] * [num] else null
)
)
in
Result
Power Query solution 4 for Reversed Even Perfect Squares, proposed by Abdallah Ally:
let
// Function to check if a number and its reverse are even perfect squares
IsPerfectEvenNumRev = (num) =>
[
a = Number.From(Text.Reverse(Text.From(num))),
b = Number.Round(Number.Sqrt(num)) = Number.Sqrt(num) and Number.IsEven(num),
c = Number.Round(Number.Sqrt(a)) = Number.Sqrt(a) and Number.IsEven(a),
d = b and c
][d],
// Recursive function to generate the first n numbers given n (size)
Generate = (size, end) =>
[
a = List.Transform({4 .. end}, each Number.Power(2 * _, 2)),
b = List.Select(a, each IsPerfectEvenNumRev(_)),
c = if List.Count(b) >= size then List.FirstN(b, size) else @Generate(size, end * 10)
][c],
Result = Generate(50, 100)
in
Result
Power Query solution 5 for Reversed Even Perfect Squares, proposed by Tyler N.:
let
a = (x) =>
let
b = Number.RoundDown(Number.Log10(x) + 1),
c = List.Sum(
List.Transform(
{1 .. b},
each
let
d = Number.Power(10, _),
e = Number.Power(10, b - _) * Number.IntegerDivide(Number.Mod(x, d), d / 10)
in
e
)
)
in
c,
f = List.Transform(
{5 .. 10554},
each
let
g = Number.Power(_ * 2, 2),
h = Number.Sqrt(a(g)),
i = Int8.From(Number.IsEven(g)),
j = Int8.From(Number.IsEven(h)),
k = Int8.From(Number.Mod(h, 1) = 0),
l = {null, g}
in
l{i * j * k}
)
in
List.RemoveNulls(f)
Solving the challenge of Reversed Even Perfect Squares with Excel
Excel solution 1 for Reversed Even Perfect Squares, proposed by Bo Rydobon 🇹🇭:
=LET(s,SEQUENCE(11000,,4,2)^2,r,BYROW(MID(s,10-SEQUENCE(,9),1),CONCAT)^0.5,FILTER(s,ISEVEN(r)*(INT(r)=r)))
Excel solution 2 for Reversed Even Perfect Squares, proposed by John V.:
=LET(s,SEQUENCE,b,s(10551,,4,2)^2,i,BYROW(MID(b,10-s(,9),1),CONCAT)^0.5,TOCOL(b/ISEVEN(i)/(i=INT(i)),2))
Excel solution 3 for Reversed Even Perfect Squares, proposed by Kris Jaganah:
=TAKE(TOCOL(MAP(SEQUENCE(25000,,10)^2,LAMBDA(x,LET(a,CONCAT(MID(x,SEQUENCE(LEN(x),,LEN(x),-1),1))^0.5,x/((MOD(a,1)=0)*ISEVEN(a)*ISEVEN(x))))),3),50)
Excel solution 4 for Reversed Even Perfect Squares, proposed by Julian Poeltl:
=LET(S,
SEQUENCE(
11^4,
,
4,
2
),
SS,
S^2,
TAKE(FILTER(SS,
MAP(SS,
LAMBDA(A,
LET(R,
--CONCAT(
MID(
A,
SEQUENCE(
LEN(
A
),
,
LEN(
A
),
-1
),
1
)
),
ISEVEN(
R
)*(MOD(
SQRT(
R
),
1
)=0))))),
50))
Excel solution 5 for Reversed Even Perfect Squares, proposed by Timothée BLIOT:
=LET(A,
SEQUENCE(
10^5,
,
4,
2
)^2,
B,
MAP(
A,
LAMBDA(
x,
CONCAT(
MID(
x,
12-SEQUENCE(
11
),
1
)
)
)
),
TAKE(FILTER(A,
(B^0.5=INT(
B^0.5
))*ISEVEN(
B^0.5
)),
50))
Excel solution 6 for Reversed Even Perfect Squares, proposed by Hussein SATOUR:
=LET(L,
LEN,
I,
ISEVEN,
S,
SORT,
a,
SEQUENCE(
21102
),
b,
POWER(
a,
2
),
c,
MAP(
b,
LAMBDA(
x,
--CONCAT(
MID(
x,
SEQUENCE(
L(
x
),
,
L(
x
),
-1
),
1
)
)
)
),
FILTER(b,
MAP(b,
c,
LAMBDA(x,
y,
I(
x
)*I(
y
)*(S(
y
)=INT(
S(
y
)
))))))
Excel solution 7 for Reversed Even Perfect Squares, proposed by Sunny Baggu:
=LET(
_s, SEQUENCE(11000, , 20, 2) ^ 2,
_rs, MAP(
_s,
LAMBDA(a, CONCAT(MID(a, LEN(a) + 1 - SEQUENCE(LEN(a)), 1)) + 0)
),
TAKE(
FILTER(
_s,
ISEVEN(--_s) * ISEVEN(--_rs) *
(SQRT(_s) = INT(SQRT(_s)) * (SQRT(_rs) = INT(SQRT(_rs))))
),
50
)
)
Excel solution 8 for Reversed Even Perfect Squares, proposed by LEONARD OCHEA 🇷🇴:
=LET(S,
SEQUENCE,
t,
S(
10542,
,
20,
2
)^2,
i,
MAP(
t,
LAMBDA(
x,
CONCAT(
MID(
x,
10-S(
9
),
1
)
)
)
)^0.5,
TOCOL(t/(i=INT(
i
))/ISEVEN(
i
),
3))
Excel solution 9 for Reversed Even Perfect Squares, proposed by Md. Zohurul Islam:
=LET(
num,
SEQUENCE(
11000,
,
20,
2
)^2,
a,
EXACT(
SQRT(
num
),
INT(
SQRT(
num
)
)
),
rev,
MAP(
num,
LAMBDA(
x,
ABS(
CONCAT(
MID(
x,
SEQUENCE(
,
LEN(
x
),
LEN(
x
),
-1
),
1
)
)
)
)
),
b,
ISEVEN(
rev
),
c,
EXACT(
SQRT(
rev
),
INT(
SQRT(
rev
)
)
),
d,
a*b*c,
e,
FILTER(
num,
d>0
),
f,
SEQUENCE(
COUNTA(
e
)
),
result,
FILTER(
e,
f<=50
),
result
)
Excel solution 10 for Reversed Even Perfect Squares, proposed by Hamidi Hamid:
=LET(n,SEQUENCE(21200,,2,2),v,REDUCE(,n^2,LAMBDA(a,b,VSTACK(a,IF(AND(ISEVEN(CONCAT(SORTBY(MID(b,SEQUENCE(,LEN(b)),1),-SEQUENCE(,LEN(b))))*1),ISEVEN(CONCAT(SORTBY(MID(b,SEQUENCE(,LEN(b)),1),-SEQUENCE(,LEN(b)))*1)),SQRT(CONCAT(SORTBY(MID(b,SEQUENCE(,LEN(b)),1),-SEQUENCE(,LEN(b))))*1)=INT(SQRT(CONCAT(SORTBY(MID(b,SEQUENCE(,LEN(b)),1),-SEQUENCE(,LEN(b)))))*1)),b,"")))),DROP(DROP(FILTER(v,v<>"",),1),-15))
Solving the challenge of Reversed Even Perfect Squares with Python
Python solution 1 for Reversed Even Perfect Squares, proposed by Konrad Gryczan, PhD:
import pandas as pd
import math
path = "565 Even Number and Reversal Perfect Square.xlsx"
test = pd.read_excel(path, usecols="A", nrows=51)
def is_even(x):
return x % 2 == 0
def is_perfect_square(x):
sqrt_x = math.sqrt(x)
return sqrt_x == int(sqrt_x)
def reverse_number(x):
return int(str(x)[::-1])
def find_even_reverse_perfect_squares(n_required):
results = []
n = 10
while len(results) < n_required:
square = n ** 2
reverse_square = reverse_number(square)
if is_even(square) and is_even(reverse_square) and is_perfect_square(reverse_square):
results.append({'original': square, 'reverse': reverse_square})
n += 1
return results
result = pd.DataFrame(find_even_reverse_perfect_squares(50))
print(result['original'].equals(test['Expected Answer']))
# True
Solving the challenge of Reversed Even Perfect Squares with Python in Excel
Python in Excel solution 1 for Reversed Even Perfect Squares, proposed by Alejandro Campos:
import math
def even_rev_perf_sqrs(req_n):
is_even = lambda x: x % 2 == 0
is_perfect_square = lambda x: math.isqrt(x) ** 2 == x
reverse_number = lambda x: int(str(x)[::-1])
results, n = [], 10
while len(results) < req_n:
sqr = n ** 2
rev_sqr = reverse_number(sqr)
if is_even(sqr) and is_even(rev_sqr) and is_perfect_square(rev_sqr):
results.append({'Number': sqr, 'Reverse': rev_sqr})
n += 1
return results
result = pd.DataFrame(even_rev_perf_sqrs(50))
result
Python in Excel solution 2 for Reversed Even Perfect Squares, proposed by Abdallah Ally:
from math import sqrt, isqrt
# Create a function to identify numbers in question
def is_perf_rev_num(num):
rev = int(str(num)[::-1])
cond = sqrt(rev) == isqrt(rev) and not rev % 2
return cond
# Perform data manipulation
numbers = []
num = 4
while len(numbers) < 50:
if is_perf_rev_num(num ** 2):
numbers.append(num * num)
num += 2
df = pd.DataFrame({'Numbers': numbers})
df
Solving the challenge of Reversed Even Perfect Squares with R
R solution 1 for Reversed Even Perfect Squares, proposed by Konrad Gryczan, PhD:
library(tidyverse)
library(readxl)
path = "Excel/565 Even Number and Reversal Perfect Square.xlsx"
test = read_excel(path, range = "A1:A51")
is_even = function(x) {
x %% 2 == 0
}
is_perfect_square = function(x) {
sqrt_x = sqrt(x)
sqrt_x == floor(sqrt_x)
}
reverse_number = function(x) {
as.numeric(paste(rev(strsplit(as.character(x), NULL)[[1]]), collapse = ""))
}
find_even_reverse_perfect_squares = function(n_required) {
results = vector("list", n_required)
count = 1
n = 10
while (count <= n_required) {
square = n^2
reverse_square = reverse_number(square)
if (is_even(square) && is_even(reverse_square) &&
is_perfect_square(reverse_square)) {
results[[count]] = list(original = square, reverse = reverse_square)
count = count + 1
}
n = n + 1
}
return(results)
}
result = find_even_reverse_perfect_squares(50) %>%
map_df(~ .x)
all.equal(result$original, test$`Expected Answer`)
# [1] TRUE
Solving the challenge of Reversed Even Perfect Squares with Excel VBA
Excel VBA solution 1 for Reversed Even Perfect Squares, proposed by Nicolas Micot:
VBA solution:
Sub test()
Dim nbATrouver
Dim Nombres As New Collection
Dim carreInverse
nbATrouver = 50
nombre = 11
While Nombres.Count < nbATrouver
carre = nombre ^ 2
carreInverse = CDbl(StrReverse(carre))
If carre Mod 2 = 0 And carreInverse Mod 2 = 0 And Sqr(carreInverse) 1 = Sqr(carreInverse) / 1 Then
Nombres.Add carre
End If
nombre = nombre + 1
Wend
ReDim tableau(1 To nbATrouver, 1 To 1)
For i = 1 To nbATrouver
tableau(i, 1) = Nombres(i)
Next i
Range("B2").Resize(nbATrouver, 1).Value = tableau
End Sub
&&&
