ATBASH Palindrome – In ATBASH cipher, we replace a with z, b with y, c with x…..y with b, z with a. Find those texts which are palindrome after doing ATBASH cipher and reversing it. Ex. AMNZ Reversing it gives ZNMA and after applying ATBASH cipher, it becomes AMNZ which is equal to original text i.e. it is a palindrome..
📌 Challenge Details and Links
ExcelBI Excel Challenge Number: 314
Challenge Difficulty: ⭐️
📥Download Sample File
📥Link to the solutions on LinkedIn
Solving the challenge of Find texts that are ATBASH Palindromes with Power Query
Power Query solution 1 for Find texts that are ATBASH Palindromes, proposed by Bo Rydobon 🇹🇭:
let
Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
Ans = Table.SelectRows(
Source,
each Text.Combine(
List.Transform(
Text.ToList(Text.Reverse([Text])),
each Character.FromNumber(155 - Character.ToNumber(_))
)
)
= [Text]
)
in
Ans
Power Query solution 2 for Find texts that are ATBASH Palindromes, proposed by Zoran Milokanović:
let
Source = Excel.CurrentWorkbook(){[Name = "Input"]}[Content],
S = Table.SelectRows(
Source,
each
let
t = [Text],
c = {"A" .. "Z"},
l = Text.Length([Text]) - 1,
p = List.PositionOf,
a = Text.At
in
List.AllTrue(List.Transform({0 .. l}, (i) => 25 - p(c, a(t, l - i)) = p(c, a(t, i))))
)
in
S
Power Query solution 3 for Find texts that are ATBASH Palindromes, proposed by Alejandro Simón 🇵🇦 🇪🇸:
let
Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
Sol = Table.SelectRows(
Source,
each
let
a = Text.ToList([Text]),
b = List.Zip({{"A" .. "Z"}, List.Reverse({"A" .. "Z"})}),
c = List.Reverse(List.ReplaceMatchingItems(a, b))
in
a = c
)
in
Sol
Power Query solution 4 for Find texts that are ATBASH Palindromes, proposed by Luan Rodrigues:
let
Fonte = Tabela1,
sub = List.Zip({{"A" .. "Z"}, List.Reverse({"A" .. "Z"})}),
res = Table.SelectRows(
Fonte,
each [
a = Text.Combine(List.ReplaceMatchingItems(Text.ToList([Text]), sub)),
b = Text.Reverse(a) = [Text]
][b]
)
in
res
Power Query solution 5 for Find texts that are ATBASH Palindromes, proposed by Alexis Olson:
let
Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
Result = Table.SelectRows(
Source,
each [
lst = List.Transform(Text.ToList([Text]), Character.ToNumber),
len = List.Count(lst),
check = List.AllTrue(
List.Transform({1 .. Number.RoundUp(len / 2)}, (i) => lst{i - 1} = 155 - lst{len - i})
)
][check]
)
in
Result
Power Query solution 6 for Find texts that are ATBASH Palindromes, proposed by Ramiro Ayala Chávez:
let
Origen = Excel.CurrentWorkbook(){[Name = "Tabla1"]}[Content],
a = List.Transform(Origen[Text], each Text.ToList(_)),
b = List.Zip({{"A" .. "Z"}, List.Reverse({"A" .. "Z"})}),
c = List.Transform(a, each List.Reverse(List.ReplaceMatchingItems(_, b))),
d = Table.FromColumns({Origen[Text], c}, {"Text", "Answer Expected"}),
e = Table.TransformColumns(
d,
{"Answer Expected", each Text.Combine(List.Transform(_, Text.From))}
),
Sol = Table.SelectRows(e, each [Answer Expected] = [Text])[[Answer Expected]]
in
Sol
Power Query solution 7 for Find texts that are ATBASH Palindromes, proposed by Luke Jarych:
let
Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
ReverseText = Table.AddColumn(Source, "Reverse", each Text.ToList(Text.Reverse([Text]))),
Letters = List.Zip({{"A" .. "Z"}, List.Reverse({"A" .. "Z"})}),
AtbashCipher = Table.AddColumn(
ReverseText,
"AtbashCipher",
each List.Reverse(List.ReplaceMatchingItems([Reverse], Letters))
),
IfTheSame = Table.AddColumn(AtbashCipher, "IfTheSame", each [AtbashCipher] = [Reverse]),
FilteredRows = Table.SelectRows(IfTheSame, each ([IfTheSame] = true))
in
FilteredRows[[Text]]
Solving the challenge of Find texts that are ATBASH Palindromes with Excel
Excel solution 1 for Find texts that are ATBASH Palindromes, proposed by Bo Rydobon 🇹🇭:
=FILTER(
A2:A10,
MAP(
A2:A10,
LAMBDA(
a,
a=CONCAT(
CHAR(
155-CODE(
MID(
a,
LEN(
a
)+1-SEQUENCE(
LEN(
a
)
),
1
)
)
)
)
)
)
)
Excel solution 2 for Find texts that are ATBASH Palindromes, proposed by Rick Rothstein:
=FILTER(
A2:A10,
MAP(
A2:A10,
LAMBDA(
a,
CONCAT(
CHAR(
155-CODE(
MID(
a,
SEQUENCE(
,
LEN(
a
),
LEN(
a
),
-1
),
1
)
)
)
)=a
)
)
)
Excel solution 3 for Find texts that are ATBASH Palindromes, proposed by John V.:
=FILTER(
A2:A10,
MAP(
A2:A10,
LAMBDA(
x,
x=CONCAT(
CHAR(
155-CODE(
MID(
x,
1+LEN(
x
)-SEQUENCE(
LEN(
x
)
),
1
)
)
)
)
)
)
)
Excel solution 4 for Find texts that are ATBASH Palindromes, proposed by محمد حلمي:
=FILTER(
A2:A10,
MAP(
A2:A10,
LAMBDA(
a,
LET(
i,
SEQUENCE(
LEN(
a
)
),
v,
MID(
a,
i,
1
),
AND(
SORTBY(
v,
-i
)=CHAR(
90-MOD(
CODE(
v
)+25,
90
)
)
)
)
)
)
)
Excel solution 5 for Find texts that are ATBASH Palindromes, proposed by Julian Poeltl:
=FILTER(A2:A10,MAP(A2:A10,LAMBDA(T,LET(A,CHAR(SEQUENCE(26,,65)),Z,CHAR(SEQUENCE(26,,90,-1)),L,LEN(T),CONCAT(MID(CONCAT(XLOOKUP(MID(T,SEQUENCE(L),1),A,Z)),SEQUENCE(L,,L,-1),1))=T))))
Excel solution 6 for Find texts that are ATBASH Palindromes, proposed by Timothée BLIOT:
=TOCOL(
MAP(
A2:A10,
LAMBDA(
z,
IF(
CONCAT(
SORTBY(
MAP(
MID(
z,
SEQUENCE(
LEN(
z
)
),
1
),
LAMBDA(
x,
CHAR(
XLOOKUP(
CODE(
x
),
SEQUENCE(
26,
,
65
),
SEQUENCE(
26,
,
90,
-1
)
)
)
)
),
SEQUENCE(
LEN(
z
)
),
-1
)
)=z,
z,
1/0
)
)
),
3
)
Excel solution 7 for Find texts that are ATBASH Palindromes, proposed by Hussein SATOUR:
=FILTER(
A2:A10,
MAP(
A2:A10,
LAMBDA(
x,
LET(
a,
CHAR(
SEQUENCE(
26,
,
65
)
),
b,
CHAR(
SEQUENCE(
26,
,
90,
-1
)
),
c,
MID(
x,
SEQUENCE(
LEN(
x
),
,
LEN(
x
),
-1
),
1
),
CONCAT(
XLOOKUP(
c,
a,
b
)
) = x
)
)
)
)
Excel solution 8 for Find texts that are ATBASH Palindromes, proposed by Sunny Baggu:
=FILTER(
A2:A10,
MAP(
A2:A10,
LAMBDA(
a,
LET(
_ts,
MID(
a,
LEN(
a
) + 1 - SEQUENCE(
LEN(
a
)
),
1
),
CONCAT(
XLOOKUP(
_ts,
CHAR(
SEQUENCE(
26,
,
65
)
),
CHAR(
SEQUENCE(
26,
,
26 + 64,
-1
)
)
)
) = a
)
)
)
)
Excel solution 9 for Find texts that are ATBASH Palindromes, proposed by Abdallah Ally:
=FILTER(
A2:A10,
MAP(
A2:A10,
LAMBDA(
x,
LET(
a,
x,
b,
MID(
a,
SEQUENCE(
LEN(
a
)
),
1
),
c,
XLOOKUP(
b,
CHAR(
SEQUENCE(
26,
,
65
)
),
CHAR(
SEQUENCE(
26,
,
90,
-1
)
)
),
CONCAT(
SORTBY(
c,
SEQUENCE(
COUNTA(
c
)
),
-1
)
)=a
)
)
)
)
Excel solution 10 for Find texts that are ATBASH Palindromes, proposed by 🇵🇪 Ned Navarrete C.:
=FILTER(
A2:A10,
MAP(
A2:A10,
LAMBDA(
r,
r=REDUCE(
"",
MID(
r,
SEQUENCE(
LEN(
r
),
,
LEN(
r
),
-1
),
1
),
LAMBDA(
c,
v,
LET(
abc,
CHAR(
SEQUENCE(
26,
,
65
)
),
c&INDEX(
abc,
27-XMATCH(
v,
abc
)
)
)
)
)
)
)
)
Excel solution 11 for Find texts that are ATBASH Palindromes, proposed by Md. Zohurul Islam:
=LET(z,A2:A10,
u,CHAR(SEQUENCE(26,,65)),
v,CHAR(SEQUENCE(26,,90,-1)),
w,MA&P(z,LAMBDA(x,LET(
sq,SEQUENCE(LEN(x)),
a,MID(x,sq,1),
b,CONCAT(SORTBY(XLOOKUP(a,u,v),sq,-1))=x,b))),
FILTER(z,w))
Excel solution 12 for Find texts that are ATBASH Palindromes, proposed by Pieter de B.:
=FILTER(
A2:A10,
MAP(
A2:A10,
LAMBDA(
a,
CONCAT(
VLOOKUP(
MID(
a,
SEQUENCE(
LEN(
a
),
,
LEN(
a
),
-1
),
1
),
BASE(
HSTACK(
ROW(
10:35
),
45-ROW(
10:35
)
),
36
),
2
)
)=a
)
)
)
Excel solution 13 for Find texts that are ATBASH Palindromes, proposed by Nicolas Micot:
=LET(_inverser;
LAMBDA(
l_texte;
CONCAT(
STXT(
l_texte;
SEQUENCE(
NBCAR(
l_texte
);
;
NBCAR(
l_texte
);
-1
);
1
)
)
);
_cipher;
LAMBDA(l_texte;
CONCAT(CAR(90-(CODE(
STXT(
l_texte;
SEQUENCE(
NBCAR(
l_texte
)
);
1
)
)-65))));
FILTRE(
A2:A10;
MAP(
A2:A10;
LAMBDA(
l_texte;
_inverser(
_cipher(
l_texte
)
)=l_texte
)
)
))
Excel solution 14 for Find texts that are ATBASH Palindromes, proposed by Giorgi Goderdzishvili:
=FILTER(A2:A10,
MAP(A2:A10,
LAMBDA(x,
LET(
txt,
x,
ln,
LEN(
txt
),
cr,
MID(
txt,
SEQUENCE(
,
ln
),
1
),
rv,
CONCAT(
CHAR(
91-CODE(
cr
)+64
)
),
isAn,
SUM(--((LEN(
txt
)-LEN(
SUBSTITUTE(
txt,
cr,
""
)
))=(LEN(
rv
)-LEN(
SUBSTITUTE(
rv,
cr,
""
)
))))=ln,
isAn))))
Excel solution 15 for Find texts that are ATBASH Palindromes, proposed by Edwin Tisnado:
=FILTRAR(
A2:A10,
MAP(
A2:A10,
LAMBDA(
x,
LET(
y,
SECUENCIA(
LARGO(
x
)
),
CONCAT(
CARACTER(
155-CODIGO(
EXTRAE(
x,
y,
1
)
)
)
)=CONCAT(
EXTRAE(
x,
ORDENAR(
y,
,
-1
),
1
)
)
)
)
)
)
Excel solution 16 for Find texts that are ATBASH Palindromes, proposed by Abdelrahman Omer, MBA, PMP:
=TOCOL(
MAP(
A2:A10,
LAMBDA(
w,
FILTER(
w,
w=CONCAT(
SORTBY(
CHAR(
ABS(
CODE(
MID(
w,
SEQUENCE(
LEN(
w
)
),
1
)
)-90
)+65
),
SEQUENCE(
LEN(
w
)
),
-1
)
)
)
)
),
2
)
Excel solution 17 for Find texts that are ATBASH Palindromes, proposed by Daniel Garzia:
=FILTER(
A2:A10,
MAP(
A2:A10,
LAMBDA(
x,
LET(
l,
SEQUENCE(
LEN(
x
)
),
x=CONCAT(
SORTBY(
INDEX(
CHAR(
91-ROW(
1:26
)
),
CODE(
MID(
x,
l,
1
)
)-64
),
-l
)
)
)
)
)
)
Excel solution 18 for Find texts that are ATBASH Palindromes, proposed by Hazem Hassan:
=LET(a,CHAR(SEQUENCE(26,,65)),TOCOL(MAP(A2:A10,LAMBDA(x,IF(CONCAT(XLOOKUP(MID(x,SORT(SEQUENCE(LEN(x)),,-1),1),a,SORT(a,,-1)))=x,x,1/0))),3))
Solving the challenge of Find texts that are ATBASH Palindromes with Python in Excel
Python in Excel solution 1 for Find texts that are ATBASH Palindromes, proposed by Bo Rydobon 🇹🇭:
[w for w in xl("A2:A10")[0] if ''.join(chr(155-ord(a)) for a in w[::-1]) == w]
Python in Excel solution 2 for Find texts that are ATBASH Palindromes, proposed by John V.:
Hi everyone!
[i for i in xl("A2:A10")[0] if f(i)]
Blessings!
Solving the challenge of Find texts that are ATBASH Palindromes with R
R solution 1 for Find texts that are ATBASH Palindromes, proposed by Konrad Gryczan, PhD:
library(tidyverse)
library(readxl)
input = read_excel("Atbash Palindromes.xlsx", range = "A1:A10")
test = read_excel("Atbash Palindromes.xlsx", range = "B1:B4")
atbash_cipher_palindrome = function(word) {
atbash_code = rev(LETTERS)
vec = str_split(word, "")[[1]]
atbashed = map_chr(vec, function(x) {
if (x %in% LETTERS) {
index = which(LETTERS == x)
return(atbash_code[index])
} else {
return(x)
}
})
result = all(vec == rev(atbashed))
return(result)
}
result = input %>%
mutate(check = map_lgl(Text, atbash_cipher_palindrome)) %>%
filter(check == TRUE) %>%
select(`Answer Expected` = Text)
identical(result, test)
# [1] TRUE
&&
