Home » Generate the result table with Tn = T(n-2) & Tn

Generate the result table with Tn = T(n-2) & Tn

Generate the result table. Here, Tn = T(n-2) & Tn where & is concatenation operator.

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

Solving the challenge of Generate the result table with Tn = T(n-2) & Tn with Power Query

Power Query solution 1 for Generate the result table with Tn = T(n-2) & Tn, proposed by Zoran Milokanović:
let
  Source = Excel.CurrentWorkbook(){[Name = "Input"]}[Content], 
  S = Table.FromRows(
    List.Transform(
      Table.ToRows(Source), 
      each 
        let
          T = Text.From
        in
          List.Accumulate(
            List.Skip(_, 2), 
            List.FirstN(_, 2), 
            (s, c) => s & {T(List.Reverse(s){1}) & T(c)}
          )
    )
  )
in
  S
Power Query solution 2 for Generate the result table with Tn = T(n-2) & Tn, proposed by Alejandro Simón 🇵🇦 🇪🇸:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  Col = Table.FromRows(
    Table.AddColumn(
      Source, 
      "A", 
      each List.RemoveNulls(
        let
          z = List.Transform(Record.ToList(_), Text.From), 
          a = {List.Alternate(z, 1, 1, 1)} & {List.Alternate(z, 1, 1, 0)}, 
          b = List.Transform(a, Text.Combine), 
          c = List.Combine(
            List.Zip(
              List.Transform(
                b, 
                each List.Transform({1 .. Text.Length(_)}, (x) => Text.Range(_, 0, x))
              )
            )
          )
        in
          c
      )
    )[A]
  )
in
  Col
Power Query solution 3 for Generate the result table with Tn = T(n-2) & Tn, proposed by Luan Rodrigues:
let
  Fonte = Tabela1, 
  res = Table.Combine(
    Table.AddColumn(
      Fonte, 
      "Personalizar", 
      each [
        a = List.Transform(Record.FieldValues(_), Text.From), 
        b = List.Transform(
          {1 .. List.Count(a)}, 
          (x) =>
            [
              o = List.FirstN(List.Transform(a, Text.From), x - 2), 
              p = try
                
                  if Number.IsEven(List.Count(o)) then
                    List.Alternate(o, 1, 1)
                  else
                    List.Alternate(o, 1, 1, 1)
              otherwise
                {}
            ][p]
        ), 
        c = Table.FromRows(
          {List.Transform(List.Zip({List.Transform(b, Text.Combine), a}), Text.Combine)}
        )
      ][c]
    )[Personalizar]
  )
in
  res
Power Query solution 4 for Generate the result table with Tn = T(n-2) & Tn, proposed by Ramiro Ayala Chávez:
let
  Origen = Excel.CurrentWorkbook(){[Name = "Tabla1"]}[Content], 
  a = Table.ToRows(Origen), 
  b = List.Transform(a, each List.Alternate(_, 1, 1, 1)), 
  c = List.Transform(a, each List.Alternate(_, 1, 1)), 
  d = List.Transform(b, each List.RemoveLastN(_)), 
  e = List.Transform(c, each List.RemoveLastN(_)), 
  f = List.Transform(d, each List.RemoveLastN(_)), 
  g = List.Transform(e, each List.RemoveLastN(_)), 
  h = List.Transform(f, each List.RemoveLastN(_)), 
  i = Table.FromColumns({h, g, f, e, d, c, b}), 
  Sol = Table.TransformColumns(
    i, 
    {
      {"Column1", each Text.Combine(List.Transform(_, Text.From))}, 
      {"Column2", each Text.Combine(List.Transform(_, Text.From))}, 
      {"Column3", each Text.Combine(List.Transform(_, Text.From))}, 
      {"Column4", each Text.Combine(List.Transform(_, Text.From))}, 
      {"Column5", each Text.Combine(List.Transform(_, Text.From))}, 
      {"Column6", each Text.Combine(List.Transform(_, Text.From))}, 
      {"Column7", each Text.Combine(List.Transform(_, Text.From))}
    }
  )
in
  Sol

Solving the challenge of Generate the result table with Tn = T(n-2) & Tn with Excel

Excel solution 1 for Generate the result table with Tn = T(n-2) & Tn, proposed by Bo Rydobon 🇹🇭:
=DROP(
    REDUCE(
        0,
        SEQUENCE(
            7
        ),
        LAMBDA(
            a,
            v,
            HSTACK(
                a,
                IFERROR(
                    CHOOSECOLS(
                        a,
                        -2
                    ),
                    ""
                )&INDEX(
                    A2:G5,
                    ,
                    v
                )
            )
        )
    ),
    ,
    1
)
Excel solution 2 for Generate the result table with Tn = T(n-2) & Tn, proposed by Rick Rothstein:
=TEXTSPLIT(
    TEXTJOIN(
        "/",
        ,
        BYROW(
            A2:G5,
            LAMBDA(
                r,
                LET(
                    s,
                    SEQUENCE(
                        ,
                        7
                    ),
                    e,
                    SCAN(
                        "",
                        s,
                        LAMBDA(
                            a,
                            x,
                            a&IF(
                                ISEVEN(
                                    x
                                ),
                                INDEX(
                                    r,
                                    ,
                                    x
                                ),
                                ""
                            )
                        )
                    ),
                    o,
                    SCAN(
                        "",
                        s,
                        LAMBDA(
                            a,
                            x,
                            a&IF(
                                ISODD(
                                    x
                                ),
                                INDEX(
                                    r,
                                    ,
                                    x
                                ),
                                ""
                            )
                        )
                    ),
                    TRIM(
                        REDUCE(
                            "",
                            s,
                            LAMBDA(
                                a,
                                x,
                                a&" "&IF(
                                    ISODD(
                                    x
                                ),
                                    INDEX(
                                        o,
                                        ,
                                        x
                                    ),
                                    INDEX(
                                        e,
                                        ,
                                        x
                                    )
                                )
                            )
                        )
                    )
                )
            )
        )
    ),
    " ",
    "/"
)
Excel solution 3 for Generate the result table with Tn = T(n-2) & Tn, proposed by John V.:
=MAKEARRAY(4,
    7,
    LAMBDA(r,
    c,
    CONCAT(INDEX(A2:G5,
    r,
    2*SEQUENCE(,
    (1+c)/2)-ISODD(
        c
    )))))
Excel solution 4 for Generate the result table with Tn = T(n-2) & Tn, proposed by محمد حلمي:
=DROP(
    REDUCE(
        0,
        A2:A5,
        LAMBDA(
            C,
            V,
            VSTACK(
                C,
                REDUCE(
                    OFFSET(
                        V,
                        ,
                        ,
                        ,
                        2
                    ),
                    OFFSET(
                        V,
                        ,
                        2,
                        ,
                        5
                    ),
                    LAMBDA(
                        A,
                        D,
                        HSTACK(
                            A,
                            TAKE(
                                DROP(
                                    A,
                                    ,
                                    -1
                                ),
                                ,
                                -1
                            )&D
                        )
                    )
                )
            )
        )
    ),
    1
)
Excel solution 5 for Generate the result table with Tn = T(n-2) & Tn, proposed by محمد حلمي:
= INDEX(
    A,
    COLUMNS(
        A
    )-1
)&D
=INDEX(
    A,
    COLUMN(
        D
    )-2
)&D



A = accumulator 

=REDUCE(
    A2:B2,
    C2:G2,
    LAMBDA(
        A,
        D,
        HSTACK(
            A,
            
            TAKE(
                DROP(
                    A,
                    ,
                    -1
                ),
                ,
                -1
            )&D
        )
    )
)

=REDUCE(
    A2:B2,
    C2:G2,
    LAMBDA(
        A,
        D,
        HSTACK(
            A,
            
            INDEX(
    A,
    COLUMNS(
        A
    )-1
)&D
        )
    )
)

=REDUCE(
    A2:B2,
    C2:G2,
    LAMBDA(
        A,
        D,
        HSTACK(
            A,
            
            INDEX(
    A,
    COLUMN(
        D
    )-2
)&D
        )
    )
)
Excel solution 6 for Generate the result table with Tn = T(n-2) & Tn, proposed by محمد حلمي:
=MAKEARRAY(
    4,
    7,
    LAMBDA(
        r,
        c,
        CONCAT(
            INDEX(
                A2:G5,
                r,
                
                IF(
                    ISODD(
                        c
                    ),
                    SEQUENCE(
                        c/2+1,
                        ,
                        ,
                        2
                    ),
                    SEQUENCE(
                        c/2
                    )*2
                )
            )
        )
    )
)
Excel solution 7 for Generate the result table with Tn = T(n-2) & Tn, proposed by Kris Jaganah:
=LET(
    a,
    A2:G5,
    b,
    SEQUENCE(
        ,
        7
    ),
    TEXTSPLIT(
        TEXTJOIN(
            "#",
            ,
            BYROW(
                a,
                LAMBDA(
                    z,
                    ARRAYTOTEXT(
                        MAP(
                            z,
                            b,
                            LAMBDA(
                                x,
                                y,
                                CONCAT(
                                    XLOOKUP(
                                        y-{6,
                                        4,
                                        2},
                                        b,
                                        z,
                                        ""
                                    )
                                )&x
                            )
                        )
                    )
                )
            )
        ),
        ", ",
        "#"
    )
)
Excel solution 8 for Generate the result table with Tn = T(n-2) & Tn, proposed by Julian Poeltl:
=DROP(
    LET(
        A,
        A2:G5,
        REDUCE(
            0,
            SEQUENCE(
                ROWS(
                    A
                )
            ),
            LAMBDA(
                B,
                C,
                VSTACK(
                    B,
                    LET(
                        S,
                        SCAN(
                            "",
                            CHOOSEROWS(
                                A,
                                C
                            ),
                            CONCAT
                        ),
                        SQ,
                        SEQUENCE(
                            ,
                            COLUMNS(
                                S
                            )
                        ),
                        MAP(
                            SQ,
                            S,
                            LAMBDA(
                                A,
                                B,
                                CONCAT(
                                    IF(
                                        ISEVEN(
                    A
                ),
                                        FILTER(
                                            MID(
                                                B,
                                                SEQUENCE(
                    A
                ),
                                                1
                                            ),
                                            ISEVEN(
                                                SEQUENCE(
                    A
                )
                                            )
                                        ),
                                        FILTER(
                                            MID(
                                                B,
                                                SEQUENCE(
                    A
                ),
                                                1
                                            ),
                                            ISODD(
                                                SEQUENCE(
                    A
                )
                                            )
                                        )
                                    )
                                )
                            )
                        )
                    )
                )
            )
        )
    ),
    1
)
Excel solution 9 for Generate the result table with Tn = T(n-2) & Tn, proposed by Timothée BLIOT:
=DROP(
    REDUCE(
        "",
        SEQUENCE(
            4
        ),
         LAMBDA(
             w,
             v,
              LET(
                  F,
                  LAMBDA(
                      n,
                      m,
                      FILTER(
                          n,
                          MOD(
                              SEQUENCE(
                                  ,
                                  m
                              ),
                              2
                          )
                      )
                  ),
                  
                  A,
                  F(
                      INDEX(
                          A2:G5,
                          v,
                          
                      ),
                      7
                  ),
                  B,
                  F(
                      INDEX(
                          B2:G5,
                          v,
                          
                      ),
                      6
                  ),
                  G,
                  LAMBDA(
                      n,
                      SCAN(
                          "",
                          n,
                          LAMBDA(
                              x,
                              y,
                              x&y
                          )
                      )
                  ),
                  VSTACK(
                      w,
                      TOROW(
                          VSTACK(
                              G(
                                  A
                              ),
                              G(
                                  B
                              )
                          ),
                          3,
                          1
                      )
                  ) 
              ) 
         )
    ),
    1
)
Excel solution 10 for Generate the result table with Tn = T(n-2) & Tn, proposed by Hussein SATOUR:
=TEXTSPLIT(
    CONCAT(
        BYROW(
            A2:G5,
             LAMBDA(
                 z,
                  LET(
        &              
                      a,
                       TOCOL(
                           z
                       ),
                       b,
                       SEQUENCE(
                           7
                       ),
                       c,
                       VSTACK(
                           SCAN(
                               ,
                               FILTER(
                                   a,
                                    MOD(
                                        b,
                                        2
                                    )>0
                               ),
                                LAMBDA(
                                    x,
                                    y,
                                     x&y
                                )
                           ),
                            SCAN(
                                ,
                                FILTER(
                                    a,
                                     MOD(
                                        b,
                                        2
                                    )=0
                                ),
                                 LAMBDA(
                                    x,
                                    y,
                                     x&y
                                )
                            )
                       ),
                      
                      CONCAT(
                          TEXTJOIN(
                              "/",
                              ,
                               SORTBY(
                                   c,
                                    LEN(
                                        c
                                    )
                               )
                          )
                      )&"|"
                  )
             )
        )
    ),
     "/",
     "|",
     1
)
Excel solution 11 for Generate the result table with Tn = T(n-2) & Tn, proposed by Sunny Baggu:
=DROP(
 REDUCE(
 "",
 SEQUENCE(ROWS(A2:G5)),
 LAMBDA(x, y,
 VSTACK(
 x,
 DROP(
 REDUCE(
 "",
 SEQUENCE(, 7),
 LAMBDA(a, v,
 HSTACK(
 a,
 LET(
 _a, SEQUENCE(v, , v, -2),
 CONCAT(INDEX(INDEX(A2:G5, y, ), SORT(FILTER(_a, _a > 0))))
 )
 )
 )
 ),
 ,
 1
 )
 )
 )
 ),
 1
)
Excel solution 12 for Generate the result table with Tn = T(n-2) & Tn, proposed by Sunny Baggu:
=MAKEARRAY(
    
     ROWS(
         A2:G5
     ),
    
     COLUMNS(
         A2:G5
     ),
    
     LAMBDA(
         r,
          c,
         
          INDEX(
              
               LET(
                   
                    _seq,
                    SEQUENCE(
                        ,
                         7
                    ),
                   
                    MAP(
                        
                         _seq,
                        
                         ROUNDUP(
                             _seq / 2,
                              0
                         ),
                        
                         LAMBDA(
                             a,
                              b,
                             
                              CONCAT(
                                  INDEX(
                                      INDEX(
                                          A2:G5,
                                           r,
                                           
                                      ),
                                       SORT(
                                           SEQUENCE(
                                               b,
                                                ,
                                                a,
                                                -2
                                           )
                                       )
                                  )
                              )
                              
                         )
                         
                    )
                    
               ),
              
               c
               
          )
          
     )
    
)
Excel solution 13 for Generate the result table with Tn = T(n-2) & Tn, proposed by Abdallah Ally:
=LET(
    a,
    A2:G5,
    f,
    LAMBDA(
        v,
        n,
        IFERROR(
            OFFSET(
                v,
                ,
                n
            ),
            ""
        )
    ),
    MAP(
        a,
        LAMBDA(
            x,
            CONCAT(
                f(
                    x,
                    -6
                ),
                f(
                    x,
                    -4
                ),
                f(
                    x,
                    -2
                ),
                x
            )
        )
    )
)
Excel solution 14 for Generate the result table with Tn = T(n-2) & Tn, proposed by Charles Roldan:
=LET(
    Data,
     A2:G5,
    
    _Build,
     LAMBDA(
         a,
          v,
          VSTACK(
              a,
               TAKE(
                   TAKE(
                       a,
                        -2
                   ),
                    1
               ) & v
          )
     ),
    
    _Gather,
     LAMBDA(
         x,
          TEXTJOIN(
              ",",
               ,
               DROP(
                   REDUCE(
                       {""; ""},
                        x,
                        _Build
                   ),
                    2
               )
          )
     ),
    
    TEXTSPLIT(
        TEXTJOIN(
            ";",
             ,
             BYROW(
                 Data,
                  _Gather
             )
        ),
         ",",
         ";"
    )
)
Excel solution 15 for Generate the result table with Tn = T(n-2) & Tn, proposed by JvdV –:
=DROP(REDUCE(A2:B5,{2,4,6},LAMBDA(x,y,HSTACK(x,TAKE(x,,-2)&OFFSET(A2,,y,4,2)))),,-1)
Excel solution 16 for Generate the result table with Tn = T(n-2) & Tn, proposed by Oscar Javier Rosero Jiménez:
=LET(
    
    _a,
    LAMBDA(
        _x,
         LET(
             y,
             _x,
              ip,
              --ISEVEN(
                  COLUMN(
                      y
                  )
              ),
             
             impar,
             SCAN(
                 ,
                 FILTER(
                     y,
                     ip=0
                 ),
                 LAMBDA(
                     i,
                     x,
                      i&x
                 )
             ),
             
             par,
             SCAN(
                 ,
                 FILTER(
                     y,
                     ip
                 ),
                 LAMBDA(
                     i,
                     x,
                      i&x
                 )
             ),
             
             DROP(
                 TOROW(
                     VSTACK(
                         impar,
                         par
                     ),
                     ,
                     2
                 ),
                 ,
                 -1
             )
         )
    ),
    
     c,
     BYROW(
         A2:G5,
          LAMBDA(
              _b,
               TEXTJOIN(
                   ",",
                   ,
                   _a(
                       _b
                   )
               )
          )
     ),
    
    TEXTSPLIT(
        TEXTJOIN(
            "-",
            ,
            c
        ),
        ",",
        "-"
    )
)
Excel solution 17 for Generate the result table with Tn = T(n-2) & Tn, proposed by Pieter de Bruijn:
=DROP(REDUCE(A2:B5,{2,4,6},LAMBDA(x,y,HSTACK(x,TAKE(x,,-2)&INDEX(C2:G5,{1;2;3;4},y+{0,1})))),,-1)

or a little longer, but more dynamical:
=LET(a,A2:G5,DROP(REDUCE(TAKE(a,,1),SEQUENCE(,INT(COLUMNS(a)/2),,2),LAMBDA(x,y,HSTACK(x,TAKE(x,,-2)&INDEX(DROP(a,,2),SEQUENCE(ROWS(a)),y+{0,1})))),,-1))
Excel solution 18 for Generate the result table with Tn = T(n-2) & Tn, proposed by Victor Momoh (MVP, MOS, R.Eng):
=LET(
    a,
    A2:H5,
    MAKEARRAY(
        ROWS(
            a
        ),
        COLUMNS(
            a
        ),
        LAMBDA(
            r,
            c,
            CONCAT(
                INDEX(
                    a,
                    r,
                    SEQUENCE(
                        ,
                        ROUND(
                            c/2,
                            0
                        ),
                        ,
                        2
                    )+ISEVEN(
                        c
                    )
                )
            )
        )
    )
)

hardcoding the number of rows and columns
=MAKEARRAY(
    4,
    7,
    LAMBDA(
        r,
        c,
        CONCAT(
            INDEX(
                A2:G5,
                r,
                SEQUENCE(
                        ,
                        ROUND(
                            c/2,
                            0
                        ),
                        ,
                        2
                    )+ISEVEN(
                        c
                    )
            )
        )
    )
)
Excel solution 19 for Generate the result table with Tn = T(n-2) & Tn, proposed by Giorgi Goderdzishvili:
=LET(
grd,
    A3:G6,
    
sq,
    SEQUENCE(
        ,
        7
    ),
    
mkr,
    MAKEARRAY(4,
    7,
    LAMBDA(r,
    c,
    
CONCAT(
FILTER(INDEX(
    grd,
    r,
    0
),
    
(sq=c)+
IFERROR(ISNUMBER(XMATCH(sq,
    SEQUENCE(,
    INT((c-1)/2),
    c-2,
    -2),
    0)),
    0))))),
    
mkr)

Solving the challenge of Generate the result table with Tn = T(n-2) & Tn with Python in Excel

Python in Excel solution 1 for Generate the result table with Tn = T(n-2) & Tn, proposed by John V.:
Hi everyone!
for r in range(4):
 for c in range(7):
 t[r][c] = ('' if c < 2 else t[r][c - 2]) + str(d[r][c])
t
Blessings!
                    
                  

Solving the challenge of Generate the result table with Tn = T(n-2) & Tn with R

R solution 1 for Generate the result table with Tn = T(n-2) & Tn, proposed by Konrad Gryczan, PhD:
library(tidyverse)
library(readxl)
library(data.table)
input = read_excel("Scan3.xlsx", range = "A2:G5", col_names = c("X1", "X2", "X3", "X4", "X5", "X6", "X7"))
test = read_excel("Scan3.xlsx", range = "I2:O5", col_names = c("X1", "X2", "X3", "X4", "X5", "X6", "X7"))
process_columns <- function(df) {
 num_cols <- ncol(df)
 if (num_cols < 3) {
 return(df)
 }
 for (i in 3:num_cols) {
 df <- df %>% 
 mutate(across(all_of(names(df)[i]), ~ paste0(df[[i - 2]], .)))
 }
 
 return(df)
}
result = process_columns(input)
identical(result, test)
# [1] TRUE
                    
                  

Solving the challenge of Generate the result table with Tn = T(n-2) & Tn with Excel VBA

Excel VBA solution 1 for Generate the result table with Tn = T(n-2) & Tn, proposed by Nicolas Micot:
VBA solution:
Function f_challenge313(Plage As Range) As Variant
Dim tableau As Variant
tableau = Plage.Value
For i = 1 To UBound(tableau, 1)
 For j = 3 To UBound(tableau, 2)
 tableau(i, j) = tableau(i, j - 2) & tableau(i, j)
 Next j
Next i
f_challenge313 = tableau
End Function
                    
                  

&&

Leave a Reply