Forums before death by AOL, social media and spammers... "We can't have nice things"
|    alt.ascii-art    |    Infamous alt.ascii-art forum    |    9,209 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 8,924 of 9,209    |
|    Eli the Bearded to All    |
|    outliner.pl (1/4)    |
|    19 Mar 19 23:26:37    |
   
   From: *@eli.users.panix.com   
      
   Someone I know posts to usenet with a giant classic of ASCII art in his   
   headers. I wrote this script (slightly cleaned up for posting here) to   
   find the outline of the figure. Someone may enjoy it.   
      
   And I'm including the art and the output, which more people may enjoy.   
      
   Elijah   
   ------   
   #!/usr/local/bin/perl -w   
   use strict;   
   use vars qw( @X @c $i $j $l $s $e $p );   
      
   $s = 2; # start line for most processing   
   $e = 162; # end line for most processing   
   $p = chr(0); # placeholder not space and not in original   
   setX(); # $X holds all the lines   
      
   $l=0;   
   for (@X) { # find longest line   
    if(length($_) > $l) {   
    $l = length($_);   
    }   
   }   
      
   for ($i = $s-1; $i < $e+1; $i ++) {   
    $_ = $X[$i] . ' ' x $l; # padding so new shortest is size of old longest   
    $c[$i] = [ split(//), ' ' ]; # 2-d array of chars   
   }   
      
   # Keep first and last char of each line unless there's a space   
   # above it or below it.   
   for ($i = $s; $i < $e; $i ++) {   
    for ($j = 1; $j < ($l-1); $j ++) {   
    if(defined($c[$i][$j]) and $c[$i][$j] =~ /\S/) {   
      
    if( ($c[$i-1][$j] =~ /\S/) and   
    ($c[$i+1][$j] =~ /\S/) and   
    ($c[$i][$j-1] =~ /\S/) and   
    ($c[$i][$j+1] =~ /\S/) ) {   
    $c[$i][$j] = $p;   
    }   
    }   
    }   
   }   
      
   # replace placeholders   
   for ($i = $s; $i < $e; $i ++) {   
    for ($j = 1; $j < $l; $j ++) {   
    if(defined($c[$i][$j]) and $c[$i][$j] eq $p) { $c[$i][$j] = ' ' }   
    $X[$i] = join('', @{$c[$i]});   
    $X[$i] =~ s/ +$//; # depad   
    }   
   }   
      
   for ($i = 0; $i < @X; $i ++) {   
    printf "X-%03d: %s\n", $i, $X[$i];   
   }   
      
   sub setX {   
   $X[0] = '';   
   $X[1] = '';   
   $X[2] = ' 8888 8888888';   
   $X[3] = ' 888888888888888888888888';   
   $X[4] = ' 8888:::8888888888888888888888888';   
   $X[5] = ' 8888::::::8888888888888888888888888888';   
   $X[6] = ' 88::::::::888:::8888888888888888888888888';   
   $X[7] = ' 88888888::::8:::::::::::88888888888888888888';   
   $X[8] = ' 888 8::888888::::::::::::::::::88888888888 888';   
   $X[9] = ' 88::::88888888::::m::::::::::88888888888 8';   
   $X[10] = ' 888888888888888888:M:::::::::::8888888888888';   
   $X[11] = ' 88888888888888888888::::::::::::M88888888888888';   
   $X[12] = ' 8888888888888888888888:::::::::M8888888888888888';   
   $X[13] = ' 8888888888888888888888:::::::M888888888888888888';   
   $X[14] = ' 8888888888888888::88888::::::M88888888888888888888';   
   $X[15] = ' 88888888888888888:::88888:::::M888888888888888 8888';   
   $X[16] = ' 88888888888888888:::88888::::M::;o*M*o;888888888 88';   
   $X[17] = ' 88888888888888888:::8888:::::M:::::::::::88888888 8';   
   $X[18] = ' 88888888888888888::::88::::::M:;:::::::::::888888888';   
   $X[19] = ' 8888888888888888888:::8::::::M::aAa::::::::M88888888888';   
   $X[20] = ' 88 8888888888::88::::8::::M:::::::::::::8888888888888888888';   
   $X[21] = ' 88 88888888888:::8:::::::::M::::::::::;::88:88888888888888888';   
   $X[22] = ' 8 8888888888888:::::::::::M::"@@@@@@@"::::8w8888888888888888';   
   $X[23] = ' 88888888888:888::::::::::M:::::"@a@":::::M8i888888888888888';   
   $X[24] = ' 8888888888::::88:::::::::M88:::::::::::::M88z88888888888888888';   
   $X[25] = ' 88888888:::::8:::::::::M88888:::::::::MM888!888888888888888888';   
   $X[26] = ' 888888888:::::8:::::::::M8888888MAmmmAMVMM888*8888888888888888';   
   $X[27] = ' 88888 M:::::::::::::::M888888888:::::::MM888888888888888888888';   
   $X[28] = ' 888 M::::::::::::::M88888888888::::::MM88888888888888888888';   
   $X[29] = ' 888 M:::::::::::::M8888888888888M:::::mM8888888888888888888';   
   $X[30] = ' 888 M::::::::::::M8888:888888888888::::m::Mm88888 8888888888';   
   $X[31] = ' 88 M::::::::::::8888:88888888888888888::::::Mm8 88888888';   
   $X[32] = ' 88 M::::::::::8888M::88888::888888888888:::::::Mm8888888';   
   $X[33] = ' 8 MM::::::::8888M:::8888:::::888888888888::::::::Mm8 4';   
   $X[34] = ' 8M:::::::8888M:::::888:::::::88:::8888888::::::::Mm2';   
   $X[35] = ' 88MM:::::8888M:::::::88::::::::8:::::888888:::M:::::M';   
   $X[36] = ' 8888M:::::888MM::::::::8:::::::::::M::::8888::::M::::M';   
   $X[37] = ' 88888M:::::88:M::::::::::8:::::::::::M:::8888::::::M::M';   
   $X[38] = ' 88 888MM:::888:M:::::::::::::::::::::::M:8888:::::::::M:';   
   $X[39] = ' 8 88888M::88::M:::::::::::::::::::::::MM:88::::::::::::M';   
   $X[40] = ' 88888M::88::M::::::::::*88*::::::::::M:88::::::::::::::M';   
   $X[41] = ' 888888M::88::M:::::::::88@@88:::::::::M::88::::::::::::::M';   
   $X[42] = ' 888888MM::88:MM:::::::::88@@88:::::::::M:::8::::::::::::::*88';   
   $X[43] = ' 88888M:::8::MM::::::::::*88*::::::::::M::::::::::::::::::88@@';   
   $X[44] = ' 8888 MM::::::MM::::::::::::::::::::::MM::::::::::::::::::88@@';   
   $X[45] = ' 888 M:::::::MM:::::::::::::::::::MM::M::::::::::::::::*88';   
   $X[46] = ' 888 MM:::::::MMM::::::::::::::::MM:::MM:::::::::::::::M';   
   $X[47] = ' 88 M::::::::MMMM:::::::::::MMMM:::::MM::::::::::::MM';   
   $X[48] = ' 88 MM:::::::::MMMMMMMMMMMMMMM::::::::MMM::::::::MMM';   
   $X[49] = ' 88 MM::::::::::::MMMMMMM::::::::::::::MMMMMMMMMM';   
   $X[50] = ' 88 8MM::::::::::::::::::::::::::::::::::MMMMMM';   
   $X[51] = ' 8 88MM::::::::::::::::::::::M:::M::::::::MM';   
   $X[52] = ' 888MM::::::::::::::::::MM::::::MM::::::MM';   
   $X[53] = ' 88888MM:::::::::::::::MMM:::::::mM:::::MM';   
   $X[54] = ' 888888MM:::::::::::::MMM:::::::::MMM:::M';   
   $X[55] = ' 88888888MM:::::::::::MMM:::::::::::MM:::M';   
   $X[56] = ' 88 8888888M:::::::::MMM::::::::::::::M:::M';   
   $X[57] = ' 8 888888 M:::::::MM:::::::::::::::::M:::M';   
   $X[58] = ' 888888 M::::::M:::::::::::::::::::M:::M';   
   $X[59] = ' 888888 M:::::M::::::::::::::::::::M:::M';   
   $X[60] = ' 888888 M:::::m::::::::::::::::::::MM::M';   
   $X[61] = ' 88888 M:::::m:::::::::::::::::::::M:::M';   
   $X[62] = ' 88888 M:::::m::::::::::::@:::::::::M:::M';   
   $X[63] = ' 88888 M::::::M:::::::::::@@::::::::::mm:::M';   
   $X[64] = ' 88888 M::::::m::::::::::::@@::::::::::m::::MM';   
   $X[65] = ' 8888 M:::::::::M::::::::::::@@::::::::::M::::MM';   
   $X[66] = ' 8888 M:::::::::::M::::::::::::@@::::::::::M::::M';   
   $X[67] = ' 888 M::::::::::::m:::::::::::@::::::::::::M::::M';   
   $X[68] = ' 8888 M:::::::::::::::M::::::::::::::::::::::m::::MM';   
   $X[69] = ' 888 M::::::::::::::::m:::::::::::::::::::::M:::::MM';   
   $X[70] = ' 8888 MM:::::::::::::::::M::::::::::::::::::::m::::::mM';   
      
   [continued in next message]   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca