g810![IJ'`h1F7zbg810![IJ'`h1F7zbg810![IJ'`h1F7zbg810![IJ'`h huNM:W'YlyFWnPK+W2[r#ui$JL(o>K+W2[r#ui$JL(o>K%+W2[r#ui$JL(o>K%+W2[r#u -XV!C]{WM3H$\UoQ-XVC]{WM3H$\UoQ-XVCG]{WM3H$\UoQ-XVCG]{WM3H$ DDI40{lk$0fl"?(9DDI0{lk$0fl"?(9DDI0){lk$0fl"?(9DDI0){lk$0fl oJI?lc".cCYbx4HZoJIlc".cCYbx4HZoJIlic".cCYbx4HZoJIlic".cCYb f0*I.&%_l/h~S*`;f0*.&%_l/h~S*`;f0*.M&%_l/h~S*`;f0*.M&%_l/h~ 1|$0zRW{7:4gbN{P1|$0zRW{7:4gbN{P1|$0zRW{7:4gbN{P1|$0zRW{7:4 }yG]D(FqinGWb,'#}yG]D(FqinGWb,'#}yG]D(FqinGWb,'#}yG]D(FqinG #### #!/usr/bin/perl -nw # generate ascii 3-d for an input height field # input contains tabs(ts=8), spaces(h=0) or numbers 0..9 # 0 is the furthest and 9 is the closest. # Copyright 2001 -- Abdulaziz Ghuloum chomp; s/\t/' 'x8/eg; # replace tabs $_|=' 'x72; # normalize width s/ /0/g; # default depth s/(\d)/$1$1/g; # double each letter s/.//; # remove first chop; # and last my $p = rs(16); # pick a random string print $p; $p=reverse$p; s[(\d)(\d)][ # for each step if($2>$1){chop($p) for 1..$2-$1} # remove chars if going up elsif($2<$1){$p .= rs($1-$2)}; # add chars if going down $p =~ s/(.*)(.)/$2$1/; # rotate chars $2 # and substitute ]eg; print "$_\n"; sub rs{ my @chars = map chr, 33..126; # all printable chars my $p; $p .= $chars[rand @chars] for 1 .. shift; $p or ''; } #### __DATA__ 5ETtY?.ARZJ;xtN[5ETtY?.ARZJ;xtN[5ETtY?.ARZJ;xtN[5ETtY?.ARZJ;xtN[5ETtY?.ARZJ;xtN[5ETtY?. TI_R_SpgIPIzEpF=TI_R_SpgIPIzEpF=TI_R_SpgIPIzEpF=TI_R_SpgIPIzEpF=TI_R_SpgIPIzEpF=TI_R_Sp Y@ft]c'O#-gslvMaY@ft]c'O#-gslvMaY@ft]c'O#-gslvMaY@ft]c'O#-gslvMaY@ft]c'O#-gslvMaY@ft]c' N`Otq8pNY|u;Kt9?YgdtGNB;|N?YgdtGNB;|N?YgdtGNB;|N<,I>?YgdtGNB;|eN<,I>?YgdtGNB;|eN< o<6k/w}n>N^-1*Dmo<6k/w}n>N^1*DmoN^1*DmoN^1*DmoN^1*Dmo^QE*-*r*u&fKAa>^QE*-*r*u&fDKAa>^E*-*r*u&fDKAa>^E*-*r*u&fDKAa>^!E*-*r*u&fDKAa |e[->w@77`e$sl#o|e[->w@7`e$sl#o|e[->wA@7`$sl#o|e[->wA@7`$sl#o|e[->wA@7`$sl#lo|e[->wA@7` 1h=>'FaR,y.:p19l1h=>'Fa,y.:p19l1h=>'HFay.:p19l1h=>'HFay.:p19l1h=>'HFay.:p19lJ1h=>'HFay. 8/41YnvJaMs}@er;8/41YnJaMs}@er;8/41YqnaMs}@er;8/41YqnaMs}@er;8/41YqnaMs}@er;8;/41YqnaMs K=sdz[e9`+H3Ju),K=sdze9`+H3Ju),K=sdze9`+H3Ju),K=sdze9`+H3Ju),K=sdze9`+H3Ju),K=&sdze9`+H Au\//}Y>KD1X{%'-Au\//Y>KD1X{%'-Au\//Y>KD1X{%'-Au\//Y>KD1X{%'-Au\//Y>KD1X{%'-Au\/L/Y>KD1 qO;Y>6Jv1=b]t"DBqO;Y>Jv1=b]t"DBqO;Y>Jv1=b]t"DBqO;Y>Jv1=b]t"DBqO;Y>Jv1=b]t"DBqO;Y>WJv1=b z*qg-"f%z"Iphh.Tz*qg-"%z"Iphh.Tz*qg-"%z"Iphh.Tz*qg-"%z"Iphh.Tz*qg-"%z"Iphh.Tz*qg-"@%z"I ,|aSS?jIMu7\AwLJAJ)@[YLH*!#w>LJAJ)@[YLH*!#w>LJAJ)@[YLH*!#w>LJAJ)@[YLH*!#w>LJAJ)@[YLH*!#w>L-JA rl2,eE"a2UT$b0!grl2,eE"aUT$b0!grl2,eE"aUT$b0!grl2,eE"aUT$b0!grl2,eE"aUT$b0!grl2,eE"a!UT o]vsn\/l>Z{AY40po]vsn\/l>{AY40po]vsn\/l>{AY40po]vsn\/l>{AY40po]vsn\/l>{AY40poW]vn\/l.>{ N]}WVotea;wtK?!dN]}WVotea;wK?!dN]}WVotea;wK?!dN]}WVotea;wK?!dN]}WVotea;wK?!dNU]}Vote@a; j]Kb^[&:"D4K9OEUj]Kb^[&:"D4K9EUj]Kb^[&:"D4K9EUj]Kb^[&:"D4K9EUj]Kb^[&%"D4K9EUjJ]K^[&%Q"D FAr"!u]aoF*u(;$ZFAr"!u]aoF*u(;$FAZr"u]aoF*u(;$FAZr"u]aoF*u(;$FAZr"u]~oF*u(;$F=uK|"D-='e;8|Xz>uK|"D-='e;[8|z>uK|"Du-='e;8|z>uvK|"Du-=' o##F2}no$Ak/q4u0o##F2}no$Ak/q4u0o##F2no$Ak/q-4uo##F2no$AkG/q-uo##F2'no$Ak/q-uo#@#F2'no$ q|B335Po*+N@h%/|q|B335Po*+N@h%/|q|B33Po*+N@h+%/q|B33Po*+N@h+%q|B33Pno*+N@h%q|B3,3Pno*+N 3oc@{CczkH/2l%ia3oc@{CczkH/2l%ia3oc@{czkH/29l%i3oc@{cfzkH/29%i3oc@K{cfzkH/9%i3oEc@K{cfz 1{PddQd6x]9*U}p+1{PddQd6x]9*U}p+1{PddQ6x]9*_U}p+{PddQ6'x]9*U}p+{PGddQ6'x]9U}p+{>PGddQ6' Z-Q/U\`jWJYP0p\"Z-Q/U\`jWJYP0p\"Z-Q/U\jWJYPe0p\"ZQ/U\jWJmYe0p\"ZrQ/U\jWJmY0p\":ZrQ/U\jW W)Vz:(#%`UOikL:ZW)Vz:(#%`UOikL:ZW)Vz:(%`UOi3kL:ZW)Vz(%`UOi3kL::ZW)Vz(%`UOikL::NZW)Vz(%` ShG$E(`P@h:7lkaMShG$E(`P@h:7lkaMShG$E(P@h:17lkaMShG$EP@h:17lkuaMShG$EP@h:1lkua^MShG$EP@ lpCQbgVNX|OH\W0^lpCQbgVNX|OH\W0^lpCQbgNX|O/H\W0^lpCQbgX|O/H\W0^lpCQbgX|O/HW0^l@pCQbgX|O 6w/<~!OdY"\U:yfd6w/<~!OdY"\U:yfd6w/<~OdY"=\U:yfd6w/<~dY"=\U:yfd67w/<~dY"=U:yfdk67w/<~dY g!NaIBPoGp`G|$acg!NaIBPoGp`G|$acg!NaBPoGpG`G|$acg!aBPoGpG`G|$acg3!aBPoGpGG|$acg#3!aBPoG iyZp'J4S8FLxA/zkiyZp'J4S8FLxA/zkiyZpJ4S8FoLxA/zkiZpJ4S8FoJLA/zk`iZpJ4S8FJLA/zk`aiZpJ4S8 qG~C=1f_:6mCBYL:qG~C=1f_:6mCBYL:qGC=1f_:6GmCBYL:qGC=1f_:6GmCBYL:qGC=1f_6GmCBYL:)qGC=1f_ H0sK(eTR1zixaG=UH0sK(eTR1zixaG=U0sK(eTR1izixaG=U0sK(eTR1izixaG=U0sK(eTR1zixaG=>U0sK(eTR !hUCWvci*qOWP~4[!hUCWvci*qOWP~[!hUCWvci*8qOWP~[!hUCWvci*8qOWP~[!hUCWvci*8qOWP~[!hUCWvci .Q&K@9mCK?I&Ffke.Q&K@9mCK?I&Ffke.Q&K@9mCK?I&Ffke.Q&K@9mCK?I&Ffke.Q&K@9mCK?I&Ffke.Q&K@9m }Fi$r(_eOy+g!9k9}Fi$r(_eOy+g!9k9}Fi$r(_eOy+g!9k9}Fi$r(_eOy+g!9k9}Fi$r(_eOy+g!9k9}Fi$r(_ ?$cB~]?94~yL?9[z?$cB~]?94~yL?9[z?$cB~]?94~yL?9[z?$cB~]?94~yL?9[z?$cB~]?94~yL?9[z?$cB~]?