/* Sierpinski triangle in Picat. From http://rosettacode.org/wiki/Sierpinski_triangle """ Produce an ASCII representation of a Sierpinski triangle of order N. For example, the Sierpinski triangle of order 4 should look like this: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * """ Model created by Hakan Kjellerstrand, hakank@gmail.com See also my Picat page: http://www.hakank.org/picat/ */ main => go. go => foreach(N in 1..4) sierpinski(N), nl end, nl. % Inspired the E solution sierpinski(N) => Size = 2**N, foreach(Y in Size-1..-1..0) printf("%s", [' ' : _I in 1..Y]), foreach(X in 0..Size-Y-1) printf("%s ", cond(X /\ Y == 0, "*", " ")) end, nl end.