OK OK it was easy and you're just reading this to see how I could have
expected something so transparent to be considered obfuscated... In my defence
I would cite *years* of programming where maintainability and therefore
transparency have been primary concerns. Enough excuses here's how I did it.

I looked at each column and assigned it a letter. Then for each row I
determined whether the column was true (print a #) or false (print a space)
for that row.

Column  ABAQBCRBQBERFQR...
Row
0       ### #  # ####  ###  #### ###  #    ####  ##  #  # ###  #  #  ##  #   
1        #  #  # #     #  # #    #  # #      #  #  # #  # #  # ## # #  # #   
2        #  #### ###   ###  ###  ###  #      #  #  # #  # ###  #### #### #   
3        #  #  # #     #    #    # #  #    # #  #  # #  # # #  # ## #  # #   
4        #  #  # ####  #    #### #  # ###   #    ##   ### #  # #  # #  # ### 

Thus in the example below whenever we hit an 'A' in the $data we see that in
$row[0] an 'A' is listed so we output a '#', however when we hit a 'C' in
$row[0] we output a space since 'C' does not appear in $row[0]. When we get to
$row[1] there's no 'A', so whenever we hit an 'A' we now output a space, and
so on. Note that we don't put 'B' or 'Q' in the @row array - this is because a
'B' always prints a '#' and a 'Q' always prints a space. 

The only other refinement is that an 'R' means Repeat whatever you printed in
the previous column for that row.

I also realised I could stuff all the data in the same array and reversed it
for good measure. The stuff after the second hash on the third line is of
course garbage.

In perl terms it is of course very simple, I pretty well only use while, pop,
last if, for split and print - and of course // and :?.

#!/usr/bin/perl
$data = "ABAQBCRBQBDREQRBFRGQBDREQBFHIQBJRQRKELAQMERMQLJRBQBFHIQBNOBQPFRPQBJR" ;
@row  = qw( ADEFHKL GILMNP CDFHLMNOP HKLMOP DEIJP ) ;
$p    = ' ' ;
foreach $row (@row) {
    foreach( split '', $data ) {
        $x = ' ' ;
        $x = $p  if /R/ ;
        $x = '#' if /B/ or /[$row]/ ;
        $p = $x ;
        print $x ;
    }
    print "\n" ;
}

