Home » Porta Cipher Grid Formula

Porta Cipher Grid Formula

The grid shown is used in Porta Cipher for Cryptography. The challenge is to generate this grid through a formula.

📌 Challenge Details and Links
ExcelBI Excel Challenge Number: 166
Challenge Difficulty: ⭐️
📥Download Sample File
📥Link to the solutions on LinkedIn

Solving the challenge of Porta Cipher Grid Formula with Power Query

_x000D_
Power Query solution 1 for Porta Cipher Grid Formula, proposed by Bo Rydobon 🇹🇭:
let
  Source = Table.FromRows(
    List.Transform({0 .. 12}, each List.Range({"N" .. "Z", "N" .. "Z"}, 13 - _, 13))
  )
in
  Source
_x000D_ _x000D_
Power Query solution 2 for Porta Cipher Grid Formula, proposed by Zoran Milokanović:
let
  Source = List.Reverse({"N" .. "Z"}), 
  Solution = Table.PromoteHeaders(
    Table.FromColumns(
      List.Accumulate(
        List.Positions(Source), 
        {}, 
        (s, d) => {List.Range(Source & Source, d, List.Count(Source))} & s
      )
    )
  )
in
  Solution
_x000D_ _x000D_
Power Query solution 3 for Porta Cipher Grid Formula, proposed by Aditya Kumar Darak 🇮🇳:
let the column names as default in Power Query.

let
 Chr   = { "N" .. "Z" },
 Repeat  = List.Repeat ( Chr, 2 ),
 Count  = List.Count ( Chr ),
 Generate = List.Transform ( { 0 .. Count - 1 }, each List.Range ( Repeat, Count - _, Count ) ),
 Return  = Table.FromRows ( Generate )
in
 Return


                    
                  
          
_x000D_ _x000D_
Power Query solution 4 for Porta Cipher Grid Formula, proposed by Alejandro Simón 🇵🇦 🇪🇸:
let
 Origen = {"N".."Z"},
 Tabla = Table.Repeat(Table.FromRows({List.Positions(Origen)}), List.Count(Origen)),
 IDX = Table.AddIndexColumn(Tabla, "Idx", List.Count(Origen)-1, -1, Int64.Type),
 Calculo = Table.FromRows(Table.AddColumn(IDX, "Col", (x)=> 
 let
 a = List.RemoveLastN(Record.ToList(x),1),
 b = List.Transform({0..List.Count(Origen)-1}, each Number.Mod(a{_} + List.Count(a) - IDX[Idx]{x[Idx]}, List.Count(a))),
 c = List.ReplaceMatchingItems(b, List.Zip({{0..List.Count(Origen)-1},Origen} ))
 in c)[Col])
in
 Calculo


                    
                  
          
            

  
                  
    
      
        Show translation
      
      
        Show translation of this comment
_x000D_ _x000D_
Power Query solution 5 for Porta Cipher Grid Formula, proposed by Luan Rodrigues:
let
  Fonte = {"N" .. "Z", "N" .. "Z"}, 
  count = List.Count(Fonte) / 2, 
  res = Table.FromRows(List.Transform({0 .. count - 1}, (x) => List.Range(Fonte, count - x, count)))
in
  res
_x000D_ _x000D_
Power Query solution 6 for Porta Cipher Grid Formula, proposed by Guillermo Arroyo:
let
  a = {"N" .. "Z"}, 
  b = List.Transform(
    {0 .. 12}, 
    each List.Union({List.Range(a, 13 - _, _), List.Range(a, 0, 13 - _)})
  ), 
  c = Table.FromRows(b)
in
  c
_x000D_

Solving the challenge of Porta Cipher Grid Formula with Excel

_x000D_
Excel solution 1 for Porta Cipher Grid Formula, proposed by Bo Rydobon 🇹🇭:
=CHAR(MOD(SEQUENCE(,13)-SEQUENCE(13),13)+78)
_x000D_ _x000D_
Excel solution 2 for Porta Cipher Grid Formula, proposed by Rick Rothstein:
=LET(c,CHAR(SEQUENCE(,13,78)),REDUCE(c,SEQUENCE(12),LAMBDA(a,x,VSTACK(a,DROP(HSTACK(TAKE(c,,-x),c),,-x)))))
_x000D_ _x000D_
Excel solution 3 for Porta Cipher Grid Formula, proposed by John V.:
=CHAR(78+MOD(SEQUENCE(,13)-ROW(1:13),13))
_x000D_ _x000D_
Excel solution 4 for Porta Cipher Grid Formula, proposed by محمد حلمي:
=LET(
v,VSTACK(78,SEQUENCE(12,,90,-1)),
CHAR(REDUCE(v,SEQUENCE(12),LAMBDA(a,d,
HSTACK(v, VSTACK(TAKE(a,-1),DROP(a,-1)))))))
_x000D_ _x000D_
Excel solution 5 for Porta Cipher Grid Formula, proposed by Kris Jaganah:
=LET(a,CHAR(SEQUENCE(CODE("Z")-CODE("N")+1,,CODE("N"))),b,VSTACK(a,TAKE(a,-1)),c,VSTACK("",DROP(b,-1)),d,ROWS(a),e,MOD(SEQUENCE(d+1,,d,-1),d),f,IF(e=0,d,e),g,IF(d-f<0,0,d-f),h,TOCOL(DROP(REDUCE("",REPT(b&"-",f)&REPT(c&"-",g),LAMBDA(x,y,VSTACK(x,TEXTSPLIT(y,"-")))),1,-1),,1),WRAPROWS(FILTER(h,SEQUENCE(ROWS(h))<=d^2),d))
_x000D_ _x000D_
Excel solution 6 for Porta Cipher Grid Formula, proposed by Julian Poeltl:
=CHAR(TEXTSPLIT(TEXTJOIN("|",,BYROW(MAKEARRAY(13,13,LAMBDA(A,B,IF(A=B,78,IF(A>1,92-A)))),LAMBDA(A,TEXTJOIN(",",,SCAN(,A,LAMBDA(A,B,IF(B=78,B,A+1))))))),",","|"))
_x000D_ _x000D_
Excel solution 7 for Porta Cipher Grid Formula, proposed by Aditya Kumar Darak 🇮🇳:
=LET(
 _n, 13,
 _st, "N",
 _chr, CHAR(SEQUENCE(13, , CODE(_st))),
 _r, MAKEARRAY(_n, _n, LAMBDA(r, c, INDEX(_chr, MOD(c - r, _n) + 1, 1))),
 _r
)
_x000D_ _x000D_
Excel solution 8 for Porta Cipher Grid Formula, proposed by Timothée BLIOT:
=MAKEARRAY(13,13, LAMBDA(x,y, CHAR(MOD(y-x,13)+78) )) 
It could be further automated for any letter by taking it, applying CODE, retrieving 65 (for UPPER letters)
_x000D_ _x000D_
Excel solution 9 for Porta Cipher Grid Formula, proposed by Hussein SATOUR:
=TEXTSPLIT(CONCAT(LET(a,CHAR(SEQUENCE(13,,78)), b,SEQUENCE(13,,0), MAP(b, LAMBDA(x, TEXTJOIN(",",,IFERROR(TAKE(a,-x),""), IFERROR(TAKE(a,13-x),""))&"/")))),",","/",1)
_x000D_ _x000D_
Excel solution 10 for Porta Cipher Grid Formula, proposed by Oscar Mendez Roca Farell:
=CHAR(78+ARCHIVOMAKEARRAY(13,13,LAMBDA(f, c, MOD(13+c-f,13))))
_x000D_ _x000D_
Excel solution 11 for Porta Cipher Grid Formula, proposed by Md. Zohurul Islam:
=LET(u,CHAR(SEQUENCE(,13,78)),sq,SEQUENCE(12),
v,REDUCE(u,sq,LAMBDA(x,y,LET(
 a,TAKE(u,,-y),b,HSTACK(a,u),d,DROP(b,,-y),e,VSTACK(x,d),e))),
v)
_x000D_ _x000D_
Excel solution 12 for Porta Cipher Grid Formula, proposed by Charles Roldan:
=LAMBDA(n,MAKEARRAY(n,n,LAMBDA(a,b,CHAR(90-MOD(a-b-1,n)))))(13)
_x000D_ _x000D_
Excel solution 13 for Porta Cipher Grid Formula, proposed by Stefan Olsson:
=ArrayFormula(REGEXEXTRACT(SCAN("OPQRSTUVWXYZN", SEQUENCE(13), LAMBDA(str, rr, REGEXREPLACE(str, "(.+)(.)$", "$2$1"))), REPT("(.)", 13)))

=BYROW(SEQUENCE(13), 
LAMBDA(br, 
REGEXEXTRACT(REGEXREPLACE("OPQRSTUVWXYZN", "(.*)("&REPT(".", br)&")$", "$2$1"), REPT("(.)",13))
))
_x000D_ _x000D_
Excel solution 14 for Porta Cipher Grid Formula, proposed by Guillermo Arroyo:
=REDUCE(CHAR(SEQUENCE(,13,78)),SEQUENCE(12),LAMBDA(i,j,VSTACK(i,HSTACK(TAKE(i,-1,-1),TAKE(i,-1,12)))))
_x000D_ _x000D_
Excel solution 15 for Porta Cipher Grid Formula, proposed by Henriette Hamer:
=CHAR(78+LET(a;SEQUENCE(1;13;0;1);b;SEQUENCE(13;1;13;-1);LAMBDA(a;b;IF(+a+b<13;+a+b;+a+b-13))(a;b)))
_x000D_ _x000D_
Excel solution 16 for Porta Cipher Grid Formula, proposed by roberto mensa:
=CHAR(MOD(COLUMN(A:M)-ROW(1:13),13)+78)
_x000D_ _x000D_
Excel solution 17 for Porta Cipher Grid Formula, proposed by Narayanan J 🇮🇳:
=LET(seq,SEQUENCE(13,13,0),mns,MOD(seq,13)-TRUNC(seq/13),SUBSTITUTE(ADDRESS(1,IFS(mns=0,14,mns>0,14+mns,TRUE,27+mns),4),1,""))
_x000D_ _x000D_
Excel solution 18 for Porta Cipher Grid Formula, proposed by Mazin Jalal:
INDEX($A1:$M1,IF(COLUMN()<1,COUNTA($A$1:$M$1),COLUMN()-1))
Put in A2
_x000D_

Solving the challenge of Porta Cipher Grid Formula with Python in Excel

_x000D_
Python in Excel solution 1 for Porta Cipher Grid Formula, proposed by Alejandro Campos:
n = 13
start_char = 'N'
char_seq = [chr(ord(start_char) + i) for i in range(n)]
matrix = [[char_seq[(c - r) % n] for c in range(n)] for r in range(n)]
df = pd.DataFrame(matrix)
df
                    
                  
_x000D_ &&&

Leave a Reply