Home » GADERYPOLUKI Cipher Apply

GADERYPOLUKI Cipher Apply

GADERYPOLUKI Cipher Column A needs to be changed on the basis of key given in column B. If Key is GA-DE-RY-PO-LU-KI, then G will be changed to A, D will be changed to E…K will be changed to I. Key is case-insensitive. Hence, g>>a, d>>e….k>>i for this key. All other characters / alphabets will be left unchanged. Answer is case sensitive.

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

Solving the challenge of GADERYPOLUKI Cipher Apply with Power Query

Power Query solution 1 for GADERYPOLUKI Cipher Apply, proposed by Bo Rydobon 🇹🇭:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  Ans = Table.TransformRows(
    Source, 
    each Text.Combine(
      List.ReplaceMatchingItems(
        Text.ToList([Sentence]), 
        List.Transform(Text.Split([Key] & "-" & Text.Lower([Key]), "-"), Text.ToList)
      )
    )
  )
in
  Ans
Power Query solution 2 for GADERYPOLUKI Cipher Apply, proposed by Bo Rydobon 🇹🇭:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  B = Table.TransformRows(
    Source, 
    each 
      let
        U  = Text.Split([Key], "-"), 
        Ul = List.Transform(U, each Text.Start(_, 1)), 
        Ur = List.Transform(U, each Text.End(_, 1)), 
        L  = Text.Split(Text.Lower([Key]), "-"), 
        Ll = List.Transform(L, each Text.Start(_, 1)), 
        Lr = List.Transform(L, each Text.End(_, 1))
      in
        Text.Combine(
          List.Transform(
            Text.ToList([Sentence]), 
            each 
              let
                Un = List.PositionOf(Ul, _), 
                Ln = List.PositionOf(Ll, _)
              in
                if Un >= 0 then Ur{Un} else if Ln >= 0 then Lr{Ln} else _
          )
        )
  )
in
  B
Power Query solution 3 for GADERYPOLUKI Cipher Apply, proposed by Alejandro Simón 🇵🇦 🇪🇸:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  Listas = Table.TransformColumns(
    Source, 
    {
      {"Sentence", each Text.ToList(_)}, 
      {
        "Key", 
        each List.Transform(
          Text.Split(_, "-") & Text.Split(Text.Lower(_), "-"), 
          each Text.ToList(_)
        )
      }
    }
  ), 
  Solucion = Table.AddColumn(
    Listas, 
    "Answer", 
    each Text.Combine(List.ReplaceMatchingItems([Sentence], [Key]), "")
  )[[Answer]]
in
  Solucion
Power Query solution 4 for GADERYPOLUKI Cipher Apply, proposed by Luan Rodrigues:
let
  Fonte = Tabela1, 
  Result = Table.AddColumn(
    Fonte, 
    "Personalizar", 
    each [
      a = Text.Combine(Text.Split([Key], "-")), 
      b = List.Split(Text.ToList(a) & Text.ToList(Text.Lower(a)), 2), 
      c = Text.ToList([Sentence]), 
      d = Text.Combine(List.ReplaceMatchingItems(c, b))
    ][d]
  )[[Personalizar]]
in
  Result
Power Query solution 5 for GADERYPOLUKI Cipher Apply, proposed by Bhavya Gupta:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  ExpectedOutput = Table.AddColumn(
    Source, 
    "Answer", 
    each 
      let
        a = Text.Split([Key], "-")
      in
        Text.Combine(
          List.ReplaceMatchingItems(
            Text.ToList([Sentence]), 
            List.Transform(a & List.Transform(a, each Text.Lower(_)), each Text.ToList(_))
          )
        )
  )
in
  ExpectedOutput
Power Query solution 6 for GADERYPOLUKI Cipher Apply, proposed by Bhavya Gupta:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  ExpectedOutput = Table.AddColumn(
    Source, 
    "Answer", 
    each 
      let
        a = Text.Split([Key] & "-" & Text.Lower([Key]), "-")
      in
        Text.Combine(
          List.ReplaceMatchingItems(
            Text.ToList([Sentence]), 
            List.Transform(a, Text.ToList), 
            each Text.ToList(_)
          )
        )
  )
in
  ExpectedOutput
Power Query solution 7 for GADERYPOLUKI Cipher Apply, proposed by Matthias Friedmann:
let
  Source = Excel.CurrentWorkbook(){[Name = "CharacterChange"]}[Content], 
  Replaced = Table.ReplaceValue(Source, "-", "", Replacer.ReplaceText, {"Key"}), 
  Added = Table.AddColumn(
    Replaced, 
    "Changed", 
    each Text.Combine(
      List.ReplaceMatchingItems(
        Text.ToList([Sentence]), 
        List.Split(Text.ToList([Key] & Text.Lower([Key])), 2)
      )
    )
  )[[Changed]]
in
  Added
Power Query solution 8 for GADERYPOLUKI Cipher Apply, proposed by Victor Wang:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  Result = Table.ReplaceValue(
    Source, 
    each true, 
    each List.Transform(Text.Split([Key] & "-" & Text.Lower([Key]), "-"), Text.ToList), 
    (a, b, c) => Text.Combine(List.ReplaceMatchingItems(Text.ToList(a), c)), 
    {"Sentence"}
  )[Sentence]
in
  Result

Solving the challenge of GADERYPOLUKI Cipher Apply with Excel

Excel solution 1 for GADERYPOLUKI Cipher Apply, proposed by Bo Rydobon 🇹🇭:
=MAP(
    A2:A7,
    B2:B7,
    LAMBDA(
        s,
        k,
        SUBSTITUTE(
            REDUCE(
                CONCAT(
                    "♥"&MID(
                        s,
                        SEQUENCE(
                            LEN(
                                s
                            )
                        ),
                        1
                    )
                ),
                TEXTSPLIT(
                    k&"-"&LOWER(
                        k
                    ),
                    "-"
                ),
                LAMBDA(
                    a,
                    v,
                    SUBSTITUTE(
                        a,
                        "♥"&LEFT(
                            v
                        ),
                        RIGHT(
                            v
                        )
                    )
                )
            ),
            "♥",
            
        )
    )
)
Excel solution 2 for GADERYPOLUKI Cipher Apply, proposed by John V.:
=MAP(
    A2:A7,
    B2:B7,
    LAMBDA(
        x,
        y,
        LET(
            s,
            MID(
                x,
                SEQUENCE(
                    LEN(
                        x
                    )
                ),
                1
            ),
            v,
            VLOOKUP(
                s,
                MID(
                    y,
                    SEQUENCE(
                        6,
                        ,
                        ,
                        3
                    )+{0,
                    1},
                    1
                ),
                2,
                
            ),
            CONCAT(
                IFNA(
                    IF(
                        EXACT(
                            UPPER(
                                s
                            ),
                            s
                        ),
                        v,
                        LOWER(
                            v
                        )
                    ),
                    s
                )
            )
        )
    )
)
Excel solution 3 for GADERYPOLUKI Cipher Apply, proposed by محمد حلمي:
=MAP(
    A2:A7,
    B2:B7,
    LAMBDA(
        a,
        b,
        LET(
            
            s,
            SEQUENCE(
                6,
                ,
                ,
                3
            ),
            
            r,
            REDUCE(
                a,
                MID(
                    b,
                    s,
                    1
                )&" "&MID(
                    b,
                    s+1,
                    1
                ),
                
                LAMBDA(
                    a,
                    x,
                    SUBSTITUTE(
                        UPPER(
                            a
                        ),
                        
                        TEXTBEFORE(
                            x,
                            " "
                        ),
                        TEXTAFTER(
                            x,
                            " "
                        )
                    )
                )
            ),
            
            v,
            MID(
                a,
                SEQUENCE(
                    LEN(
                            a
                        )
                ),
                1
            ),
            
            rr,
            MID(
                r,
                SEQUENCE(
                    LEN(
                        r
                    )
                ),
                1
            ),
            
            CONCAT(
                IF(
                    EXACT(
                        v,
                        UPPER(
                            v
                        )
                    ),
                    rr,
                    LOWER(
                        rr
                    )
                )
            )
        )
    )
)

/////

I benefited from a solution Taeyong S.
in use sort
So that the original letter does not change twice

=MAP(
    A2:A7,
    B2:B7,
    LAMBDA(
        a,
        b,
        LET(
            s,
            SEQUENCE(
                6,
                ,
                ,
                3
            ),
            r,
            REDUCE(
                a,
                SORT(
                    MID(
                    b,
                    s,
                    1
                )&" "&MID(
                    b,
                    s+1,
                    1
                ),
                    ,
                    -1
                ),
                LAMBDA(
                    a,
                    x,
                    
                    SUBSTITUTE(
                        UPPER(
                            a
                        ),
                        TEXTBEFORE(
                            x,
                            " "
                        ),
                        TEXTAFTER(
                            x,
                            " "
                        )
                    )
                )
            ),
            v,
            MID(
                a,
                SEQUENCE(
                    LEN(
                            a
                        )
                ),
                1
            ),
            rr,
            MID(
                r,
                SEQUENCE(
                    LEN(
                        r
                    )
                ),
                1
            ),
            CONCAT(
                IF(
                    EXACT(
                        v,
                        UPPER(
                            v
                        )
                    ),
                    rr,
                    LOWER(
                        rr
                    )
                )
            )
        )
    )
)
Excel solution 4 for GADERYPOLUKI Cipher Apply, proposed by 🇰🇷 Taeyong Shin:
=MAP(
    A2:A7,
     B2:B7,
     LAMBDA(
         a,
         b,
         
          LET(
              
               k,
               MID(
                   TEXTSPLIT(
                       b,
                        ,
                        "-"
                   ),
                    {1,
                   2},
                    1
               ),
              
               tbl,
               SORT(
                   VSTACK(
                       k,
                        LOWER(
                            k
                        )
                   ),
                    ,
                    -1
               ),
              
               REDUCE(
                   a,
                    SEQUENCE(
                        ROWS(
                            tbl
                        )
                    ),
                    LAMBDA(
                        a,
                        n,
                        
                         SUBSTITUTE(
                             a,
                              INDEX(
                                  tbl,
                                   n,
                                   1
                              ),
                              INDEX(
                                  tbl,
                                   n,
                                   2
                              )
                         )
                         
                    )
               )
               
          )
         
     )
)

********************************************************************

=MAP(
    A2:A7,
     B2:B7,
     LAMBDA(
         a,
         b,
         
          LET(
              
               k,
               SORT(
                   TEXTSPLIT(
                       b & "-" & LOWER(
                           b
                       ),
                        ,
                        "-"
                   ),
                    ,
                    -1
               ),
              
               REDUCE(
                   a,
                    SEQUENCE(
                        ROWS(
                            k
                        )
                    ),
                    LAMBDA(
                        str,
                        n,
                        
                         SUBSTITUTE(
                             str,
                              @LEFT(
                                  INDEX(
                                      k,
                                       n
                                  )
                              ),
                              @RIGHT(
                                  INDEX(
                                      k,
                                       n
                                  )
                              )
                         )
                         
                    )
               )
               
          )
         
     )
)
Excel solution 5 for GADERYPOLUKI Cipher Apply, proposed by 🇰🇷 Taeyong Shin:
=MAP(
    A2:A7,
    B2:B7,
    LAMBDA(
        a,
        b,
        LET(
            m,
            MID(
                a,
                SEQUENCE(
                    LEN(
                        a
                    )
                ),
                1
            ),
            t,
            TEXTSPLIT(
                b&"-"&LOWER(
                    b
                ),
                ,
                "-"
            ),
            CONCAT(
                IFNA(
                    XLOOKUP(
                        "(?-i)"&m,
                        LEFT(
                            t
                        ),
                        RIGHT(
                            t
                        ),
                        ,
                        3
                    ),
                    m
                )
            )
        )
    )
)
Excel solution 6 for GADERYPOLUKI Cipher Apply, proposed by 🇰🇷 Taeyong Shin:
=MAP(
    A2:A7,
    "-"&B2:B7,
    LAMBDA(
        x,
        y,
        LET(
            c,
            REGEXEXTRACT(
                x,
                ".",
                1
            ),
            CONCAT(
                IFNA(
                    REGEXEXTRACT(
                        y&LOWER(
                            y
                        ),
                        "(?<=-"&c&").",
                        1
                    ),
                    c
                )
            )
        )
    )
)
Excel solution 7 for GADERYPOLUKI Cipher Apply, proposed by Julian Poeltl:
=MAP(
    A2:A7,
    B2:B7,
    LAMBDA(
        S,&
        K,
        LET(
            SP,
            TEXTSPLIT(
                K,
                "-"
            ),
            F,
            LEFT(
                SP
            ),
            T,
            RIGHT(
                SP
            ),
            FF,
            HSTACK(
                F,
                LOWER(
                    F
                )
            ),
            TT,
            HSTACK(
                T,
                LOWER(
                    T
                )
            ),
            REDUCE(
                S,
                FF&","&TT,
                LAMBDA(
                    A,
                    B,
                    SUBSTITUTE(
                        A,
                        TEXTBEFORE(
                            B,
                            ","
                        ),
                        TEXTAFTER(
                            B,
                            ","
                        )
                    )
                )
            )
        )
    )
)
Excel solution 8 for GADERYPOLUKI Cipher Apply, proposed by Aditya Kumar Darak 🇮🇳:
=MAP(
    
     A2:A7,
    
     B2:B7,
    
     LAMBDA(
         a,
          b,
         
          LET(
              
               sk,
               TEXTSPLIT(
                   b,
                    ,
                    "-"
               ),
              
               ch1,
               LEFT(
                   sk
               ),
              
               ch2,
               RIGHT(
                   sk
               ),
              
               ss,
               MID(
                   a,
                    SEQUENCE(
                        LEN(
                            a
                        )
                    ),
                    1
               ),
              
               rp,
               IFNA(
                   XLOOKUP(
                       ss,
                        ch1,
                        ch2
                   ),
                    ss
               ),
              
               c,
               IF(
                   EXACT(
                       UPPER(
                           ss
                       ),
                        ss
                   ),
                    rp,
                    LOWER(
                        rp
                    )
               ),
              
               r,
               CONCAT(
                   c
               ),
              
               r
               
          )
          
     )
    
)
Excel solution 9 for GADERYPOLUKI Cipher Apply, proposed by Timothée BLIOT:
=MAP(
    A2:A7,
    B2:B7,
    LAMBDA(
        v,
        w,
        LET(
            A,
            DROP(
                REDUCE(
                    "",
                    TOCOL(
                        TEXTSPLIT(
                            w,
                            "-"
                        )
                    ),
                    LAMBDA(
                        a,
                        s,
                        VSTACK(
                            a,
                            MID(
                                s,
                                {1,
                                2},
                                1
                            )
                        )
                    )
                ),
                1
            ),
            B,
            MID(
                v,
                 SEQUENCE(
                     LEN(
                         v
                     )
                 ),
                1
            ),
            D,
            IF(
                EXACT(
                    B,
                    UPPER(
                        B
                    )
                ),
                1,
                0
            ),
            E,
            MAP(
                UPPER(
                        B
                    ),
                LAMBDA(
                    x,
                    XLOOKUP(
                        x,
                        TAKE(
                            A,
                            ,
                            1
                        ),
                        TAKE(
                            A,
                            ,
                            -1
                        ),
                        x
                    )
                )
            ),
            CONCAT(
                MAP(
                    SEQUENCE(
                        ROWS(
                            E
                        )
                    ),
                    LAMBDA(
                        x,
                        IF(
                            INDEX(
                                D,
                                x
                            )=1,
                            UPPER(
                                INDEX(
                                    E,
                                    x
                                )
                            ),
                            LOWER(
                                INDEX(
                                    E,
                                    x
                                )
                            )
                        )
                    )
                )
            )
        )
    )
)
Excel solution 10 for GADERYPOLUKI Cipher Apply, proposed by Md. Zohurul Islam:
=MAP(
    A2:A7,
    B2:B7,
    LAMBDA(
        x,
        y,
        
        LET(
            
            a,
            TOCOL(
                TEXTSPLIT(
                    y,
                    "-"
                )
            ),
            
            b,
            LEFT(
                a
            ),
            
            c,
            RIGHT(
                a
            ),
            
            d,
            LOWER(
                b
            ),
            
            e,
            LOWER(
                c
            ),
            
            f,
            VSTACK(
                CODE(
                b
            ),
                CODE(
                    d
                )
            ),
            
            g,
            VSTACK(
                CODE(
                c
            ),
                CODE(
                    e
                )
            ),
            
            h,
            MID(
                x,
                SEQUENCE(
                    LEN(
                        x
                    )
                ),
                1
            ),
            
            j,
            CODE(
                h
            ),
            
            k,
            XLOOKUP(
                j,
                f,
                g
            ),
            
            l,
            CHAR(
                IFNA(
                    k,
                    j
                )
            ),
            
            m,
            CONCAT(
                l
            ),
            m
        )
    )
)
Excel solution 11 for GADERYPOLUKI Cipher Apply, proposed by Charles Roldan:
=LET(
    _TEXTTOARRAY,
     LAMBDA(
         x,
          MID(
              x,
               SEQUENCE(
                   LEN(
                       x
                   )
               ),
               1
          )
     ),
    
    MAP(
        A2:A7,
         B2:B7,
         LAMBDA(
             Sentence,
             Key,
              LET(
                  
                  x,
                   CODE(
                       WRAPCOLS(
                           _TEXTTOARRAY(
                               Key&"-"&LOWER(
                                   Key
                               )
                           ),
                            3
                       )
                   ),
                  
                  REDUCE(
                      "",
                       CODE(
                           _TEXTTOARRAY(
                               Sentence
                           )
                       ),
                      
                      LAMBDA(
                          a,
                          b,
                           a&CHAR(
                               XLOOKUP(
                                   b,
                                    INDEX(
                                        x,
                                         1
                                    ),
                                    INDEX(
                                        x,
                                         2
                                    ),
                                    b
                               )
                           )
                      )
                  )
              )
         )
    )
)
Excel solution 12 for GADERYPOLUKI Cipher Apply, proposed by Stefan Olsson:
=MAP(
    A2:A7,
     B2:B7,
     
    LAMBDA(
        s,
         k,
         
        REDUCE(
            "",
             SPLIT(
                 REGEXREPLACE(
                     s,
                      "(.)",
                      "$1|"
                 ),
                  "|",
                  true,
                  true
             ),
             
            LAMBDA(
                i,
                 x,
                 
                i&IFNA(
                    REGEXEXTRACT(
                        k&"-"&LOWER(
                            k
                        ),
                         x&"(w)"
                    ),
                     x
                ) 
                
            )
        )
    )
)
Excel solution 13 for GADERYPOLUKI Cipher Apply, proposed by Julien Lacaze:
=MAP(
    A2:A7,
    B2:B7,
    LAMBDA(
        data,
        key,
        LET(
            convert,
            TEXTSPLIT(
                key,
                ,
                "-"
            ),
            
            source,
            CODE(
                VSTACK(
                    LEFT(
                        convert
                    ),
                    LOWER(
                        LEFT(
                        convert
                    )
                    )
                )
            ),
            target,
            VSTACK(
                RIGHT(
                        convert
                    ),
                LOWER(
                    RIGHT(
                        convert
                    )
                )
            ),
            
            split,
            MID(
                data,
                SEQUENCE(
                    LEN(
                        data
                    )
                ),
                1
            ),
            CONCAT(
                IFERROR(
                    XLOOKUP(
                        CODE(
                            split
                        ),
                        source,
                        target
                    ),
                    split
                )
            )
        )
    )
)
Excel solution 14 for GADERYPOLUKI Cipher Apply, proposed by Abhishek Kumar Jain:
=MAP(A2:A7,
    B2:B7,
    LAMBDA(x,
    y,
    LET(a,
    MID(
        x,
        SEQUENCE(
            ,
            LEN(
                x
            )
        ),
        1
    ),
    b,
    LEFT(
        TEXTSPLIT(
            y,
            "-"
        )
    ),
    c,
    RIGHT(
        TEXTSPLIT(
            y,
            "-"
        )
    ),
    d,
    XLOOKUP(
        a,
        b,
        c,
        ""
    ),
    TEXTJOIN("",
    FALSE,
    IFS(d="",
    a,
    (CODE(
        a
    )>=65)*(CODE(
        a
    )<=90)=0,
    LOWER(
        d
    ),
    TRUE,
    d)))))
Excel solution 15 for GADERYPOLUKI Cipher Apply, proposed by Guillermo Arroyo:
=BYROW(
    A2:B7,
    
     LAMBDA(
         a,
         
          LET(
              s,
              INDEX(
                  a,
                  ,
                  1
              ),
              
               k,
              MID(
                  TEXTSPLIT(
                      INDEX(
                          a,
                          ,
                          2
                      ),
                      ,
                      "-"
                  ),
                  {1,
                  2},
                  1
              ),
              
               l,
              LEN(
                  s
              ),
              
               r,
              LAMBDA(
                  m,
                  b,
                  c,
                  
                   LET(
                       d,
                       MID(
                           s,
                           b,
                           1
                       ),
                       
                        e,
                       IFERROR(
                           INDEX(
                               k,
                               MATCH(
                                   d,
                                   CHOOSECOLS(
                                       k,
                                       1
                                   ),
                                   0
                               ),
                               2
                           ),
                           d
                       ),
                       
                        f,
                       IF(
                           CODE(
                               d
                           )>=97,
                           LOWER(
                               e
                           ),
                           UPPER(
                               e
                           )
                       ),
                       
                        IF(
                            b>l,
                            c,
                            m(
                                m,
                                b+1,
                                c&f
                            )
                        )
                   )
              ),
              
               r(
                   r,
                   1,
                   ""
               )
          )
     )
)

Solving the challenge of GADERYPOLUKI Cipher Apply with SQL

SQL solution 1 for GADERYPOLUKI Cipher Apply, proposed by Zoran Milokanović:
WITH /* Microsoft SQL Server 2019 */
DATA_PREP
AS
(
 SELECT
 ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS ORDINAL_NUMBER
 ,D.SENTENCE
 ,D."KEY"
 FROM DATA D
)
SELECT
 F.SENTENCE
,F."KEY"
,TRANSLATE(TRANSLATE(F.SENTENCE, UPPER(F.KEY_START), UPPER(F.KEY_END)), LOWER(F.KEY_START), LOWER(F.KEY_END)) AS ANSWER
FROM
(
 SELECT
 DP.ORDINAL_NUMBER
 ,DP.SENTENCE AS SENTENCE
 ,"KEY"
 ,STRING_AGG(SUBSTRING(VALUE, 1, 1), '') AS KEY_START
 ,STRING_AGG(SUBSTRING(VALUE, 2, 1), '') AS KEY_END
 FROM DATA_PREP DP
 CROSS APPLY STRING_SPLIT(DP."KEY", '-')
 GROUP BY
 DP.ORDINAL_NUMBER
 ,DP.SENTENCE
,"KEY"
) F
ORDER BY
 F.ORDINAL_NUMBER
;
                    
                  

&&

Leave a Reply