Home » Draw Inverted Triangle Shape

Draw Inverted Triangle Shape

Draw inverted right angled triangles as shown for an r value. r is number of rows. So, if r=5, then 5 rows need to be generated. I have shown examples for various r values for testing. Also color is for illustration only, you need not use any conditional formatting for this.

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

Solving the challenge of Draw Inverted Triangle Shape with Power Query

Power Query solution 1 for Draw Inverted Triangle Shape, proposed by John V.:
let
 n = 7,
 R = List.Transform(List.Reverse({1..n}), (x)=> {1+(x*x-x)/2..x*(x+1)/2})
in
 Table.FromColumns(List.Zip(R))

Blessings!


                    
                  
          
Power Query solution 2 for Draw Inverted Triangle Shape, proposed by John V.:
let
 n = 7,
 a = List.Accumulate({2..n}, {1}, (s, c) => s & {List.Last(s) + c - 1}),
 R = List.Reverse(List.Transform({1..n}, each {a{_ - 1}.._ * (_ + 1) / 2}))
in
 Table.FromColumns(List.Zip(R))

Blessings!


                    
                  
          
Power Query solution 3 for Draw Inverted Triangle Shape, proposed by John V.:
let
 n = 7,
 R = List.Generate( ()=> [i = 2, c = 2, r = {1}],  each [i] < n + 2,  each [i = [i] + 1, c = [c] + [i], r = {[c]..c - 1}],  each [r] )
in
 Table.FromColumns(List.Zip(List.Reverse(R)))
Blessings!
                    
                  
          
Power Query solution 4 for Draw Inverted Triangle Shape, proposed by Alejandro Simón 🇵🇦 🇪🇸:
let
 A = 7,
 B = List.Sum({1..A}),
 C = {1..B},
 Sol = Table.FromColumns(List.Zip(List.Reverse(List.Transform({0..A-1}, 
 each List.FirstN(List.RemoveFirstN(C, List.Sum({0.._})), _+1)))))
in
 Sol

o utilizar esta función e invocarla con los valores requeridos...

(n)=>
let
 A = n,
 B = List.Sum({1..A}),
 C = {1..B},
 Sol = Table.FromColumns(List.Zip(List.Reverse(List.Transform({0..A-1}, 
 each List.FirstN(List.RemoveFirstN(C, List.Sum({0.._})), _+1)))))
in
 Sol


                    
                  
          
            

  
                  
    
      
        Show translation
      
      
        Show translation of this comment
Power Query solution 5 for Draw Inverted Triangle Shape, proposed by Luan Rodrigues:
let
  r = 4, 
  t = Text.Length(Text.Combine(List.Transform({1 .. r}, each Text.Repeat("a", _)))), 
  l = List.Transform(
    {0 .. r - 1}, 
    each List.FirstN(List.RemoveFirstN({1 .. t}, List.Sum({0 .. _})), _ + 1)
  ), 
  res = Table.Transpose(Table.FromColumns(List.Reverse(l)))
in
  res
Power Query solution 6 for Draw Inverted Triangle Shape, proposed by Ramiro Ayala Chávez:
let
  t = Excel.CurrentWorkbook(){[Name = "Table4"]}[Content], 
  a = t[r]{0}, 
  b = List.Generate(
    () => [i = 1, j = 1], 
    each [i] <= a, 
    each [i = [i] + 1, j = [i] + [j] + 1], 
    each [j]
  ), 
  c = {List.First(b) .. List.Last(b)}, 
  d = List.Generate(
    () => [i = 1], 
    each [i] <= List.Count(b), 
    each [i = [i] + 1], 
    each List.Repeat({[i]}, [i])
  ), 
  e = Table.FromColumns({c, List.Combine(d)}, {"C1", "C2"}), 
  f = Table.Group(e, {"C2"}, {{"G", each _}})[G], 
  g = List.Reverse(List.Transform(f, each Table.SelectColumns(_, "C1")[C1])), 
  Sol = Table.Transpose(Table.FromColumns(g))
in
  Sol
Power Query solution 7 for Draw Inverted Triangle Shape, proposed by Rafael González B.:
let
 LB = {1..r},
 LS = {1..List.Sum(LB)},
 LG = List.Generate(
 () => [OS = 0, C = 1],
 each [C] <= r + 1,
 each [
 OS = [OS] + [C],
 C = [C] + 1,
 L = List.Range(LS, [OS], [C])
 ],
 each [L]
 ),
 LR = List.Reverse(List.RemoveFirstN(LG)),
 Result = Table.FromColumns(List.Zip(LR))
in
 Result
🧙‍♂️🧙‍♂️🧙‍♂️
Happy Weekend!!!
                    
                  
          
Power Query solution 8 for Draw Inverted Triangle Shape, proposed by Glyn Willis:
let
  Source = Table.FromList({2, 3, 4, 7}, Splitter.SplitByNothing(), {"R"}), 
  #"Added Custom" = Table.AddColumn(
    Source, 
    "Custom", 
    each [
      L = Table.Combine(
        List.Reverse(
          let
            I = Int64.From([R])
          in
            List.Generate(
              () => [R = I, T = 1, N = {1 .. T}, M = List.Max(N)], 
              each [R] > 0, 
              each [R = [R] - 1, T = [T] + 1, N = {[M] + 1 .. [M] + T}, M = List.Max(N)], 
              each Table.FromRows(
                {{I} & [N]}, 
                {"R"} & List.Transform({1 .. [T]}, (x) => "Column" & Text.From(x))
              )
            )
        )
      )
    ][L]
  ), 
  Custom = Table.Combine(#"Added Custom"[Custom])
in
  Custom
Power Query solution 9 for Draw Inverted Triangle Shape, proposed by Arden Nguyen, CPA:
let
  n = 7, 
  a = List.TransformMany(
    {0 .. n - 1}, 
    each {1 + _ * (_ + 1) / 2}, 
    (x, y) => Table.FromRows({List.Numbers(y, x + 1)})
  ), 
  b = Table.Combine(List.Reverse(a))
in
  b

Solving the challenge of Draw Inverted Triangle Shape with Excel

Excel solution 1 for Draw Inverted Triangle Shape, proposed by Bo Rydobon 🇹🇭:
=LET(s,SEQUENCE(A14),t,TOROW(s),SORT(IF(s
Excel solution 2 for Draw Inverted Triangle Shape, proposed by Bo Rydobon 🇹🇭:
=LET(
    s,
    SEQUENCE(
        A9,
        ,
        0
    ),
    t,
    TOROW(
        s
    ),
    SORT(
        IF(
            s
Excel solution 3 for Draw Inverted Triangle Shape, proposed by Rick Rothstein:
=IFNA(REDUCE(,
    SEQUENCE(
        A9
    ),
    LAMBDA(a,
    x,
    VSTACK(SEQUENCE(,
    x,
    1+x*(x-1)/2),
    a))),
    "")
Excel solution 4 for Draw Inverted Triangle Shape, proposed by Rick Rothstein:
=TEXTSPLIT(TEXTJOIN("/",
    ,
    MAP(SEQUENCE(
        A2,
        ,
        A2,
        -1
    ),
    LAMBDA(x,
    TEXTJOIN(" ",
    ,
    SEQUENCE(,
    x,
    (x*x-x+2)/2))))),
    " ",
    "/",
    ,
    ,
    "")
Excel solution 5 for Draw Inverted Triangle Shape, proposed by John V.:
=LET(
    s,
    SEQUENCE(
        A2
    ),
    c,
    s
Excel solution 6 for Draw Inverted Triangle Shape, proposed by John V.:
= 7
d = pd.DataFrame(list(range(1+sum(range(i)),1+i*(i+1)//2)) for i in range(n,0,-1)).fillna('')
Excel solution 7 for Draw Inverted Triangle Shape, proposed by محمد حلمي:
=LET(
    n,
    A14,
    s,
    SEQUENCE(
        n
    )-1,
    v,
    TOROW(
        s
    ),
    IF(
        n-v>s,
        
        SORT(
            SCAN(
                1,
                s,
                LAMBDA(
                    a,
                    d,
                    a+d
                )
            ),
            ,
            -1
        )+v,
        ""
    )
)

For all

=DROP(
    REDUCE(
        0,
        A2:A20,
        LAMBDA(
            q,
            n,
            
            IFNA(
                VSTACK(
                    q,
                    LET(
                        s,
                        SEQUENCE(
        n
    )-1,
                        v,
                        TOROW(
        s
    ),
                        
                        IF(
                            n,
                            IF(
                                n-v>s,
                                
                                SORT(
            SCAN(
                1,
                s,
                LAMBDA(
                    a,
                    d,
                    a+d
                )
            ),
            ,
            -1
        )+v,
                                ""
                            ),
                            ""
                        )
                    )
                ),
                ""
            )
        )
    ),
    1
)
Excel solution 8 for Draw Inverted Triangle Shape, proposed by Kris Jaganah:
=LET(a,
    SEQUENCE(
        A14,
        ,
        A14,
        -1
    ),
    b,
    --(a<=TOROW(
        a
    )),
    SORT(
        IF(
            b,
            SCAN(
                0,
                b,
                SUM
            ),
            ""
        ),
        ,
        -1
    ))
Excel solution 9 for Draw Inverted Triangle Shape, proposed by Timothée BLIOT:
=SORTBY(
    REDUCE(
        1,
        SEQUENCE(
            A2-1
        ),
        LAMBDA(
            a,
            v,
            IFERROR(
                VSTACK(
                    a,
                     SEQUENCE(
                         1,
                         v+1
                     )+MAX(
                         a
                     )
                ),
                ""
            )
        )
    ),
    SEQUENCE(
        A2
    ),
    -1
)
Excel solution 10 for Draw Inverted Triangle Shape, proposed by Hussein SATOUR:
=TEXTSPLIT(LET(a,
     SEQUENCE((A2*(A2+1))/2),
     b,
     SEQUENCE(
         A2,
         ,
         A2,
         -1
     ),
     c,
     SCAN(
         -A2,
          b,
          SUM
     )+SEQUENCE(
         A2,
         ,
         0
     ),
    
CONCAT(
    MAP(
        b,
        c,
         LAMBDA(
             x,
             y,
              TEXTJOIN(
                  ",",
                  ,
                   TAKE(
                       DROP(
                           a,
                           -y
                       ),
                        -x
                   )
              )&"/"
         )
    )
)),
     ",",
     "/",
     1,
    ,
     "")
Excel solution 11 for Draw Inverted Triangle Shape, proposed by Sunny Baggu:
=LET(
    
     _s,
     SEQUENCE(
         A14,
          ,
          0
     ),
    
     _v,
     SCAN(
         1,
          _s,
          LAMBDA(
              a,
               v,
               a + v
          )
     ),
    
     _tbl,
     _v + TOROW(
         _s
     ),
    
     SORT(
         IF(
             _s < TOROW(
         _s
     ),
              "",
              _tbl
         ),
          ,
          -1
     )
    
)
Excel solution 12 for Draw Inverted Triangle Shape, proposed by LEONARD OCHEA 🇷🇴:
=LET(n,
    A14,
    IFNA(DROP(REDUCE("",
    n-SEQUENCE(
        n
    )+1 ,
    LAMBDA(a,
    b,
    VSTACK(a,
    SEQUENCE(,
    b,
    (b-1)*b/2+1)))),
    1),
    ""))
Excel solution 13 for Draw Inverted Triangle Shape, proposed by LEONARD OCHEA 🇷🇴:
=LET(n,
    A14,
    x,
    SEQUENCE(
        n
    ),
    s,
    n-x+1,
    t,
    (s-1)*s/2+TOROW(
        x
    ),
    IF(t<=s*(s+1)/2,
    t,
    ""))
Excel solution 14 for Draw Inverted Triangle Shape, proposed by Abdallah Ally:
=LET(
    a,
    A9,
    DROP(
        IFNA(
            REDUCE(
                1,
                 SEQUENCE(
                     a,
                     ,
                     a,
                     -1
                 ),
                 LAMBDA(
                     x,
                     y,
                     VSTACK(
                         x,
                         SEQUENCE(
                             ,
                             y,
                             y^2+1-SUM(
                                 SEQUENCE(
                                     y
                                 )
                             )
                         )
                     )
                 )
            ),
            ""
        ),
        1
    )
)
Excel solution 15 for Draw Inverted Triangle Shape, proposed by Charles Roldan:
=LAMBDA(
    x,
     LET(
         n,
          x + 1,
          DROP(
              MAKEARRAY(
                  n,
                   n,
                   LAMBDA(
                       i,
                       j,
                        
                       REPT(
                           IFERROR(
                               COMBIN(
                                   n - i,
                                    2
                               ),
                                
                           ) + j,
                            i + j <= n
                       )
                   )
              ),
               -1,
               -1
          )
     )
    
)(A14)
Excel solution 16 for Draw Inverted Triangle Shape, proposed by Charles Roldan:
=LAMBDA(
    n,
    
     IFNA(
         
          REDUCE(
              
               ,
              
               SEQUENCE(
                   n
               ),
              
               LAMBDA(
                   a,
                    b,
                   
                    VSTACK(
                        
                         SEQUENCE(
                             ,
                              b,
                              COMBIN(
                                  b,
                                   2
                              )
                         ) + 1,
                        
                         a
                         
                    )
                    
               )
               
          ),
         
          ""
       &   
     )
    
)(A14)
Excel solution 17 for Draw Inverted Triangle Shape, proposed by Pieter de Bruijn:
=LET(
    r,
    7,
    MAKEARRAY(
        r,
        r,
        LAMBDA(
            x,
            y,
            IFERROR(
                INDEX(
                    TAKE(
                        SEQUENCE(
                            SUM(
                                SEQUENCE(
                                    r+1-x
                                )
                            )
                        ),
                        -r-1+x
                    ),
                    y,
                    1
                ),
                ""
            )
        )
    )
)

or
=LET(
    r,
    7,
    DROP(
        REDUCE(
            "",
            SEQUENCE(
                r
            ),
            LAMBDA(
                x,
                y,
                IFNA(
                    VSTACK(
                        x,
                        TAKE(
                            SEQUENCE(
                                ,
                                SUM(
                                    SEQUENCE(
                                        r-y+1
                                    )
                                )
                            ),
                            ,
                            -r+y-1
                        )
                    ),
                    ""
                )
            )
        ),
        1
    )
)
Excel solution 18 for Draw Inverted Triangle Shape, proposed by Ziad A.:
=MAKEARRAY(A2,
    A2,
    LAMBDA(i,
    j,
    IF(j-1>A2-i,
    ,
    (A2-i)*(A2-i+1)/2+j)))
Excel solution 19 for Draw Inverted Triangle Shape, proposed by Giorgi Goderdzishvili:
=LET(
_r,
    A14,
    
_mkr,
     MAKEARRAY(_r,
    _r,
    LAMBDA(r,
    c,
    
IF( (r+c-2)>=_r,
    "",
    IFERROR(
        SUM(
            SEQUENCE(
                _r - r
            )
        )+1,
        1
    )+(c-1)))),
    
_mkr)
Excel solution 20 for Draw Inverted Triangle Shape, proposed by Diarmuid Early:
=IFNA(REDUCE(1,
    DROP(
        SEQUENCE(
            A2
        ),
        1
    ),
    
 LAMBDA(a,
    v,
    VSTACK(SEQUENCE(,
    v,
    (v^2-v)/2+1),
    a))),
    "")
Excel solution 21 for Draw Inverted Triangle Shape, proposed by LUIS FLORENTINO COUTO CORTEGOSO:
=SORT(MAKEARRAY(A14,
    A14,
    LAMBDA(x,
    y,
    IF(x>=y,
    (x^2-x)/2+y,
    ""))),
    ,
    -1)
=LET(r,
    A14,
    MAKEARRAY(r,
    r,
    LAMBDA(x,
    y,
    IF(x
Excel solution 22 for Draw Inverted Triangle Shape, proposed by Md Ismail Hosen:
=LAMBDA(r,
     DROP(REDUCE("",
     SEQUENCE(
         r
     ),
     LAMBDA(a,
    c,
     VSTACK(a,
     EXPAND(SEQUENCE(1,
     r - c + 1,
     (r - c) * (r - c + 1) * 0.5 + 1),
     1,
     r,
     "")))),
     1))(7)
Excel solution 23 for Draw Inverted Triangle Shape, proposed by Josh Brodrick:
=SORT(IF(SEQUENCE(L30)
Excel solution 24 for Draw Inverted Triangle Shape, proposed by Arden Nguyen, CPA:
=REDUCE(
    1,
    SEQUENCE(
        A14-1,
        ,
        2
    ),
    LAMBDA(
        a,
        c,
        IFNA(
            VSTACK(
                SEQUENCE(
                    ,
                    c,
                    MAX(
                        a
                    )+1
                ),
                a
            ),
            ""
        )
    )
)
or
=LET(
x,
    7,
    SORT(MAKEARRAY(x,
    x,
    LAMBDA(r,
    c,
    IF(r
Excel solution 25 for Draw Inverted Triangle Shape, proposed by Daniel Madhadha:
=LET(a,
    SEQUENCE(
        A14,
        ,
        A14,
        -1
    ),
    b,
    --(a<=TRANSPOSE(
        a
    )),
    SORT(
        IF(
            b,
            SCAN(
                0,
                b,
                SUM
            ),
            ""
        ),
        ,
        -1
    ))
Excel solution 26 for Draw Inverted Triangle Shape, proposed by Narayanan J 🇮🇳:
=LET(v,
    A14,
    MAKEARRAY(v,
    v,
    LAMBDA(r,
    c,
    IF(r+c-1>v,
    "",
    LET(i,
    v-r+1,
    n,
    (i*(i+1)/2),
    n-i+c)))))

2)
=LET(i,
    A1,
    MAKEARRAY(i,
    i,
    LAMBDA(rw,
    c,
    LET(r,
    inp-rw+1,
    IF(c>r,
    "",
    (r-1)*r/2+c)))))

Solving the challenge of Draw Inverted Triangle Shape with Python

Python solution 1 for Draw Inverted Triangle Shape, proposed by Jan Willem Van Holst:
In Python:
import numpy as np
def fx(number):
 cumsumList = np.cumsum(list(range(number)))+1
 inverseTriangleList = []
 for i in range(number):
 rest = list(range(first+1,first+i+1))
 inverseTriangleList.append( [first] + rest ) 
 return inverseTriangleList[::-1]
 
answer = [fx(x)for x in [2,3,4,7]]
                    
                  

Solving the challenge of Draw Inverted Triangle Shape with R

R solution 1 for Draw Inverted Triangle Shape, proposed by Konrad Gryczan, PhD:
library(tidyverse)
library(readxl)
test2 = read_excel("Excel/372 Draw Inverted Right Angled Triangle.xlsx", range = "B2:C3", col_names = FALSE) %>%
 set_names(paste0("V", 1:ncol(.))) 
test3 = read_excel("Excel/372 Draw Inverted Right Angled Triangle.xlsx", range = "B5:D7", col_names = FALSE) %>%
 set_names(paste0("V", 1:ncol(.))) 
test4 = read_excel("Excel/372 Draw Inverted Right Angled Triangle.xlsx", range = "B9:E12", col_names = FALSE) %>%
 set_names(paste0("V", 1:ncol(.))) 
test7 = read_excel("Excel/372 Draw Inverted Right Angled Triangle.xlsx", range = "B14:H20", col_names = FALSE) %>%
 set_names(paste0("V", 1:ncol(.))) 
draw_inverted_triangle <- function(size) {
 numbers <- seq(size * (size + 1) / 2, 1)
 mat <- matrix(NA, nrow = size, ncol = size)
 
 mat[lower.tri(mat, diag = TRUE)] <- numbers
 mat <- apply(mat, 2, rev) %>% t()
 as_tibble(mat) %>% 
 print(n = Inf)
}
                    
                  

&&

Leave a Reply