1*14274383Smillert#! /bin/sed -nf 2*14274383Smillert 3*14274383Smillert# $OpenBSD: sierpinski.sed,v 1.1 2008/10/10 14:33:34 millert Exp $ 4*14274383Smillert# From http://sed.sourceforge.net/grabbag/scripts 5*14274383Smillert# Public Domain 6*14274383Smillert 7*14274383Smillert# Sierpinski triangle in 10 commands + 2 labels. 8*14274383Smillert# Start with a line like this 9*14274383Smillert# _______________________________X_____________________________ 10*14274383Smillert 11*14274383Smillert# Put an equal number of underscores on both sides. 12*14274383Smillerts/^\(_*\).*/\1X\1/p 13*14274383Smillert 14*14274383Smillert# Construct the last three lines of the triangle 15*14274383Smillert:start 16*14274383Smillert/^X/!s/_X_/X_X/gp 17*14274383Smillert/^X/!s/_X_X_/X___X/gp 18*14274383Smillert/^X/!s/_X___X_/X_X_X_X/gp 19*14274383Smillert/^X/ d 20*14274383Smillert 21*14274383Smillert# Now replace the consecutive X's with an X and many colons 22*14274383Smillert# X_X_X_X ---> 23*14274383Smillert# X:::::: 24*14274383Smillert:loop 25*14274383Smillerts/\(X:*\)_X/\1::/g 26*14274383Smillerttloop 27*14274383Smillert 28*14274383Smillert# And now create two new "seeds", one to the left and one to the right 29*14274383Smillert# _X::::::_ ---> 30*14274383Smillert# X:::::::X ---> 31*14274383Smillert# X_______X 32*14274383Smillert 33*14274383Smillerts/_X\(::*\)_/X:\1X/g 34*14274383Smillerts/:/_/gp 35*14274383Smillertbstart 36