Generate US ASCII flag. Note that there are 50 stars in total.
📌 Challenge Details and Links
ExcelBI Excel Challenge Number: 404
Challenge Difficulty: ⭐️⭐️⭐️
📥Download Sample File
📥Link to the solutions on LinkedIn
Solving the challenge of Render ASCII US Flag with Power Query
Power Query solution 1 for Render ASCII US Flag, proposed by Zoran Milokanović:
let
Source = Table.FromRows(
List.Transform(
{0 .. 14},
(y) =>
List.Transform(
{0 .. 37},
(x) =>
let
M = Number.Mod
in
{"-", "|", {null, "*"}{Number.From(M(x, 2) = M(y, 2))}, 1, 0}{
List.PositionOf(
{M(y, 14) = 0, M(x, 37) = 0, x < 12 and y < 10, M(y, 2) = 0, true},
true
)
}
)
)
)
in
Source
Solving the challenge of Render ASCII US Flag with Excel
Excel solution 1 for Render ASCII US Flag, proposed by Bo Rydobon 🇹🇭:
=MAKEARRAY(15,
38,
LAMBDA(r,
c,
IFS(OR(
r={1,
15}
),
"-",
OR(
c={1,
38}
),
"|",
(r<11)*(c<13),
REPT(
"*",
MOD(
r+c+1,
2
)
),
1,
MOD(
r,
2
))))
Excel solution 2 for Render ASCII US Flag, proposed by Rick Rothstein:
=MAKEARRAY(15,
38,
LAMBDA(r,
c,
IF(OR(
r={1,
15}
),
"-",
IF(OR(
c={1,
38}
),
"|",
IF((r>10)+(c>12),
0+(MOD(
r,
2
)=1),
IF(
XOR(
MOD(
r,
2
),
MOD(
c,
2
)
),
"",
"*"
))))))
Excel solution 3 for Render ASCII US Flag, proposed by John V.:
=MAKEARRAY(15,
38,
LAMBDA(r,
c,
IFS(OR(
r={1;15}
),
"-",
OR(
c={1;38}
),
"|",
(r<11)*(c<13),
REPT(
"*",
ISEVEN(
r+c
)
),
1,
MOD(
r,
2
))))
Excel solution 4 for Render ASCII US Flag, proposed by محمد حلمي:
=MAKEARRAY(15,
38,
LAMBDA(r,
c,
LET(
e,
(c<13)*(r<11),
IFS(
OR(
r=15,
r=1
),
"-",
OR(
c=1,
c=38
),
"|",
e*ISEVEN(
r+c
),
"*",
e,
"",
ISEVEN(
r
),
0,
1,
1
))))
Excel solution 5 for Render ASCII US Flag, proposed by Kris Jaganah:
=MAKEARRAY(15,
38,
LAMBDA(x,
y,
IFS((x=15)+(x=1),
"-",
(y=1)+(y=38),
"|",
(y<13)*(x<11)*MOD(
x+y,
2
),
"",
(y<13)*(x<11),
"*",
1,
MOD(
x,
2
))))
Excel solution 6 for Render ASCII US Flag, proposed by Julian Poeltl:
=MAKEARRAY(
15,
38,
LAMBDA(
A,
B,
IFS(
OR(
A=1,
A=15
),
"-",
OR(
B=1,
B=38
),
"|",
AND(
B>1,
B<13,
A>1,
A<11,
ISEVEN(
A
)=TRUE,
ISEVEN(
B
)=TRUE
),
"*",
AND(
B>1,
B<13,
A>1,
A<11,
ISEVEN(
A
)=TRUE,
ISEVEN(
B
)=FALSE
),
"",
AND(
B>1,
B<13,
A>1,
A<11,
ISEVEN(
A
)=FALSE,
ISEVEN(
B
)=TRUE
),
"",
AND(
B>1,
B<13,
A>1,
A<11,
ISEVEN(
A
)=FALSE,
ISEVEN(
B
)=FALSE
),
"*",
ISEVEN(
A
),
1,
1,
0
)
)
)
Excel solution 7 for Render ASCII US Flag, proposed by Timothée BLIOT:
=LET(
I,
IF,
O,
OR,
A,
AND,
MAKEARRAY(
15,
38,
LAMBDA(
x,
y,
I(
O(
x=1,
x=15
),
"-",
I(
O(
y=1,
y=38
),
"|",
I(
A(
A(
x>1,
x<11
),
A(
y>1,
y<13
)
),
I(
O(
A(
ISEVEN(
x
),
ISEVEN(
y
)
),
A(
ISODD(
x
),
ISODD(
y
)
)
),
"*",
""
),
I(
ISEVEN(
x
),
0,
1
)
)
)
)
)
)
)
Excel solution 8 for Render ASCII US Flag, proposed by Sunny Baggu:
=MAKEARRAY(
15,
38,
LAMBDA(
r,
c,
IF(
OR(
r = 1,
r = 15
),
"-",
IF(
OR(
c = 1,
c = 38
),
"|",
IF(
AND(
r <= 10,
c <= 12,
ISEVEN(
r + c
)
),
"*",
IF(
AND(
r <= 10,
c <= 12,
ISODD(
r + c
)
),
"",
IF(
ISEVEN(
r
),
0,
1
)
)
)
)
)
)
)
Excel solution 9 for Render ASCII US Flag, proposed by Charles Roldan:
=LET(
f,
LAMBDA(
x,
y,
IF(
SEQUENCE(
,
x
),
y
)
),
g,
LAMBDA(
x,
[y],
MOD(
SEQUENCE(
x,
y
),
2
)
),
h,
LAMBDA(
x,
y,
VSTACK(
x,
TRANSPOSE(
y
),
x
)
),
h(
f(
38,
"-"
),
h(
f(
13,
"|"
),
HSTACK(
VSTACK(
REPT(
"*",
g(
9,
11
)
),
f(
11,
g(
4
)
)
),
DROP(
f(
25,
g(
14
)
),
1
)
)
)
)
)
Excel solution 10 for Render ASCII US Flag, proposed by Andy Heybruch:
=MAKEARRAY(15,
38,
LAMBDA(r,
c,
IFS(OR(
r={1,
15}
),
"-",
OR(
c={1,
38}
),
"|",
(r<11)*(c<13)*ISEVEN(
r+c
),
"*",
(r<11)*(c<13)*ISODD(
r+c
),
" ",
ISEVEN(
r
),
0,
ISODD(
r
),
1)
))
Excel solution 11 for Render ASCII US Flag, proposed by Tyler Cameron:
=MAKEARRAY(
15,
38,
LAMBDA(
r,
c,
IF(
OR(
r=1,
r=15
),
"-",
IF(
OR(
c=1,
c=38
),
"|",
IF(
AND(
r<11,
c<13
),
IF(
ISEVEN(
r
),
SWITCH(
ISEVEN(
c
),
TRUE,
"*",
FALSE,
""
),
SWITCH(
ISODD(
c
),
TRUE,
"*",
FALSE,
""
)
),
IF(
ISEVEN(
r
),
0,
1
)
)
)
)
)
)
Excel solution 12 for Render ASCII US Flag, proposed by Tyler Cameron:
=MAKEARRAY(
15,
38,
LAMBDA(
r,
c,
IF(
OR(
r={1;15}
),
"-",
IF(
OR(
c={1;38}
),
"|",
IF(
AND(
r<11,
c<13
),
IF(
MOD(
r+c,
2
)=0,
"*",
""
),
IF(
ISEVEN(
r
),
0,
1
)
)
)
)
)
)
Solving the challenge of Render ASCII US Flag with Python
Python solution 1 for Render ASCII US Flag, proposed by Giorgi Goderdzishvili:
# NumPy solution
arr = np.ones((15,38),dtype=str)
arr[:,[0,-1]],arr[[0,-1]]="|","-"
arr[1::2,12:-1],arr[11::2,1:-1]="0","0"
arr[1:10:2,1:12:2],arr[2:10:2,2:12:2]="*","*"
arr[1:10:2,2:12:2],arr[2:10:2,1:12:2]="",""
arr
Solving the challenge of Render ASCII US Flag with R
R solution 1 for Render ASCII US Flag, proposed by Konrad Gryczan, PhD:
library(tidyverse)
library(readxl)
test = read_excel("Excel/404 Generate US ASCII Flag.xlsx", range = "A1:AL15",
col_names = FALSE, .name_repair = "unique") %>% as.matrix()
# remove attribute "names" from matrix
attr(test, "dimnames") = NULL
result = matrix(NA, nrow = 15, ncol = 38)
result[1,] = "-"
result[15,] = "-"
result[2:14,1] = "|"
result[2:14,38] = "|"
for (i in 2:14){
for (j in 2:37){
if (i %% 2 == 0){
result[i,j] = 0
} else {
result[i,j] = "1"
}
}
}
for (i in 2:10){
for (j in 2:12){
if (i %% 2 == 0){
if (j %% 2 == 0){
result[i,j] = "*"
} else {
result[i,j] = NA
}
} else {
if (j %% 2 == 0){
result[i,j] = NA
} else {
result[i,j] = "*"
}
}
}
}
&&&
