#1 (at 97 characters) sub f{ ($a)=@_;+split//,'0@*+'.'='x(4/(pop)-4); print$"x--$a,$_>1?map$_[rand@_],1..2*$_-1:'*',$/for 1..$a } #2 (at 86 characters) sub g{ +split//,'0@*+'.'='x(4/$f-4); print$"x--$h,$_>1?map$_[rand@_],1..2*$_-1:'*',$/for 1..$h }