Home » Max 2×2 Grid Sum

Max 2×2 Grid Sum

Find the 2×2 grids in the given 5×5 grid where sum is the maximum. To list the answer, follow row element1, row element2 ; col element1, col element2 to represent the answer. Ex. 41, 24; 56, 92

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

Solving the challenge of Max 2×2 Grid Sum with Power Query

Power Query solution 1 for Max 2×2 Grid Sum, proposed by Aditya Kumar Darak 🇮🇳:
let
  Source = Excel.CurrentWorkbook(){[Name = "data"]}[Content], 
  ToRow = Table.ToRows(Source), 
  Count = List.Count(ToRow) - 2, 
  Generate = List.TransformMany(
    {0 .. Count}, 
    (x) => {0 .. Count}, 
    (x, y) => [
      Rng = List.Range(ToRow{x}, y, 2) & List.Range(ToRow{x + 1}, y, 2), 
      S   = List.Sum(Rng), 
      T   = List.Transform(Rng, Text.From), 
      R   = T{0} & ", " & T{1} & "; " & T{2} & ", " & T{3}
    ]
  ), 
  Max = List.Max(Generate, null, each [S])[S], 
  Filter = List.Transform(Generate, each if [S] = Max then [R] else null), 
  Return = List.RemoveNulls(Filter)
in
  Return
Power Query solution 2 for Max 2×2 Grid Sum, proposed by Ramiro Ayala Chávez:
let
  S = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  a = List.Combine(Table.ToRows(S)), 
  b = List.Skip(
    List.Generate(
      () => [i = 0, j = {}], 
      each [i] < List.Count(a), 
      each [i = [i] + 1, j = List.Range(a, [i], 2) & List.Range(a, [i] + 5, 2)], 
      each [j]
    )
  ), 
  c = List.Select(b, each List.Count(_) = 4), 
  d = List.RemoveRange(List.RemoveRange(List.RemoveRange(c, 4), 4 * 2), 4 * 3), 
  e = Table.FromRows(List.Transform(d, each _ & {List.Sum(_)})), 
  f = Table.MaxN(Table.Group(e, {"Column5"}, {"G", each _}), "Column5", 1)[[G]], 
  g = Table.RemoveColumns(Table.Combine(f[G]), "Column5"), 
  h = Table.TransformColumnTypes(
    g, 
    {{"Column1", type text}, {"Column2", type text}, {"Column3", type text}, {"Column4", type text}}
  ), 
  Sol = Table.AddColumn(
    h, 
    "Answer Expected", 
    each [Column1] & ", " & [Column2] & " ; " & [Column3] & ", " & [Column4]
  )[[Answer Expected]]
in
  Sol
Power Query solution 3 for Max 2x2 Grid Sum, proposed by Mihai Radu O:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  s = [
    nrC = Table.ColumnCount(Source), 
    a = List.Transform(List.Combine(Table.ToRows(Source)), Text.From), 
    b = List.Select(
      List.Transform(
        {0 .. List.Count(a) - 1}, 
        (x) => try a{x} & ", " & a{x + 1} & "; " & a{x + nrC} & ", " & a{x + nrC + 1} otherwise null
      ), 
      each _ <> null
    ), 
    c = List.Transform(Table.ToColumns(Source){nrC - 1}, Text.From), 
    d = List.Select(b, (x) => not List.Contains(c, Text.BeforeDelimiter(x, ","))), 
    e = List.Transform(
      d, 
      (x) => List.Sum(List.Transform(Text.SplitAny(x, ";,"), (y) => Number.From(Text.Trim(y))))
    ), 
    f = Table.SelectRows(Table.FromColumns({d, e}), each [Column2] = List.Max(e))[Column1]
  ][f]
in
  s

Solving the challenge of Max 2x2 Grid Sum with Excel

Excel solution 1 for Max 2x2 Grid Sum, proposed by Bo Rydobon 🇹🇭:
=LET(
    z,
    B2:F6,
    m,
    LAMBDA(
        f,
        MAKEARRAY(
            ROWS(
                z
            )-1,
            COLUMNS(
                z
            )-1,
            LAMBDA(
                r,
                c,
                f(
                    INDEX(
                        z,
                        r+{0;1},
                        c+{0,
                        1}
                    )
                )
            )
        )
    ),
    s,
    m(
        SUM
    ),
    SUBSTITUTE(
        TOCOL(
            IFS(
                s=MAX(
                    s
                ),
                m(
                    ARRAYTOTEXT
                )
            ),
            3
        ),
        ",",
        ";",
        2
    )
)
Excel solution 2 for Max 2x2 Grid Sum, proposed by Bo Rydobon 🇹🇭:
=LET(m,LAMBDA(f,MAP(B2:E5,LAMBDA(x,f(OFFSET(x,,,2,2))))),s,m(SUM),SUBSTITUTE(TOCOL(IFS(s=MAX(s),m(ARRAYTOTEXT)),3),",",";",2))

for non Beta
=LET(m,LAMBDA(y,MAP(B2:E5,LAMBDA(x,LET(o,OFFSET(x,,,2,2),IF(y,SUM(o),ARRAYTOTEXT(o)))))),s,m(1),SUBSTITUTE(TOCOL(IFS(s=MAX(s),m(0)),3),",",";",2))
Excel solution 3 for Max 2x2 Grid Sum, proposed by Rick Rothstein:
=LET(
    d,
    DROP(
        REDUCE(
            "",
            B2:E5,
            LAMBDA(
                a,
                x,
                VSTACK(
                    a,
                    TOROW(
                        OFFSET(
                            x,
                            0,
                            0,
                            2,
                            2
                        )
                    )
                )
            )
        ),
        1
    ),
    b,
    BYROW(
        d,
        LAMBDA(
            r,
            SUM(
                r
            )
        )
    ),
    BYROW(
        FILTER(
            d,
            b=MAX(
                b
            )
        ),
        LAMBDA(
            r,
            TEXTJOIN(
                {", ",
                "; ",
                ", "},
                ,
                r
            )
        )
    )
)
Excel solution 4 for Max 2x2 Grid Sum, proposed by John V.:
=LET(
    x,
    B2:E5,
    y,
    C3:F6,
    i,
    MAP(
        x,
        y,
        LAMBDA(
            a,
            b,
            SUM(
                a:b
            )
        )
    ),
    TOCOL(
        IFS(
            i=MAX(
                i
            ),
            MAP(
                x,
                y,
                LAMBDA(
                    a,
                    b,
                    TEXTJOIN(
                        {", ";" ; "},
                        ,
                        a:b
                    )
                )
            )
        ),
        2
    )
)

Another one:

✅=LET(
    f,
    LAMBDA(
        [n],
        MAP(
            B2:E5,
            C3:F6,
            LAMBDA(
                a,
                b,
                IF(
                    n,
                    TEXTJOIN(
                        {", ";" ; "},
                        ,
                        a:b
                    ),
                    SUM(
                a:b
            )
                )
            )
        )
    ),
    TOCOL(
        IFS(
            f()=MAX(
                f()
            ),
            f(
                1
            )
        ),
        2
    )
)
Excel solution 5 for Max 2x2 Grid Sum, proposed by محمد حلمي:
=LET(
    w,
    LAMBDA(
        i,
        [e],
        
        MAP(
            B2:F6,
            LAMBDA(
                a,
                IF(
                    i,
                    SUM(
                        OFFSET(
                            a,
                            ,
                            ,
                            2,
                            2
                        )
                    ),
                    
                    ARRAYTOTEXT(
                        OFFSET(
                            a,
                            e,
                            ,
                            ,
                            2
                        )
                    )
                )
            )
        )
    ),
    j,
    w(
        1
    ),
    
    TOCOL(
        IFS(
            MAX(
                j
            )=j,
            w(
                0
            )&" ; "&w(
                0,
                1
            )
        ),
        2
    )
)
Excel solution 6 for Max 2x2 Grid Sum, proposed by محمد حلمي:
=REDUCE(
    0,
    B2:F6,
    LAMBDA(
        a,
        v,
        LET(
            
            j,
            TAKE(
                a,
                ,
                1
            ),
            
            m,
            MAX(
                j
            ),
            
            i,
            SUM(
                OFFSET(
                    v,
                    ,
                    ,
                    2,
                    2
                )
            ),
            
            r,
            LAMBDA(
                x,
                ARRAYTOTEXT(
                    OFFSET(
                        v,
                        x,
                        ,
                        ,
                        2
                    )
                )
            ),
            
            w,
            HSTACK(
                i,
                r(
                    0
                )&" ; "& r(
                    1
                )
            ),
            
            IF(
                COUNT(
                    v:F6
                )=1,
                DROP(
                a,
                ,
                1
            ),
                
                IF(
                    i>=m,
                    VSTACK(
                        FILTER(
                            a,
                            j=m
                        ),
                        w
                    ),
                    a
                )
            )
        )
    )
)
Excel solution 7 for Max 2x2 Grid Sum, proposed by محمد حلمي:
=LET(
    d,
    B2:F6,
    i,
    IFNA(
        d+C2:F6+B3:F6+C3:F6,
        
    ),
    
    TOCOL(
        IFS(
            MAX(
                i
            )=i,
            MAP(
                d,
                LAMBDA(
                    a,
                    LET(
                        r,
                        LAMBDA(
                            
                            x,
                            ARRAYTOTEXT(
                                OFFSET(
                                    a,
                                    x,
                                    ,
                                    ,
                                    2
                                )
                            )
                        ),
                        r(
                            0
                        )&" ; "&r(
                            1
                        )
                    )
                )
            )
        ),
        2
    )
)
Excel solution 8 for Max 2x2 Grid Sum, proposed by Kris Jaganah:
=LET(
    a,
    B2:F6,
    b,
    MAP(
        a,
        LAMBDA(
            x,
            SUM(
                OFFSET(
                    x,
                    0,
                    0,
                    2,
                    2
                )
            )
        )
    ),
    TOCOL(
        IF(
            b=MAX(
                b
            ),
            MAP(
                a,
                LAMBDA(
                    y,
                    TEXTJOIN(
                        {", ",
                        " ; "},
                        ,
                        OFFSET(
                            y,
                            0,
                            0,
                            2,
                            2
                        )
                    )
                )
            ),
            z
        ),
        3
    )
)
Excel solution 9 for Max 2x2 Grid Sum, proposed by Julian Poeltl:
=LET(
    A,
    B2:F6,
    S,
    MAP(
        A,
        LAMBDA(
            A,
            SUM(
                OFFSET(
                    A,
                    ,
                    ,
                    2,
                    2
                )
            )
        )
    ),
    C,
    MAP(
        A,
        LAMBDA(
            A,
            TEXTJOIN(
                "; ",
                ,
                BYROW(
                    OFFSET(
                    A,
                    ,
                    ,
                    2,
                    2
                ),
                    LAMBDA(
                        A,
                        TEXTJOIN(
                            ", ",
                            ,
                            A
                        )
                    )
                )
            )
        )
    ),
    FILTER(
        TOCOL(
            C
        ),
        TOCOL(
            S
        )=MAX(
            S
        )
    )
)
Excel solution 10 for Max 2x2 Grid Sum, proposed by Timothée BLIOT:
=LET(
    M,
    MAKEARRAY(
        4,
        4,
        LAMBDA(
            x,
            y,
            SUM(
                OFFSET(
                    B2:C3,
                    x-1,
                    y-1
                )
            )
        )
    ),
    TOCOL(
        IF(
            M=MAX(
                M
            ),
            MAKEARRAY(
                4,
                4,
                LAMBDA(
                    x,
                    y,
                    LET(
                        O,
                        OFFSET(
                    B2:C3,
                    x-1,
                    y-1
                ),
                        ARRAYTOTEXT(
                            TAKE(
                                O,
                                1
                            )
                        )&" ; "&ARRAYTOTEXT(
                            TAKE(
                                O,
                                -1
                            )
                        )
                    )
                )
            ),
            1/0
        ),
        3
    )
)
Excel solution 11 for Max 2x2 Grid Sum, proposed by Nikola Z Grujicic - Nikola Ž Grujičić:
=LET(
    niz,
     B2:F6,
     o,
     ROWS(
         niz
     )-1,
     p,
     COLUMNS(
         niz
     )-1,
     q,
     SEQUENCE(
         o*p
     ),
     r,
     MOD(
         q,
          
     ),
     s,
     ROUNDUP(
         q/o,
          0
     ),
     t,
     IF(
         r=0,
          o,
          r
     ),
     y,
     INDEX(
         niz,
          s,
          t
     )+INDEX(
         niz,
          s+1,
          t
     )+INDEX(
         niz,
          s,
          t+1
     )+INDEX(
         niz,
          s+1,
          t+1
     ),
     z,
     MAX(
         y
     ),
     a,
     IF(
         y=z,
          INDEX(
         niz,
          s,
          t
     )&", "&INDEX(
         niz,
          s+1,
          t
     )&"; "&INDEX(
         niz,
          s,
          t+1
     )&", "&INDEX(
         niz,
          s+1,
          t+1
     ),
          ""
     ),
     FILTER(
         a,
          a<>""
     )
)
Excel solution 12 for Max 2x2 Grid Sum, proposed by Hussein SATOUR:
=LET(
    v,
    B2:F6,
    a,
    TOCOL(
        MAP(
            v,
            LAMBDA(
                x,
                SUM(
                    OFFSET(
                        x,
                        ,
                        ,
                        2,
                        2
                    )
                )
            )
        )
    ),
    FILTER(
        TOCOL(
            MAP(
                v,
                LAMBDA(
                    x,
                    TEXTJOIN(
                        {", ",
                        "; ",
                        ", "},
                        ,
                        OFFSET(
                        x,
                        ,
                        ,
                        2,
                        2
                    )
                    )
                )
            )
        ),
        a=MAX(
            a
        )
    )
)
Excel solution 13 for Max 2x2 Grid Sum, proposed by Oscar Mendez Roca Farell:
=LET(
    m,
     MAP(
         B2:E5,
          LAMBDA(
              a,
               LET(
                   i,
                    INDEX(
                        B2:F6,
                         ROW(
                             a
                         )-{1; 0},
                         COLUMN(
                             a
                         )-{1,
                         0}
                    ),
                    SUM(
                        i
                    )&"|"&TEXTJOIN(
                        {", ",
                         "; "},
                         ,
                         i
                    )
               )
          )
     ),
     t,
     -TEXTBEFORE(
         m,
          "|"
     ),
     TEXTAFTER(
         TOCOL(
             IFS(
                 t=MIN(
                     t
                 ),
                  m
             ),
              2
         ),
          "|"
     )
)
Excel solution 14 for Max 2x2 Grid Sum, proposed by Sunny Baggu:
=LET(
 x, {1, 2} + SEQUENCE(5, , 0),
 y, TRANSPOSE(x),
 v, MAKEARRAY(5, 5, LAMBDA(r, c, INDEX(BYCOL(y, LAMBDA(a, SUM(INDEX(B2:G7, CHOOSEROWS(x, r), a)))), c))),
 u, MAKEARRAY(
 5,
 5,
 LAMBDA(r, c, INDEX(BYCOL(y, LAMBDA(a, ARRAYTOTEXT(TOROW(INDEX(B2:G7, CHOOSEROWS(x, r), a), , 1)))), c))
 ),
 SUBSTITUTE(TOCOL(IF(v = MAX(v), u, NA()), 3), ", ", " ; ", 2)
)
Excel solution 15 for Max 2x2 Grid Sum, proposed by Sunny Baggu:
=LET(
 t, B2:F6,
 _a, MAP(t, LAMBDA(a, SUM(OFFSET(a, , , 2, 2)))),
 _b, MAP(t, LAMBDA(a, ARRAYTOTEXT(OFFSET(a, , , 2, 2)))),
 SUBSTITUTE(TOCOL(IF(_a = MAX(_a), _b, x), 3), ", ", " ; ", 2)
)
Excel solution 16 for Max 2x2 Grid Sum, proposed by LEONARD OCHEA 🇷🇴:
=LET(
    d,
    B2:F6,
    s,
    TOCOL(
        MAP(
            d,
            LAMBDA(
                x,
                SUM(
                    OFFSET(
                        x,
                        ,
                        ,
                        2,
                        2
                    )
                )
            )
        )
    ),
    FILTER(
        TOCOL(
            MAP(
                d,
                LAMBDA(
                    x,
                    TEXTJOIN(
                        {", ";" ; "},
                        ,
                        OFFSET(
                        x,
                        ,
                        ,
                        2,
                        2
                    )
                    )
                )
            )
        ),
        s=MAX(
            s
        )
    )
)
Excel solution 17 for Max 2x2 Grid Sum, proposed by Hamidi Hamid:
=LET(z,
    B2:F6,
    x,
    TOCOL(MAP(IFERROR(((MAP(
        B2:F6,
        LAMBDA(
            a;SUM(
                OFFSET(
                    a,
                    ,
                    ,
                    2;2
                )
            )
        )
    )=MAX(
        MAP(
            z,
            LAMBDA(
                a;SUM(
                    OFFSET(
                        a,
                        ,
                        ,
                        2,
                        2
                    )
                )
            )
        )
    ))*z),
    0),
    z,
    LAMBDA(
        a,
        b,
        IF(
            a=0,
            0,
            TEXTJOIN(
                {", ",
                " ; "},
                0,
                OFFSET(
                    b,
                    ,
                    ,
                    2,
                    2
                )
            )
        )
    ))),
    FILTER(
        x,
        x<>0
    ))
Excel solution 18 for Max 2x2 Grid Sum, proposed by Andy Heybruch:
=LET(_tbl,B2:F6,
_sums,MAP(_tbl,LAMBDA(a,SUM(OFFSET(a,0,0,2,2)))),
_max,MAX(_sums),
FILTER(TOCOL(MAP(_tbl,LAMBDA(a,TEXTJOIN(" ; ",,TEXTJOIN(", ",,OFFSET(a,,,,2)),TEXTJOIN(", ",,OFFSET(a,1,,,2)))))),TOCOL(_sums=_max)))
Excel solution 19 for Max 2x2 Grid Sum, proposed by Bilal Mahmoud kh.:
=TEXTSPLIT(
    TEXTJOIN(
        "|",
        TRUE,
        LET(
            a,
            MAKEARRAY(
                4,
                4,
                LAMBDA(
                    x,
                    y,
                    SUM(
                        OFFSET(
                            A1,
                            x,
                            y,
                            2,
                            2
                        )
                    )
                )
            ),
            b,
            MAKEARRAY(
                4,
                4,
                LAMBDA(
                    n,
                    m,
                    IF(
                        INDEX(
                            a,
                            n,
                            m
                        )=MAX(
                            a
                        ),
                        TEXTJOIN(
                            ";",
                            ,
                            TEXTJOIN(
                                ",",
                                ,
                                OFFSET(
                                    A1,
                                    n,
                                    m,
                                    1,
                                    2
                                )
                            ),
                            TEXTJOIN(
                                ",",
                                ,
                                OFFSET(
                                    A1,
                                    n+1,
                                    m,
                                    1,
                                    2
                                )
                            )
                        ),
                        ""
                    )
                )
            ),
            b
        )
    ),
    ,
    "|"
)
Excel solution 20 for Max 2x2 Grid Sum, proposed by Imam Hambali:
=LET(
a, TOCOL(B2:F6),
b, SEQUENCE(ROWS(a)),
c, HSTACK(b,DROP(b,1),DROP(b,5),DROP(b,6)),
d, FILTER(c,NOT(ISNA(TAKE(c,,-1)))*MOD(TAKE(c,,1),5)<>0),
f, BYROW(INDEX(a,d), LAMBDA(x, SUM(x))),
g, FILTER(INDEX(a,d), f=MAX(f)),
i, IF(MOD(SEQUENCE(,COLUMNS(g)),2),", ","; "),
BYROW(g&i, LAMBDA(x, LEFT(CONCAT(x), LEN(CONCAT(x))-2)))
)
Excel solution 21 for Max 2x2 Grid Sum, proposed by Eddy Wijaya:
=LET(
    
    raw,
    B2:F6,
    
    genMap,
    MAP(
        raw,
        LAMBDA(
            m,
            
            CONCAT(
                HSTACK(
                    SUM(
                        OFFSET(
                            m,
                            ,
                            ,
                            2,
                            2
                        )
                    ),
                    ",",
                    TEXTJOIN(
                        ",",
                        FALSE,
                        OFFSET(
                            m,
                            ,
                            ,
                            2,
                            2
                        )
                    )
                )
            )
        )
    ),
    
    adjMap,
    TOCOL(
        DROP(
            genMap,
            -1,
            -1
        )
    ),
    
    getMax,
    MAX(
        BYROW(
            adjMap,
            LAMBDA(
                r,
                VALUE(
                    CHOOSECOLS(
                        TEXTSPLIT(
                            r,
                            ","
                        ),
                        1
                    )
                )
            )
        )
    ),
    
    filteredRes,
    TOCOL(
        BYROW(
            adjMap,
            LAMBDA(
                r,
                IF(
                    FIND(
                        getMax,
                        r
                    )=1,
                    MID(
                        r,
                        LEN(
                            TEXT(
                                getMax,
                                "0"
                            )
                        )+2,
                        LEN(
                            r
                        )
                    ),
                    ""
                )
            )
        ),
        2
    ),
    
    BYROW(
        filteredRes,
        LAMBDA(
            r,
            SUBSTITUTE(
                TEXTBEFORE(
                    r,
                    ",",
                    2
                )&" ; "&TEXTAFTER(
                    r,
                    ",",
                    2
                ),
                ",",
                ", "
            )
        )
    )
)
Excel solution 22 for Max 2x2 Grid Sum, proposed by El Badlis Mohd Marzudin:
=LET(d,B2:F6,a,TOCOL(MAP(d,LAMBDA(x,TEXTJOIN({", "," ; "},,OFFSET(x,,,2,2))))),b,TOCOL(MAP(d,LAMBDA(x,SUM(OFFSET(x,,,2,2))))),FILTER(a,b=MAX(b)))
Excel solution 23 for Max 2x2 Grid Sum, proposed by Ricardo Alexis Domínguez Hernández:
=MAP(LET(b,LET(a,MAP(B2:F6,LAMBDA(x,SUM(OFFSET(x,0,0,2,2)))),TOCOL(IF(a=MAX(a),
MAP(B2:F6,LAMBDA(z,
TEXTJOIN(",",,OFFSET(z,,,2,2)))),0))),FILTER(b,b>0)),
LAMBDA(r,TEXTJOIN(" ; ",,BYROW(WRAPROWS(TEXTSPLIT(r,","),2),LAMBDA(x,TEXTJOIN(", ",,x))))))
Excel solution 24 for Max 2x2 Grid Sum, proposed by Dinc Doga:
=LET(
 z,
     B2:F6,
    
 x,
     TOCOL(
 MAP(
 IFERROR(
 (MAP(
     z,
      LAMBDA(
          a,
           SUM(
               OFFSET(
                   a,
                    0,
                    0,
                    2,
                    2
               )
           )
      )
 ) = MAX(
     MAP(
     z,
      LAMBDA(
          a,
           SUM(
               OFFSET(
                   a,
                    0,
                    0,
                    2,
                    2
               )
           )
      )
 )
 )) * z,
    
 0
 ),
    
 z,
    
 LAMBDA(
     a,
      b,
      IF(
          a = 0,
           0,
           TEXTJOIN(
               ", ",
                TRUE,
                OFFSET(
                    b,
                     0,
                     0,
                     2,
                     2
                )
           )
      )
 )
 )
 ),
    
 FILTER(
     x,
      x <> 0
 )
)
Excel solution 25 for Max 2x2 Grid Sum, proposed by Dinc Doga:
=LET(
 niz, B2:F6,
 o, ROWS(niz)-1,
 p, COLUMNS(niz)-1,
 q, SEQUENCE(o*p),
 r, MOD(q-1, o)+1,
 s, ROUNDUP(q/o, 0),
 t, INDEX(niz, r, s),
 y, t + INDEX(niz, r+1, s) + INDEX(niz, r, s+1) + INDEX(niz, r+1, s+1),
 z, MAX(y),
 a, IF(y=z, INDEX(niz, r, s) & ", " & INDEX(niz, r+1, s) & "; " & INDEX(niz, r, s+1) & ", " & INDEX(niz, r+1, s+1), ""),
 FILTER(a, a<>"")
)
Excel solution 26 for Max 2x2 Grid Sum, proposed by Salvador Murillo Quezada:
=LET(m,MAP(B2:E5,LAMBDA(a,SUM(a,OFFSET(a,1,0),OFFSET(a,0,1),OFFSET(a,1,1)))), f,MAP(B2:E5,LAMBDA(a, TRIM(a)&", "&TRIM(OFFSET(a,0,1))&" ; "&TRIM(OFFSET(a,1,0))&", "&OFFSET(a,1,1) )),FILTER(TOCOL(f),TOCOL(m=MAX(m))) )

Solving the challenge of Max 2x2 Grid Sum with Python

Python solution 1 for Max 2x2 Grid Sum, proposed by Konrad Gryczan, PhD:
import pandas as pd
import numpy as np
import itertools
path = "514 Sub Grid Maximum Sum.xlsx"
input = pd.read_excel(path, usecols="B:F", header=None, skiprows=1)
input_mat = input.to_numpy()
test = pd.read_excel(path, usecols="H", nrows = 3)
indices = list(itertools.product(range(input_mat.shape[0] - 1), range(input_mat.shape[1] - 1)))
results = []
for i, j in indices:
 sub_matrix = input_mat[i:i + 2, j:j + 2]
 sub_sum = np.nansum(sub_matrix)
 results.append({'matrix': sub_matrix, 'sum': sub_sum})
max_sum = max(res['sum'] for res in results)
max_subs = [res for res in results if res['sum'] == max_sum]
max_subs_str = [' ; '.join(', '.join(map(str, row)) for row in res['matrix']) for res in max_subs]
max_subs_df = pd.DataFrame({'Answer Expected': max_subs_str})
print(max_subs_df.equals(test)) # True
                    
                  

Solving the challenge of Max 2x2 Grid Sum with Python in Excel

Python in Excel solution 1 for Max 2x2 Grid Sum, proposed by Alejandro Campos:
grid = np.array([
 [43, 48, 7, 47, 9],
 [35, 13, 41, 24, 39],
 [41, 9, 56, 92, 23],
 [79, 5, 3, 7, 91],
 [84, 45, 44, 41, 51]
])
max_values = []
for i in range(4): # 5 rows - 2x2 grid height + 1
 for j in range(4): # 5 cols - 2x2 grid width + 1
 current_sum = grid[i, j] + grid[i, j+1] + grid[i+1, j] + grid[i+1, j+1]
 max_values.append((current_sum, i, j))
max_values = sorted(max_values, key=lambda x: x[0], reverse=True)[:3]
results = []
for value, i, j in max_values:
 submatrix = grid[i:i+2, j:j+2].flatten().tolist()
 results.append(submatrix)
results
                    
                  
Python in Excel solution 2 for Max 2x2 Grid Sum, proposed by Abdallah Ally:
df = xl("B2:F6", headers=False)
# Perform data wrangling
items = []
for i in df.index[:-1]:
 for j in range(len(df.columns)-1):
 values = list(df.iloc[i, j:j+2]) + list(df.iloc[i+1, j:j+2])
 row1 = ', '.join([str(x) for x in values[:2]])
 row2 = ', '.join([str(x) for x in values[2:]])
 total = sum(values)
 items.append([total, row1 + '; ' + row2])
max_total = max([item[0] for item in items])
result = [item[1] for item in items if item[0] == max_total]
result
                    
                  
Python in Excel solution 3 for Max 2x2 Grid Sum, proposed by Anshu Bantra:
df = xl("B2:F6", headers=False)
x, y = df.shape
lst=[]
for row_ in range(0, x-1):
 for col_ in range(0, y-1):
 _ = [f"{df.iloc[row_, col_]}, {df.iloc[row_, col_+1]}; {df.iloc[row_+1, col_]}, {df.iloc[row_+1, col_+1]}", df.iloc[row_, col_]+df.iloc[row_, col_+1]+df.iloc[row_+1, col_]+df.iloc[row_+1, col_+1]]
 lst.append(_)
df_tst = pd.DataFrame(lst)
df_tst[df_tst[1]==df_tst[1].max()][0].values
                    
                  

Solving the challenge of Max 2x2 Grid Sum with R

R solution 1 for Max 2x2 Grid Sum, proposed by Konrad Gryczan, PhD:
library(tidyverse)
library(readxl)
path = "Excel/514 Sub Grid Maximum Sum.xlsx"
input = read_excel(path, range = "B2:F6", col_names = F) %>% as.matrix()
test = read_excel(path, range = "H1:H4") %>% arrange(`Answer Expected`)
indices = expand.grid(i = 1:(nrow(input) - 1), j = 1:(ncol(input) - 1))
results = indices %>%
 pmap(function(i, j) {
 sub_mat = input[i:(i + 1), j:(j + 1)]
 list(matrix = sub_mat, sum = sum(sub_mat, na.rm = TRUE))
 })
max_sum = max(map_dbl(results, "sum"))
max_subs = keep(results, ~ .x$sum == max_sum)
max_subs_str = map_chr(max_subs, ~ paste(apply(.x$matrix, 1, paste, collapse = ", "), collapse = " ; ")) %>%
 tibble(`Answer Expected` = .) %>%
 arrange(`Answer Expected`)
identical(max_subs_str, test)
#> [1] TRUE
                    
                  

&&

Leave a Reply