1 ! Copyright (c) 2012 Anonymous
2 ! See https://factorcode.org/license.txt for BSD license.
3 USING: io kernel math sequences splitting ;
4 IN: rosetta-code.sierpinski-triangle
6 ! https://rosettacode.org/wiki/Sierpinski_triangle
8 ! Produce an ASCII representation of a Sierpinski triangle of
9 ! order N. For example, the Sierpinski triangle of order 4 should
27 ! * * * * * * * * * * * * * * * *
29 : iterate-triangle ( triange spaces -- triangle' )
30 [ [ 1surround ] curry map ]
31 [ drop [ dup " " glue ] map ] 2bi append ;
33 : (sierpinski) ( triangle spaces n -- triangle' )
34 dup 0 = [ 2drop join-lines ] [
37 [ nip dup append ] 2bi
38 ] dip 1 - (sierpinski)
42 [ { "*" } " " ] dip (sierpinski) print ;