Jump to content

Sierpinski carpet: Difference between revisions

→‎{{header|Excel}}: Added a draft in terms of Excel LAMBDA expressions
(→‎{{header|Excel}}: Added a draft in terms of Excel LAMBDA expressions)
Line 1,689:
end for
</lang>
 
=={{header|Excel}}==
===LAMBDA===
 
Binding the name to the following lambda expressions in the Name Manager of the Excel WorkBook:
 
(See [https://www.microsoft.com/en-us/research/blog/lambda-the-ultimatae-excel-worksheet-function/ LAMBDA: The ultimate Excel worksheet function])
 
{{Works with|Office 365 betas 2021}}
<lang lisp>SHOWBLOCKS
=LAMBDA(xs,
IF(0 <> xs, "█", " ")
)
 
 
SIERPCARPET
=LAMBDA(n,
APPLYN(n)(
SIERPWEAVE
)(1)
)
 
 
SIERPWEAVE
=LAMBDA(xs,
LET(
triple, REPLICATECOLS(3)(xs),
gap, LAMBDA(x, IF(x, 0, 0))(xs),
middle, APPENDCOLS(
APPENDCOLS(xs)(gap)
)(xs),
 
APPENDROWS(
APPENDROWS(triple)(middle)
)(triple)
)
)</lang>
 
and also assuming the following generic bindings in the Name Manager for the WorkBook:
 
<lang lisp>APPENDCOLS
=LAMBDA(xs,
LAMBDA(ys,
LET(
nx, COLUMNS(xs),
ny, COLUMNS(ys),
colIndexes, SEQUENCE(1, nx + ny),
rowIndexes, SEQUENCE(MAX(ROWS(xs), ROWS(ys))),
 
IFERROR(
IF(nx < colIndexes,
INDEX(ys, rowIndexes, colIndexes - nx),
INDEX(xs, rowIndexes, colIndexes)
),
NA()
)
)
)
)
 
 
APPENDROWS
=LAMBDA(xs,
LAMBDA(ys,
LET(
nx, ROWS(xs),
rowIndexes, SEQUENCE(nx + ROWS(ys)),
colIndexes, SEQUENCE(
1,
MAX(COLUMNS(xs), COLUMNS(ys))
),
 
IFERROR(
IF(rowIndexes <= nx,
INDEX(xs, rowIndexes, colIndexes),
INDEX(ys, rowIndexes - nx, colIndexes)
),
NA()
)
)
)
)
 
 
APPLYN
=LAMBDA(n,
LAMBDA(f,
LAMBDA(x,
IF(0 < n,
APPLYN(n - 1)(f)(
f(x)
),
x
)
)
)
)
 
 
REPLICATECOLS
=LAMBDA(n,
LAMBDA(xs,
LET(
nCols, COLUMNS(xs),
h, n * nCols,
ixs, SEQUENCE(ROWS(xs), h, 0, 1),
 
INDEX(
xs,
1 + QUOTIENT(ixs, h),
1 + MOD(ixs, nCols)
)
)
)
)</lang>
 
{{Out}}
{| class="wikitable"
|-
|||style="text-align:right; font-family:serif; font-style:italic; font-size:120%;"|fx
! colspan="11" style="text-align:left; vertical-align: bottom; font-family:Arial, Helvetica, sans-serif !important;"|=SHOWBLOCKS(SIERPCARPET(A2))
|- style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff;"
|
| A
| B
| C
| D
| E
| F
| G
| H
| I
| J
| K
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 1
| style="text-align:left" | Level
| colspan="9" style="text-align:left" | Sierpinski carpet
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 2
| style="text-align:left" | 0
| style="text-align:left; background-color:#cbcefb" | █
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 3
|
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 4
| style="text-align:left" | 1
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 5
|
| style="text-align:left" | █
| style="text-align:left" |
| style="text-align:left" | █
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 6
|
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 7
|
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 8
| style="text-align:left" | 2
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 9
|
| style="text-align:left" | █
| style="text-align:left" |
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" |
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" |
| style="text-align:left" | █
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 10
|
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 11
|
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" |
| style="text-align:left" |
| style="text-align:left" |
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 12
|
| style="text-align:left" | █
| style="text-align:left" |
| style="text-align:left" | █
| style="text-align:left" |
| style="text-align:left" |
| style="text-align:left" |
| style="text-align:left" | █
| style="text-align:left" |
| style="text-align:left" | █
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 13
|
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" |
| style="text-align:left" |
| style="text-align:left" |
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 14
|
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 15
|
| style="text-align:left" | █
| style="text-align:left" |
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" |
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" |
| style="text-align:left" | █
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 16
|
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
| style="text-align:left" | █
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 17
|
|
|
|
|
|
|
|
|
|
|
|}
 
=={{header|F_Sharp|F#}}==
9,659

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.