Home » Count Palindromes in Range

Count Palindromes in Range

Palindrome numbers are those which are same even when read from backwards. We need not consider single digit numbers for this purpose. Hence, 1 to 9 will not be considered as Palindromes. Example – 44, 121, 5665. Find Count, Min and Max Palindromes in the given range of numbers.

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

Solving the challenge of Count Palindromes in Range with Power Query

Power Query solution 1 for Count Palindromes in Range, proposed by Aditya Kumar Darak 🇮🇳:
let
  Source = Excel.CurrentWorkbook(){[Name = "data"]}[Content], 
  List = List.Buffer(
    List.Select({10 .. List.Max(Source[To])}, (f) => Text.Reverse(Text.From(f)) = Text.From(f))
  ), 
  Select = Table.AddColumn(
    Source, 
    "Select", 
    each List.Select(List, (f) => f >= [From] and f <= [To])
  ), 
  Calc = Table.AddColumn(
    Select, 
    "Record", 
    each [Count = List.Count([Select]), Min = List.Min([Select]), Max = List.Max([Select])]
  ), 
  Result = Table.FromRecords(Calc[Record])
in
  Result
Power Query solution 2 for Count Palindromes in Range, proposed by Alejandro Simón 🇵🇦 🇪🇸:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  Lista = Table.AddColumn(
    Source, 
    "New", 
    each List.Transform(
      List.Transform(
        List.Select(
          List.Transform(List.Select({[From] .. [To]}, each _ > 9), each Text.ToList(Text.From(_))), 
          each _ = List.Reverse(_)
        ), 
        each Text.Combine(_, "")
      ), 
      each Number.From(_)
    )
  ), 
  Record = Table.AddColumn(
    Lista, 
    "New2", 
    each [Count = List.Count([New]), Min = List.Min([New]), Max = List.Max([New])]
  )[[New2]], 
  Solucion = Table.ExpandRecordColumn(
    Record, 
    "New2", 
    {"Count", "Min", "Max"}, 
    {"Count", "Min", "Max"}
  )
in
  Solucion
Power Query solution 3 for Count Palindromes in Range, proposed by Luan Rodrigues:
let
  Fonte = Tabela1, 
  list = Table.AddColumn(Fonte, "Personalizar", each {[From] .. [To]}), 
  exp = Table.ExpandListColumn(list, "Personalizar"), 
  rec = Table.AddColumn(
    exp, 
    "Personalizar.1", 
    each [
      a = List.Reverse(Text.ToList(Text.From([Personalizar]))), 
      b = Text.ToList(Text.From([Personalizar])), 
      c = List.Count(b), 
      d = a = b
    ]
  ), 
  tru = Table.ExpandRecordColumn(rec, "Personalizar.1", {"c", "d"}, {"c", "d"}), 
  fil = Table.SelectRows(tru, each ([c] <> 1) and ([d] = true)), 
  Result = Table.Group(
    fil, 
    {"To"}, 
    {
      {"Count", each Table.RowCount(_)}, 
      {"Min", each List.Min([Personalizar])}, 
      {"Max", each List.Max([Personalizar])}
    }
  )[[Count], [Min], [Max]]
in
  Result
Power Query solution 4 for Count Palindromes in Range, proposed by Brian Julius:
let
  Source = Table.AddIndexColumn(Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], "Index", 1, 1), 
  NumTextList = Table.ExpandListColumn(
    Table.AddColumn(Source, "NumList", each List.Numbers([From], [To] - [From] + 1)), 
    "NumList"
  ), 
  Filter = Table.SelectRows(
    NumTextList, 
    each [NumList] > 9 and (Text.From([NumList]) = Text.Reverse(Text.From([NumList])))
  ), 
  Group = Table.Group(
    Filter, 
    {"From", "To"}, 
    {
      {"Count", each Table.RowCount(_), Int64.Type}, 
      {"Min", each List.Min([NumList]), type number}, 
      {"Max", each List.Max([NumList]), type number}
    }
  )
in
  Group
Power Query solution 5 for Count Palindromes in Range, proposed by Bhavya Gupta:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  Transformed = Table.ReplaceValue(
    Source, 
    each [From], 
    null, 
    (a, b, c) =>
      List.Transform(
        List.Select(
          List.Transform({b .. a}, each Text.ToList(Text.From(_))), 
          each List.Reverse(_) = _ and List.Count(_) > 1
        ), 
        each Number.From(Text.Combine(_))
      ), 
    {"To"}
  )[To], 
  ExpectedOutput = Table.FromRecords(
    List.Transform(Transformed, each [Count = List.Count(_), Min = List.Min(_), Max = List.Max(_)])
  )
in
  ExpectedOutput
Power Query solution 6 for Count Palindromes in Range, proposed by Bhavya Gupta:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  ExpectedOutput = Table.FromRecords(
    List.Transform(
      Table.TransformRows(
        Source, 
        each List.Transform(
          List.Select({[From] .. [To]}, each _ > 9 and Text.Reverse(Text.From(_)) = Text.From(_)), 
          (x) => Number.From(x)
        )
      ), 
      each [Count = List.Count(_), Max = List.First(_), Min = List.Last(_)]
    )
  )
in
  ExpectedOutput
Power Query solution 7 for Count Palindromes in Range, proposed by Matthias Friedmann:
let
  Source = Excel.CurrentWorkbook(){[Name = "Palindromes"]}[Content], 
  Custom = Table.Combine(
    Table.AddColumn(
      Source, 
      "Custom", 
      each [
        a = List.Select({[From] .. [To]}, each _ > 9 and Text.From(_) = Text.Reverse(Text.From(_))), 
        b = List.Count(a), 
        c = List.First(a), 
        d = List.Last(a), 
        e = Table.FromColumns({{b}, {c}, {d}}, {"Count", "Min", "Max"})
      ][e]
    )[Custom]
  )
in
  Custom
Power Query solution 8 for Count Palindromes in Range, proposed by Rafael González B.:
let
 Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
 RangeToList = Table.AddColumn(Source, "ToList", 
 each List.Numbers( [From],([To]-[From])+1)),
 ListToList = Table.AddColumn(RangeToList, "LtoL", 
 each List.Split([ToList], List.Count([ToList]))),
 RemoveColumns = Table.RemoveColumns(ListToList,{"ToList"}),
 ListsToTable = Table.AddColumn(RemoveColumns, "LtoT", 
 each Table.FromColumns([LtoL])),
 ItemsToText = Table.AddColumn(ListsToTable, "ToText", 
 each Table.TransformColumnTypes([LtoT], {"Column1", type text})),
 ColumnAggregate = Table.AddColumn(ItemsToText, "ColumnAgg", 
 each Table.DuplicateColumn([ToText], "Column1", "ColumnR")),
 ColumnReverse = Table.AddColumn(ColumnAggregate, "Reverse", 
 each Table.TransformColumns([ColumnAgg], {"ColumnR", Text.Reverse})),
 
....see next part


                    
                  
          
Power Query solution 9 for Count Palindromes in Range, proposed by Jan Willem Van Holst:
let
  Source = Table.FromRows(
    Json.Document(
      Binary.Decompress(
        Binary.FromText(
          "i45WMlTSUTI0MFCK1YlWMrIAccwtwBxzEMfE0hIiY2wC5JmZmoJ5QPUGQK6RAYiOjQUA", 
          BinaryEncoding.Base64
        ), 
        Compression.Deflate
      )
    ), 
    let
      _t = ((type nullable text) meta [Serialized.Text = true])
    in
      type table [From = _t, To = _t]
  ), 
  #"Added Custom" = Table.AddColumn(
    Source, 
    "Custom", 
    each {Number.From([From]) .. Number.From([To])}
  ), 
  #"Added Custom1" = Table.AddColumn(
    #"Added Custom", 
    "excludeOne", 
    each List.Select([Custom], each _ > 9)
  ), 
  #"Added Custom2" = Table.AddColumn(
    #"Added Custom1", 
    "palindrome", 
    (x) => List.Select(x[excludeOne], each Number.ToText(_) = Text.Reverse(Number.ToText(_)))
  ), 
  #"Added Custom3" = Table.AddColumn(#"Added Custom2", "Count", each List.Count([palindrome])), 
  #"Added Custom4" = Table.AddColumn(#"Added Custom3", "Min", each List.Min([palindrome])), 
  #"Added Custom5" = Table.AddColumn(#"Added Custom4", "Max", each List.Max([palindrome])), 
  #"Removed Columns" = Table.RemoveColumns(#"Added Custom5", {"Custom", "excludeOne", "palindrome"})
in
  #"Removed Columns"
Power Query solution 10 for Count Palindromes in Range, proposed by Ian Segard:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table6"]}[Content], 
  #"Changed Type" = Table.TransformColumnTypes(Source, {{"From", Int64.Type}, {"To", Int64.Type}}), 
  #"Added Custom" = Table.AddColumn(
    #"Changed Type", 
    "Custom", 
    each List.Numbers([From], [To] - [From])
  ), 
  #"Added Custom1" = Table.AddColumn(
    #"Added Custom", 
    "Custom.1", 
    each List.RemoveItems([Custom], List.Numbers(1, 9))
  ), 
  #"Added Custom2" = Table.AddColumn(
    #"Added Custom1", 
    "Custom.2", 
    each List.Select([Custom.1], each Text.From(_) = Text.Reverse(Text.From(_)))
  ), 
  #"Added Custom3" = Table.AddColumn(#"Added Custom2", "Max", each List.Max([Custom.2])), 
  #"Added Custom4" = Table.AddColumn(#"Added Custom3", "Min", each List.Min([Custom.2])), 
  #"Added Custom5" = Table.AddColumn(#"Added Custom4", "Count", each List.Count([Custom.2])), 
  #"Removed Other Columns" = Table.SelectColumns(#"Added Custom5", {"Max", "Min", "Count"}), 
  #"Reordered Columns" = Table.ReorderColumns(#"Removed Other Columns", {"Count", "Min", "Max"})
in
  #"Reordered Columns"

Solving the challenge of Count Palindromes in Range with Excel

Excel solution 1 for Count Palindromes in Range, proposed by Bo Rydobon 🇹🇭:
=LET(
    z,
    B2:B6,
    n,
    SEQUENCE(
        MAX(
            z
        )
    )+9,
    f,
    FILTER(
        n,
        n=MAP(
            n,
            LAMBDA(
                m,
                --CONCAT(
                    MID(
                        m,
                        LEN(
                            m
                        )+1-SEQUENCE(
                            LEN(
                            m
                        )
                        ),
                        1
                    )
                )
            )
        )
    ),
    v,
    XMATCH(
        A2:A6,
        f,
        1
    ),
    x,
    XMATCH(
        z,
        f,
        -1
    ),
    VSTACK(
        {"Count",
        "Min",
        "Max"},
        HSTACK(
            x-v+1,
            INDEX(
                f,
                v
            ),
            INDEX(
                f,
                x
            )
        )
    )
)
Excel solution 2 for Count Palindromes in Range, proposed by John V.:
=REDUCE(
    {"Count",
    "Min",
    "Max"},
    ROW(
        1:5
    ),
    LAMBDA(
        i,
        x,
        LET(
            f,
            MAX(
                10,
                INDEX(
                    A2:A6,
                    x
                )
            ),
            s,
            SEQUENCE(
                1+INDEX(
                    B2:B6,
                    x
                )-f,
                ,
                f
            ),
            b,
            MAP(
                s,
                LAMBDA(
                    x,
                    LET(
                        l,
                        LEN(
                            x
                        ),
                        z,
                        SEQUENCE(
                            l
                        ),
                        AND(
                            MID(
                                x,
                                z,
                                1
                            )=MID(
                                x,
                                1+l-z,
                                1
                            )
                        )
                    )
                )
            ),
            VSTACK(
                i,
                HSTACK(
                    SUM(
                        --b
                    ),
                    TAKE(
                        FILTER(
                            s,
                            b
                        ),
                        {1,
                        -1}
                    )
                )
            )
        )
    )
)
✅=REDUCE({"Count",
    "Min",
    "Max"},
    ROW(
        1:5
    ),
    LAMBDA(i,
    x,
    LET(s,
    9+SEQUENCE(
        MAX(
            B2:B6
        )
    ),
    f,
    FILTER(s,
    (s=MAP(
        s,
        LAMBDA(
            n,
            --CONCAT(
                MID(
                    n,
                    1+LEN(
                        n
                    )-SEQUENCE(
                        LEN(
                        n
                    )
                    ),
                    1
                )
            )
        )
    ))*(s>=INDEX(
                    A2:A6,
                    x
                ))*(s<=INDEX(
                    B2:B6,
                    x
                ))),
    VSTACK(
        i,
        HSTACK(
            COUNT(
                f
            ),
            MIN(
                f
            ),
            MAX(
                f
            )
        )
    ))))
Excel solution 3 for Count Palindromes in Range, proposed by محمد حلمي:
=REDUCE(
    {"Count",
    "Min",
    "Max"},
    
    SEQUENCE(
        ROWS(
            A2:A6
        )
    ),
    LAMBDA(
        e,
        r,
        LET(
            
            o,
            INDEX(
                A2:A6,
                r
            ),
            
            s,
            SEQUENCE(
                INDEX(
                    B2:B6,
                    r
                )-o+1,
                ,
                o
            ),
            
            v,
            FILTER(
                s,
                MAP(
                    s,
                    LAMBDA(
                        d,
                        LET(
                            l,
                            LEN(
                                d
                            ),
                            
                            IF(
                                l>1,
                                d=0+CONCAT(
                                    MID(
                                        d,
                                        l-SEQUENCE(
                                            l
                                        )+1,
                                        1
                                    )
                                )
                            )
                        )
                    )
                )
            ),
            
            VSTACK(
                e,
                HSTACK(
                    ROWS(
                        v
                    ),
                    MIN(
                        v
                    ),
                    MAX(
                        v
                    )
                )
            )
        )
    )
)
Excel solution 4 for Count Palindromes in Range, proposed by 🇰🇷 Taeyong Shin:
=REDUCE(D1:F1,
    A2:A6,
    LAMBDA(a,
    v,
    LET(s,
    SEQUENCE(
        @+DROP(
            B6:v,
            ,
            1
        )-v+1,
        ,
        v
    ),
    n,
    IF(REGEXTEST(
        s,
        "^((.)(?1)2|.?)$"
    )*(s>9),
    s),
    VSTACK(
        a,
        HSTACK(
            COUNT(
                n
            ),
            MIN(
                n
            ),
            MAX(
                n
            )
        )
    ))))
Excel solution 5 for Count Palindromes in Range, proposed by Julian Poeltl:
=--TEXTSPLIT(
    TEXTJOIN(
        "|",
        ,
        MAP(
            A2:A6,
            B2:B6,
            LAMBDA(
                F,
                T,
                LET(
                    FF,
                    MAX(
                        F,
                        10
                    ),
                    S,
                    SEQUENCE(
                        T-FF,
                        ,
                        FF
                    ),
                    IP,
                    FILTER(
                        S,
                        MAP(
                            S,
                            LAMBDA(
                                A,
                                LET(
                                    L,
                                    LEN(
        &                                A
                                    ),
                                    LEFT(
                                        A,
                                        L/2
                                    )=CONCAT(
                                        MID(
                                            A,
                                            SEQUENCE(
                                                L/2,
                                                ,
                                                L,
                                                -1
                                            ),
                                            1
                                        )
                                    )
                                )
                            )
                        )
                    ),
                    TEXTJOIN(
                        ",",
                        ,
                        ROWS(
                            IP
                        ),
                        MIN(
                            IP
                        ),
                        MAX(
                            IP
                        )
                    )
                )
            )
        )
    ),
    ",",
    "|"
)
Excel solution 6 for Count Palindromes in Range, proposed by Aditya Kumar Darak 🇮🇳:
=LET(
 _fr,
     A2:A6,
    
 _t,
     B2:B6,
    
 _seq,
     SEQUENCE(
         MAX(
             _t
         ) - 10,
          ,
          10
     ),
    
 _e1,
     LAMBDA(
         a,
         
          --CONCAT(
              MID(
                  a,
                   SEQUENCE(
                       LEN(
                           a
                       ),
                        ,
                        LEN(
                           a
                       ),
                        -1
                   ),
                   1
              )
          ) = a
          
     ),
    
 _c1,
     MAP(
         _seq,
          _e1
     ),
    
 _f,
     FILTER(
         _seq,
          _c1
     ),
    
 _e2,
     LAMBDA(a,
     b,
    
 VSTACK(
 a,
    
 LET(
 fr,
     INDEX(
         _fr,
          b
     ),
    
 t,
     INDEX(
         _t,
          b
     ),
    
 f,
     FILTER(_f,
     (_f >= fr) * (_f <= t)),
    
 r,
     HSTACK(
         COUNT(
             f
         ),
          MIN(
             f
         ),
          MAX(
             f
         )
     ),
    
 r
 )
 )
 ),
    
 _r,
     REDUCE(
         {"Count",
          "Min",
          "Max"},
          SEQUENCE(
              COUNT(
                  _fr
              )
          ),
          _e2
     ),
    
 _r
)
Excel solution 7 for Count Palindromes in Range, proposed by Timothée BLIOT:
=REDUCE({"Count",
    "Min",
    "Max"},
    A2:A6,
     LAMBDA(ac,
    v,
    
LET(w,
     XLOOKUP(
         v,
         A2:A6,
         B2:B6
     ),
     S,
     SEQUENCE(
         w-v+1,
         ,
         v
     ),
     A,
     FILTER(
         S,
         LEN(
             S
         )>1
     ),
    
B,
     MAP(
         A,
          LAMBDA(
              x,
               LEFT(
                   x,
                   ROUNDDOWN(
                       LEN(
                           x
                       )/2,
                       0
                   )
               )*1 
          )
     ),
    
D,
     MAP(
         A,
          LAMBDA(
              x,
               LET(
                   W,
                    RIGHT(
                   x,
                   ROUNDDOWN(
                       LEN(
                           x
                       )/2,
                       0
                   )
               ),
                    CONCAT(
                        MID(
                            W,
                            SEQUENCE(
                                LEN(
                                    W
                                ),
                                ,
                                LEN(
                                    W
                                ),
                                -1
                            ),
                            1
                        )
                    )*1 
               )
          )
     ),
    
VSTACK(ac,
     HSTACK(SUM(--(B=D)),
    MIN(
        FILTER(
            A,
            B=D
        )
    ),
    MAX(
        FILTER(
            A,
            B=D
        )
    ))))))
Excel solution 8 for Count Palindromes in Range, proposed by Hussein SATOUR:
=LET(
    
     fr,
     A2:A6,
     to,
     B2:B6,
    
     F,
     LAMBDA(
         x,
          y,
         
          LET(
              a,
               SEQUENCE(
                   y - x,
                    ,
                    x
               ),
              
               FILTER(
                   a,
                   
                    a = MAP(
                        a,
                        
                         LAMBDA(
                             z,
                              --CONCAT(
                                  MID(
                                      z,
                                       SEQUENCE(
                                           LEN(
                                               z
                                           ),
                                            ,
                                            LEN(
                                               z
                                           ),
                                            -1
                                       ),
                                       1
                                  )
                              )
                              
                         ) 
                    ) 
               ) 
          ) 
     ),
    
     Co,
     MAP(
         fr,
          to,
          LAMBDA(
              x,
               y,
               COUNT(
                   F(
                       x,
                        y
                   )
               )
          )
     ),
    
     Mi,
     MAP(
         fr,
          to,
          LAMBDA(
              x,
               y,
               MIN(
                   F(
                       x,
                        y
                   )
               )
          )
     ),
    
     Ma,
     MAP(
         fr,
          to,
          LAMBDA(
              x,
               y,
               MAX(
                   F(
                       x,
                        y
                   )
               )
          )
     ),
    
     HSTACK(
         Co,
          Mi,
          Ma
     )
)
Excel solution 9 for Count Palindromes in Range, proposed by Md. Zohurul Islam:
=LET(
    
    aa,
    A2:B6,
    
    bb,
    
    BYROW(
        aa,
        LAMBDA(
            z,
            LET(
                a,
                ABS(
                    TAKE(
                        z,
                        ,
                        1
                    )
                ),
                b,
                ABS(
                    TAKE(
                        z,
                        ,
                        -1
                    )
                ),
                c,
                b-a+1,
                d,
                SEQUENCE(
                    c,
                    ,
                    a
                ),
                
                e,
                MAP(
                    d,
                    LAMBDA(
                        p,
                        LET(
                            q,
                            LEN(
                                p
                            ),
                            r,
                            SEQUENCE(
                                q,
                                ,
                                q,
                                -1
                            ),
                            s,
                            MID(
                                p,
                                r,
                                1
                            ),
                            u,
                            ABS(
                                CONCAT(
                                    s
                                )
                            ),
                            u
                        )
                    )
                ),
                
                f,
                MAP(
                    d,
                    e,
                    LAMBDA(
                        x,
                        y,
                        IF(
                            AND(
                                LEN(
                                    x
                                )>1,
                                x=y
                            ),
                            1,
                            0
                        )
                    )
                ),
                g,
                FILTER(
                    d,
                    f>0
                ),
                
                h,
                TEXTJOIN(
                    "/",
                    ,
                    COUNT(
                        g
                    ),
                    MIN(
                        g
                    ),
                    MAX(
                        g
                    )
                ),
                h
            )
        )
    ),
    
    hdr,
    HSTACK(
        "Count",
        "Min",
        "Max"
    ),
    
    cc,
    REDUCE(
        hdr,
        bb,
        LAMBDA(
            v,
            w,
            LET(
                dd,
                TEXTSPLIT(
                    w,
                    "/"
                ),
                ee,
                VSTACK(
                    v,
                    ABS(
                        dd
                    )
                ),
                ee
            )
        )
    ),
    cc
)
Excel solution 10 for Count Palindromes in Range, proposed by Charles Roldan:
=LAMBDA(
    _ISPAL,
    LET(
        Data,
        A2:B6,
        Candidates,
        SEQUENCE(
            MAX(
                Data
            )
        ),
        
        Pals,
        FILTER(
            Candidates,
            MAP(
                Candidates,
                _ISPAL
            )
        ),
        
        Indices,
        IFNA(
            MATCH(
                Data,
                Pals,
                1
            ),
            
        ),
        
        HSTACK(
            MMULT(
                Indices,
                {-1;1}
            ),
            INDEX(
                Pals,
                {1,
                0}+Indices
            )
        )
    )
)(LAMBDA(
x,
    LET(y,
    LEN(
        x
    ),
    (y>1)*(x=--CONCAT(
        MID(
            x,
            SEQUENCE(
                y,
                1,
                y,
                -1
            ),
            1
        )
    )))))
Excel solution 11 for Count Palindromes in Range, proposed by Stefan Olsson:
=MAP(A2:A6,
     B2:B6,
     
LAMBDA(f,
     t,
     
QUERY(
MAP(SEQUENCE(
    t-f+1,
     1,
     f,
     1
),
     
LAMBDA(s,
     
 s*(s>9)*(s=--REGEXREPLACE(
     s&"",
      REPT(
          "(d)",
           LEN(
               s
           )
      ),
      JOIN(
          "$",
           "",
           
           SEQUENCE(
               LEN(
               s
           ),
                1,
                LEN(
               s
           ),
                -1
           )
      )
 ))
)
),
    
"Select Count(Col1), Min(Col1), Max(Col1) Where Col1>0 Label Count(Col1) '', Min(Col1) '', Max(Col1) ''",
    0)
)
)
Excel solution 12 for Count Palindromes in Range, proposed by Victor Momoh (MVP, MOS, R.Eng):
=VSTACK({"Count",
    "Min",
    "Max"},
    DROP(REDUCE("",
    SEQUENCE(
        COUNTA(
            A2:A6
        )
    ),
    LAMB 
DA(p,
    q,
     
VSTACK(p,
     
LET(a,
    SEQUENCE(
        INDEX(
            B2:B6,
            q
        )-INDEX(
            A2:A6,
            q
        )+1,
        ,
        INDEX(
            A2:A6,
            q
        )
    ),
     
b,
    FILTER(a,
    (a>9)*(MAP(
        a,
        LAMBDA(
            x,
            x=--CONCAT(
                MID(
                    x,
                    SEQUENCE(
                        LEN(
                            x
                        ),
                        ,
                        LEN(
                            x
                        ),
                        -1
                    ),
                     
                    1
                )
            )
        )
    ))),
     
HSTACK(
    COUNT(
        b
    ),
    MIN(
        b
    ),
    MAX(
        b
    )
))))),
    1))
Excel solution 13 for Count Palindromes in Range, proposed by Abhishek Kumar Jain:
=VSTACK(
    {"Count",
    "Min",
    "Max"},
    --TEXTSPLIT(
        TEXTJOIN(
            "|",
            TRUE,
            MAP(
                A2:A6,
                B2:B6,
                LAMBDA(
                    y,
                    z,
                    LET(
                        a,
                        SEQUENCE(
                            z-y+1,
                            ,
                            y
                        ),
                        b,
                        MAP(
                            a,
                            LAMBDA(
                                x,
                                IFS(
                                    x<10,
                                    0,
                                    x=--TEXTJOIN(
                                        "",
                                        TRUE,
                                        MID(
                                            x,
                                            SEQUENCE(
                                                LEN(
                                                    x
                                                ),
                                                ,
                                                LEN(
                                                    x
                                                ),
                                                -1
                                            ),
                                            1
                                        )
                                    ),
                                    1,
                                    TRUE,
                                    0
                                )
                            )
                        ),
                        c,
                        MIN(
                            FILTER(
                                a,
                                b=1
                            )
                        ),
                        d,
                        MAX(
                            FILTER(
                                a,
                                b=1
                            )
                        ),
                        SUM(
                            b
                        )&" "&c&" "&d
                    )
                )
            )
        ),
        " ",
        "|"
    )
)
Excel solution 14 for Count Palindromes in Range, proposed by Guillermo Arroyo:
=VSTACK({"Count",
    "Min",
    "Max"},
    --TEXTSPLIT(TEXTJOIN("&",
    0,
    MAP(A2:A6,
    B2:B6,
    LAMBDA(i,
    j,
    LET(a,
    SEQUENCE(
        j-i+1,
        ,
        i,
        1
    ),
    b,
    MAP(a,
    LAMBDA(c,
    --(CONCAT(
        MID(
            c,
            SEQUENCE(
                LEN(
                    c
                ),
                ,
                LEN(
                    c
                ),
                -1
            ),
            1
        )
    )))),
    d,
    FILTER(a,
    (LEN(
        a
    )>1)*(a=b)),
    TEXTJOIN(
        "|",
        0,
        COUNT(
            d
        ),
        MIN(
            d
        ),
        MAX(
            d
        )
    ))))),
    "|",
    "&"))
Excel solution 15 for Count Palindromes in Range, proposed by roberto mensa:
=SUM(--(LEFT(
    ROW(
        INDIRECT(
            A2&":"&B2
        )
    ),
    INT(
        LEN(
            ROW(
                INDIRECT(
                    A2&":"&B2
                )
            )
        )/2
    )
)=LEFT(TEXT(MMULT(RIGHT(
    INT(
        RIGHT(
            ROW(
                INDIRECT(
                    A2&":"&B2
                )
            ),
            INT(
                LEN(
                    ROW(
                        INDIRECT(
                            A2&":"&B2
                        )
                    )
                )/2
            )
        )/10^SEQUENCE(
            ,
            15,
            0
        )
    )
)*1,
    10^(15-ROW(
        $1:$15
    ))),
    REPT(
        0,
        15
    )),
    LEN(
        RIGHT(
            ROW(
                INDIRECT(
                    A2&":"&B2
                )
            ),
            INT(
                LEN(
                    ROW(
                        INDIRECT(
                            A2&":"&B2
                        )
                    )
                )/2
            )
        )
    ))))
Min
=SMALL(IF(LEFT(
    ROW(
        INDIRECT(
            A2&":"&B2
        )
    ),
    INT(
        LEN(
&            ROW(
                INDIRECT(
                    A2&":"&B2
                )
            )
        )/2
    )
)=LEFT(TEXT(MMULT(RIGHT(
    INT(
        RIGHT(
            ROW(
                INDIRECT(
                    A2&":"&B2
                )
            ),
            INT(
                LEN(
                    ROW(
                        INDIRECT(
                            A2&":"&B2
                        )
                    )
                )/2
            )
        )/10^SEQUENCE(
            ,
            15,
            0
        )
    )
)*1,
    10^(15-ROW(
        $1:$15
    ))),
    REPT(
        0,
        15
    )),
    LEN(
        RIGHT(
            ROW(
                INDIRECT(
                    A2&":"&B2
                )
            ),
            INT(
                LEN(
                    ROW(
                        INDIRECT(
                            A2&":"&B2
                        )
                    )
                )/2
            )
        )
    )),
    ROW(
        INDIRECT(
            A2&":"&B2
        )
    )),
    1)
Max
=LARGE(IF(LEFT(
    ROW(
        INDIRECT(
            A2&":"&B2
        )
    ),
    INT(
        LEN(
            ROW(
                INDIRECT(
                    A2&":"&B2
                )
            )
        )/2
    )
)=LEFT(TEXT(MMULT(RIGHT(
    INT(
        RIGHT(
            ROW(
                INDIRECT(
                    A2&":"&B2
                )
            ),
            INT(
                LEN(
                    ROW(
                        INDIRECT(
                            A2&":"&B2
                        )
                    )
                )/2
            )
        )/10^SEQUENCE(
            ,
            15,
            0
        )
    )
)*1,
    10^(15-ROW(
        $1:$15
    ))),
    REPT(
        0,
        15
    )),
    LEN(
        RIGHT(
            ROW(
                INDIRECT(
                    A2&":"&B2
                )
            ),
            INT(
                LEN(
                    ROW(
                        INDIRECT(
                            A2&":"&B2
                        )
                    )
                )/2
            )
        )
    )),
    ROW(
        INDIRECT(
            A2&":"&B2
        )
    )),
    1)

Solving the challenge of Count Palindromes in Range with Python in Excel

Python in Excel solution 1 for Count Palindromes in Range, proposed by Alejandro Campos:
def is_palindrome(n):
 s = str(n)
 return s == s[::-1]
def find_palindromes_in_range(start, end):
 palindromes = [num for num in range(start, end + 1) if is_palindrome(num)]
 count = len(palindromes)
 if count > 0:
 min_palindrome = min(palindromes)
 max_palindrome = max(palindromes)
 else:
 min_palindrome = None
 max_palindrome = None
 return count, min_palindrome, max_palindrome
ranges = [
 (10, 100),
 (28, 178),
 (78, 499),
 (234, 655),
 (1000, 20000)
]
data = []
for start, end in ranges:
 count, min_palindrome, max_palindrome = find_palindromes_in_range(start, end)
 data.append({
 'Count': count,
 'Min': min_palindrome,
 'Max': max_palindrome
 })
df = pd.DataFrame(data)
df
                    
                  

Solving the challenge of Count Palindromes in Range with SQL

SQL solution 1 for Count Palindromes in Range, proposed by Zoran Milokanović:
WITH /* Microsoft SQL Server 2019 */
NUMBERS
AS
(
 SELECT
 D."FROM" AS NUM
 ,D."FROM"
 ,D."TO"
 FROM DATA D
 UNION ALL
 SELECT
 N.NUM + 1 AS NUM
 ,N."FROM"
 ,N."TO"
 FROM NUMBERS N
 WHERE
 N.NUM < N."TO"
)
SELECT
 COUNT(*) AS COUNT
,MIN(N.NUM) AS MIN
,MAX(N.NUM) AS MAX
FROM NUMBERS N
WHERE
 N.NUM = REVERSE(N.NUM)
AND LEN(N.NUM) > 1
GROUP BY
 N."FROM"
ORDER BY
 N."FROM"
OPTION (MAXRECURSION 32000)
;
                    
                  

&

Leave a Reply