Sierpinski triangle: Difference between revisions

→‎{{header|Excel}}: Added an Excel LAMBDA version.
(Added Arturo implementation)
(→‎{{header|Excel}}: Added an Excel LAMBDA version.)
Line 1,731:
clear_screen()
triangle(1,1,8,4)</lang>
 
=={{header|Excel}}==
 
 
===LAMBDA===
 
Binding the names '''sierpinskiTriangle''', '''sierpCentered''' and '''sierpDoubled''' 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>sierpinskiTriangle
=LAMBDA(n,
IF(0 = n,
{"▲"},
LET(
prev, sierpinskiTriangle(n - 1),
 
APPENDROWS(
sierpCentered(prev)
)(
sierpDoubled(prev)
)
)
)
)
 
 
sierpCentered
=LAMBDA(grid,
LET(
nRows, ROWS(grid),
padding, IF(
SEQUENCE(nRows, nRows, 1, 1),
""
),
 
APPENDCOLS(
APPENDCOLS(padding)(grid)
)(padding)
)
)
 
 
sierpDoubled
=LAMBDA(grid,
APPENDCOLS(
APPENDCOLS(grid)(
IF(SEQUENCE(ROWS(grid), 1, 1, 1),
""
)
)
)(grid)
)</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),
colIndexes, SEQUENCE(1, nx + COLUMNS(ys)),
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()
)
)
)
)</lang>
 
{{Out}}
Each formula in the B column (sharing a row with an integer in the A column) defines an array which populates a whole grid (for example the range B21:AF36) with a Sierpinski triangle.
 
{| class="wikitable"
|-
|||style="text-align:right; font-family:serif; font-style:italic; font-size:120%;"|fx
! colspan="32" style="text-align:left; vertical-align: bottom; font-family:Arial, Helvetica, sans-serif !important;"|=sierpinskiTriangle(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
| L
| M
| N
| O
| P
| Q
| R
| S
| T
| U
| V
| W
| X
| Y
| Z
| AA
| AB
| AC
| AD
| AE
| AF
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 2
| style="font-weight:bold" | 0
| style="text-align:center; background-color:#cbcefb" | ▲
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 3
| style="font-weight:bold" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 4
| style="font-weight:bold" | 1
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 5
| style="font-weight:bold" |
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 6
| style="font-weight:bold" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 7
| style="font-weight:bold" | 2
|
|
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 8
| style="font-weight:bold" |
|
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 9
| style="font-weight:bold" |
|
| style="text-align:center" | ▲
|
|
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 10
| style="font-weight:bold" |
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 11
| style="font-weight:bold" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 12
| style="font-weight:bold" | 3
|
|
|
|
|
|
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 13
| style="font-weight:bold" |
|
|
|
|
|
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 14
| style="font-weight:bold" |
|
|
|
|
|
| style="text-align:center" | ▲
|
|
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 15
| style="font-weight:bold" |
|
|
|
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 16
| style="font-weight:bold" |
|
|
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 17
| style="font-weight:bold" |
|
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
|
|
|
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 18
| style="font-weight:bold" |
|
| style="text-align:center" | ▲
|
|
|
| style="text-align:center" | ▲
|
|
|
| style="text-align:center" | ▲
|
|
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 19
| style="font-weight:bold" |
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 20
| style="font-weight:bold" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 21
| style="font-weight:bold" | 4
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 22
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 23
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| style="text-align:center" | ▲
|
|
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 24
|
|
|
|
|
|
|
|
|
|
|
|
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 25
|
|
|
|
|
|
|
|
|
|
|
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 26
|
|
|
|
|
|
|
|
|
|
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
|
|
|
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 27
|
|
|
|
|
|
|
|
|
|
| style="text-align:center" | ▲
|
|
|
| style="text-align:center" | ▲
|
|
|
| style="text-align:center" | ▲
|
|
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 28
|
|
|
|
|
|
|
|
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 29
|
|
|
|
|
|
|
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 30
|
|
|
|
|
|
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
|
|
|
|
|
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 31
|
|
|
|
|
|
| style="text-align:center" | ▲
|
|
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
|
|
|
|
| style="text-align:center" | ▲
|
|
|
| style="text-align:center" | ▲
|
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 32
|
|
|
|
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
|
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 33
|
|
|
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
| style="text-align:center" | ▲
|
|
|
|
|
|
|
| style="text-align:center" | ▲
|
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 34
|
|
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
|
|
|
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
|
|
|
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
|
|
|
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 35
|
|
| style="text-align:center" | ▲
|
|
|
| style="text-align:center" | ▲
|
|
|
| style="text-align:center" | ▲
|
|
|
| style="text-align:center" | ▲
|
|
|
| style="text-align:center" | ▲
|
|
|
| style="text-align:center" | ▲
|
|
|
| style="text-align:center" | ▲
|
|
|
| style="text-align:center" | ▲
|
|-
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 36
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|
| style="text-align:center" | ▲
|}
 
 
=={{header|F Sharp|F#}}==
9,655

edits