Home » Find Palindromic Numbers via 196

Find Palindromic Numbers via 196

196-Algorithm – Take any positive integer of two digits or more, reverse the digits, and add to the original number. Now repeat the procedure with the sum so obtained until a Palindromic number is obtained. We know that a Palindromic number is that number which is same even when read backward. Work out the Palindromic number associated with the column A numbers. Note – All numbers given in this problem will eventually reach to a Palindromic number.

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

Solving the challenge of Find Palindromic Numbers via 196 with Power Query

Power Query solution 1 for Find Palindromic Numbers via 196, proposed by Bo Rydobon 🇹🇭:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  Rc = (n) =>
    let
      c = n + Number.From(Text.Reverse(Text.From(n)))
    in
      if c = Number.From(Text.Reverse(Text.From(c))) then c else @Rc(c), 
  Ans = Table.TransformRows(Source, each Rc([Number]))
in
  Ans
Power Query solution 2 for Find Palindromic Numbers via 196, proposed by Zoran Milokanović:
let
  Source = Excel.CurrentWorkbook(){[Name = "Input"]}[Content], 
  R = (n) => Number.From(Text.Combine(List.Reverse(Text.ToList(Text.From(n))))), 
  S = Table.TransformRows(
    Source, 
    each 
      let
        i = [Number] + R([Number])
      in
        List.Max(List.Generate(() => i, each _ <> R(_), each _ + R(_), each _ + R(_))) ?? i
  )
in
  S
Power Query solution 3 for Find Palindromic Numbers via 196, proposed by Alejandro Simón 🇵🇦 🇪🇸:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  G = (f) =>
    let
      a = Number.From(Text.Reverse(Text.From(f))) + f, 
      b = if Text.From(a) = Text.Reverse(Text.From(a)) then a else @G(a)
    in
      b, 
  Sol = Table.AddColumn(Source, "Answer", each G([Number]))[[Answer]]
in
  Sol
Power Query solution 4 for Find Palindromic Numbers via 196, proposed by Luan Rodrigues:
let
  Fonte = Tabela1, 
  loop = (x) =>
    [
      a = Number.From(Text.Reverse(Text.From(x))) + x, 
      b = if Text.From(a) = Text.Reverse(Text.From(a)) then a else @loop(a)
    ][b], 
  res = Table.TransformColumns(Fonte, {{"Number", each loop(_)}})
in
  res
Power Query solution 5 for Find Palindromic Numbers via 196, proposed by Rafael González B.:
let
 Source = Excel.CurrentWorkbook(){0}[Content],
 
 PN = (num as number) => 
 let 
 n = num,
 t = Text.From(n),
 r = Text.Reverse(t),
 n2 = Text.From(Number.From(r) + n),
 r2 = Text.Reverse(n2),
 c = n2 = r2
 
 in
 if c then Number.From(n2) else @PN(Number.From(n2)),

 Ans = Table.AddColumn(Source, "Answer Expected", each PN([Number]))
in
 Ans[[Answer Expected]]

🎩 🎩 🎩 


                    
                  
          
Power Query solution 6 for Find Palindromic Numbers via 196, proposed by Szabolcs Phraner:
let
  Source = Excel.CurrentWorkbook(){[Name = "NR"]}[Content], 
  //Custom function  to check if number is Palindromic 
  IsPalindromic = (nr) =>
    let
      l = Text.From(nr), 
      r = Text.Reverse(l)
    in
      Number.From(l = r), 
  //Custom function for Alg-196 
  AddDigits = (nr) => nr + Number.From(Text.Reverse(Text.From(nr))), 
  Alg196 = (nr) =>
    let
      ListGen = List.Generate(
        () => [a = nr, b = AddDigits(a), c = IsPalindromic(b)], 
        each [c] <= 1, 
        each [a = [b], b = AddDigits(a), c = IsPalindromic(b) + [c]], 
        each [b]
      )
    in
      List.Last(ListGen), 
  AddCol = Table.AddColumn(Forrás, "ALG-196", each Alg196([Number]), Int64.Type)
in
  AddCol
Power Query solution 7 for Find Palindromic Numbers via 196, proposed by ASHFAQUE AHMED:
let
 Source = ...  // Your data source
 #"Added Custom Column" = Table.AddColumn(Source, "NewColumn", each [Column1] + [Column2])
in
 #"Added Custom Column"


                    
                  
          

Solving the challenge of Find Palindromic Numbers via 196 with Excel

Excel solution 1 for Find Palindromic Numbers via 196, proposed by Bo Rydobon 🇹🇭:
=LET(
    R,
    LAMBDA(
        r,
        n,
        [m],
        LET(
            c,
            CONCAT(
                MID(
                    n,
                    16-SEQUENCE(
                        15
                    ),
                    1
                )
            ),
            IF(
                n=m*c,
                n,
                r(
                    r,
                    n+c,
                    1
                )
            )
        )
    ),
    
    MAP(
        A2:A10,
        LAMBDA(
            a,
            R(
                R,
                a
            )
        )
    )
)
Excel solution 2 for Find Palindromic Numbers via 196, proposed by Bo Rydobon 🇹🇭:
=MAP(A2:A10,
    LAMBDA(n,
    REDUCE(n,
    SEQUENCE(
        999
    ),
    LAMBDA(a,
    w,
    LET(b,
    CONCAT(
        MID(
            a,
            16-SEQUENCE(
                15
            ),
            1
        )
    ),
    IF((w>1)*(a=--b),
    a,
    a+b))))))
Excel solution 3 for Find Palindromic Numbers via 196, proposed by John V.:
=MAP(A2:A10,
    LAMBDA(n,
    LET(s,
    ROW(
        1:25
    ),
    f,
    LAMBDA(
        x,
        CONCAT(
            MID(
                x,
                26-s,
                1
            )
        )
    ),
    REDUCE(n+f(
        n
    ),
    s,
    LAMBDA(a,
    v,
    a+f(
        a
    )*(a<>--f(
        a
    )))))))
Excel solution 4 for Find Palindromic Numbers via 196, proposed by محمد حلمي:
=MAP(
    A2:A10,
    LAMBDA(
        a,
        LET(
            
            s,
            SEQUENCE(
                50
            ),
            
            r,
            LAMBDA(
                x,
                CONCAT(
                    MID(
                        x,
                        51-s,
                        1
                    )
                )
            ),
            
            v,
            SCAN(
                a,
                s,
                LAMBDA(
                    a,
                    d,
                    r(
                        a
                    )+a
                )
            ),
            
            @FILTER(
                v,
                BYROW(
                    v,
                    LAMBDA(
                        a,
                        a=--r(
                        a
                    )
                    )
                )
            )
        )
    )
)
Excel solution 5 for Find Palindromic Numbers via 196, proposed by Kris Jaganah:
=MAP(A2:A10,LAMBDA(z,LET(a,SCAN(z,SEQUENCE(30),LAMBDA(x,y,SUM(--CONCAT(MID(x,SEQUENCE(LEN(x),,LEN(x),-1),1)),x))),MIN(IF(MAP(a,LAMBDA(z,--CONCAT(MID(z,SEQUENCE(LEN(z),,LEN(z),-1),1))))=a,a,"")))))
Excel solution 6 for Find Palindromic Numbers via 196, proposed by Timothée BLIOT:
=MAP(
    A2:A10,
    LAMBDA(
        z,
        LET(
            R,
            LAMBDA(
                n,
                --CONCAT(
                    MID(
                        n,
                        20-ROW(
                            1:19
                        ),
                        1
                    ) 
                )
            ),
            F,
            LAMBDA(
                me,
                n,
                IF(
                    n=R(
                        n
                    ),
                    n,
                    me(
                        me,
                        R(
                        n
                    )+n
                    )
                )
            ),
            F(
                F,
                R(
                    z
                )+z
            )
        )
    )
)

=MAP(
    A2:A10,
    LAMBDA(
        z,
        LET(
            R,
            LAMBDA(
                n,
                --CONCAT(
                    MID(
                        n,
                        20-ROW(
                            1:19
                        ),
                        1
                    ) 
                )
            ),
            REDUCE(
                z,
                ROW(
                    1:999
                ),
                LAMBDA(
                    a,
                    v,
                    IF(
                        v>1,
                        IF(
                            R(
                                a
                            )=a,
                            a,
                            R(
                                a
                            )+a
                        ),
                        R(
                                a
                            )+a
                    )
                )
            )
        )
    )
)
Excel solution 7 for Find Palindromic Numbers via 196, proposed by Sunny Baggu:
=MAP(
    
     A2:A10,
    
     LAMBDA(
         n,
         
          LET(
              
               _rev,
               LAMBDA(
                   x,
                    CONCAT(
                        MID(
                            x,
                             LEN(
                                 x
                             ) + 1 - SEQUENCE(
                                 LEN(
                                 x
                             )
                             ),
                             1
                        )
                    )
               ),
              
               _col1,
               SCAN(
                   n,
                    SEQUENCE(
                        100
                    ),
                    LAMBDA(
                        a,
                         v,
                         _rev(
                             a
                         ) + a
                    )
               ),
              
               _col2,
               MAP(
                   _col1,
                    LAMBDA(
                        y,
                         _rev(
                             y
                         )
                    )
               ),
              
               TAKE(
                   FILTER(
                       _col1,
                        _col1 = _col2 + 0
                   ),
                    1
               )
               
          )
          
     )
    
)
Excel solution 8 for Find Palindromic Numbers via 196, proposed by Sunny Baggu:
=MAP(
    
     A2:A10,
    
     LAMBDA(
         n,
         
          REDUCE(
              
               n,
              
               SEQUENCE(
                   100
               ),
              
               LAMBDA(
                   a,
                    v,
                   
                    LET(
                        
                         _rev,
                         LAMBDA(
                             x,
                              CONCAT(
                                  MID(
                                      x,
                                       LEN(
                                           x
                                       ) + 1 - SEQUENCE(
                                           LEN(
                                           x
                                       )
                                       ),
                                       1
                                  )
                              )
                         ),
                        
                         _revadd,
                         _rev(
                             a
                         ) + a,
                        
                         IF(
                             AND(
                                 v > 1,
                                  a - _rev(
                             a
                         ) = 0
                             ),
                              a,
                              a + _rev(
                             a
                         )
                         )
                         
                    )
                    
               )
               
          )
          
     )
    
)
Excel solution 9 for Find Palindromic Numbers via 196, proposed by LEONARD OCHEA 🇷🇴:
=LET(
    F,
    LAMBDA(
        x,
        LET(
            l,
            LEN(
                x
            ),
            --CONCAT(
                MID(
                    x,
                    l-SEQUENCE(
                        l
                    )+1,
                    1
                )
            )
        )
    ),
    MAP(
        A2:A10,
        LAMBDA(
            a,
            LET(
                R,
                LAMBDA(
                    R,
                    y,
                    LET(
                        n,
                        y+F(
                            y
                        ),
                        IF(
                            n=F(
                                n
                            ),
                            n,
                            R(
                                R,
                                n
                            )
                        )
                    )
                ),
                R(
                    R,
                    a
                )
            )
        )
    )
)
Excel solution 10 for Find Palindromic Numbers via 196, proposed by Abdallah Ally:
=MAP(
    A2:A10,
    LAMBDA(
        u,
        LET(
            a,
            LAMBDA(
                x,
                --CONCAT(
                    MID(
                        x,
                        SEQUENCE(
                            LEN(
                                x
                            ),
                            ,
                            LEN(
                                x
                            ),
                            -1
                        ),
                        1
                    )
                )
            ),
            rfn,
            LAMBDA(
                f,
                rng,
                IF(
                    rng=a(
                        rng
                    ),
                    rng,
                    f(
                        f,
                        rng+a(
                        rng
                    )
                    )
                )
            ),
            rfn(
                rfn,
                u+a(
                    u
                )
            )
        )
    )
)
Excel solution 11 for Find Palindromic Numbers via 196, proposed by Charles Roldan:
=LET(
 M,
     LAMBDA(
         g,
          g(
              g
          )
     ),
    
 Mp,
     LAMBDA(
         f,
          LAMBDA(
              x,
               MAP(
                   x,
                    f
               )
          )
     ),
    
 B,
     LAMBDA(
         f,
          LAMBDA(
              g,
               LAMB&DA(
                   x,
                    f(
                        g(
                            x
                        )
                    )
               )
          )
     ),
    
 Rev,
     M(LAMBDA(g,
     LAMBDA(x,
     IF(LEN(
                            x
                        ),
     g(
              g
          )(REPLACE(
              x,
               1,
               1,
               
          )) & LEFT(
                            x
                        ),
     )))),
    
 f,
     LAMBDA(
         x,
          x + Rev(
                            x
                        )
     ),
    

 Mp(B(M(LAMBDA(g,
     LAMBDA(x,
     LET(y,
     f(
                            x
                        ),
     IF(2 * x - y,
     g(
              g
          )(y),
     x))))))(f))
)(A2:A10)
Excel solution 12 for Find Palindromic Numbers via 196, proposed by Pieter de Bruijn:
=MAP(
    A2:A10,
    LAMBDA(
        a,
        REDUCE(
            a+CONCAT(
                MID(
                    a,
                    SEQUENCE(
                        LEN(
                            a
                        ),
                        ,
                        LEN(
                            a
                        ),
                        -1
                    ),
                    1
                )
            ),
            SEQUENCE(
                LEN(
                            a
                        )*15
            ),
            LAMBDA(
                x,
                y,
                LET(
                    z,
                    MID(
                        x,
                        SEQUENCE(
                            LEN(
                                x
                            ),
                            ,
                            LEN(
                                x
                            ),
                            -1
                        ),
                        1
                    ),
                    IF(
                        AND(
                            z=MID(
                                x,
                                SEQUENCE(
                                    LEN(
                                x
                            )
                                ),
                                1
                            )
                        ),
                        x,
                        x+CONCAT(
                            z
                        )
                    )
                )
            )
        )
    )
)
Excel solution 13 for Find Palindromic Numbers via 196, proposed by Mihai Radu O:
= r(
    b
),
     b,
     fct(
         b + r(
    b
),
          fct
     ))
 ),
    
 fct(
     b,
      fct
 )
 )
 )
)
Excel solution 14 for Find Palindromic Numbers via 196, proposed by samir tobeil:
=MAP(
    A2:A10,
    LAMBDA(
        x,
        LET(
            l,
            LAMBDA(
                f,
                CONCAT(
                    MID(
                        f,
                        21-ROW(
                            1:20
                        ),
                        1
                    )
                )
            ),
            REDUCE(
                x+l(
                    x
                ),
                SEQUENCE(
                    30
                ),
                LAMBDA(
                    a,
                    i,
                    IF(
                        a=--l(
                            a
                        ),
                        a+0,
                        a+l(
                            a
                        )
                    )
                )
            )
        )
    )
)
Excel solution 15 for Find Palindromic Numbers via 196, proposed by Kriddakorn Pongthanisorn:
=MAP(
    A2:A10,
    LAMBDA(
        r,
         LET(
             z,
             r,
              al,
              LAMBDA(
                  al,
                  x,
                   IF(
                       AND(
                           --CONCAT(
                               MID(
                                   x,
                                   SEQUENCE(
                                       LEN(
                                           x
                                       ),
                                       1,
                                       LEN(
                                           x
                                       ),
                                       -1
                                   ),
                                   1
                               )
                           )=x,
                           x>z
                       ),
                        x,
                        al(
                            al,
                             x+--CONCAT(
                               MID(
                                   x,
                                   SEQUENCE(
                                       LEN(
                                           x
                                       ),
                                       1,
                                       LEN(
                                           x
                                       ),
                                       -1
                                   ),
                                   1
                               )
                           )
                        )
                   )
              ),
              al(
                  al,
                  r
              )
         )
    )
)

Solving the challenge of Find Palindromic Numbers via 196 with Python in Excel

Python in Excel solution 1 for Find Palindromic Numbers via 196, proposed by Bo Rydobon 🇹🇭:
def OS(n):
 while True:
 n +=int(str(n)[::-1])
 if str(n) == str(n)[::-1] : return n
[OS(n) for n in xl("A2:A10")[0]]
                    
                  

Solving the challenge of Find Palindromic Numbers via 196 with R

R solution 1 for Find Palindromic Numbers via 196, proposed by Konrad Gryczan, PhD:
(pretty short)
library(tidyverse)
library(stringi)
library(readxl)
input = read_excel("196-Algorithm.xlsx")
compute_196_palindrome = function(number) {
 original_number = number
 while (TRUE) {
 number = number + as.numeric(stri_reverse(as.character(number))) 
 
 if (as.character(number) == stri_reverse(as.character(number)) & number != original_number) {
 break
 }
 }
 return(number)
}
result = input %>%
 mutate(my_answer = map_dbl(Number, compute_196_palindrome), 
 check = `Expected Answer`== my_answer) 
print(result)
                    
                  

Solving the challenge of Find Palindromic Numbers via 196 with Excel VBA

Excel VBA solution 1 for Find Palindromic Numbers via 196, proposed by Rick Rothstein:
Sub Algorithm169()
 Dim X As Long, LC As Range
 Dim Data As Variant
 Dim Temp As Variant
 Dim Result As Variant
 Set LC = Cells(Rows.Count, "A").End(xlUp)
 Data = Range("A2", LC).Value
 ReDim Result(1 To UBound(Data), 1 To 1)
 On Error Resume Next
 For X = 1 To UBound(Data)
 Temp = CDec(Data(X, 1))
 Do
 Temp = CDec(Temp) + StrReverse(Temp)
 If Err.Number Then
 Err.Clear
 Exit Do
 End If
 Loop While Temp <> StrReverse(Temp)
 If Len(Temp) > 15 Then Temp = "'" & Temp
 Result(X, 1) = Temp
 Next
 On Error GoTo 0
 With Range("C2").Resize(UBound(Result))
 .NumberFormat = String(15, "#")
 .Value = Result
 End With
End Sub
                    
                  

&&

Leave a Reply