The Cover Story

Take a look at the cover of the APL\360: User's Manual. It contains a printout generated by this simple APL program, printed on page 2 in the manual:

    G z[m g c
;1'   z[::2Ym"=2Um"R 2 4 1 3 Þ::m;3 4',Rc"Rc";<<Qm;1 2'RRc'
    G

You start the program:

      13 13 3 5 g K apl?360 K

And get the following output:

666660000066666ppppp?????lllll6666666666pppppaaaaalllll6666666666
666660000066666ppppp?????lllll6666666666pppppaaaaalllll6666666666
666660000066666ppppp?????lllll6666666666pppppaaaaalllll6666666666
00000     00000     lllll33333     ?????3333333333     lllll?????
00000     00000     lllll33333     ?????3333333333     lllll?????
00000     00000     lllll33333     ?????3333333333     lllll?????
0000033333pppppllllllllllaaaaa     00000ppppp     lllll?????
0000033333pppppllllllllllaaaaa     00000ppppp     lllll?????
0000033333pppppllllllllllaaaaa     00000ppppp     lllll?????
               ppppp0000000000lllll               ppppp3333366666
               ppppp0000000000lllll               ppppp3333366666
               ppppp0000000000lllll               ppppp3333366666
66666aaaaa33333               aaaaappppplllll     ppppppppppaaaaa
66666aaaaa33333               aaaaappppplllll     ppppppppppaaaaa
66666aaaaa33333               aaaaappppplllll     ppppppppppaaaaa
     ???????????????     00000?????lllllllllllllll66666     33333
     ???????????????     00000?????lllllllllllllll66666     33333
     ???????????????     00000?????lllllllllllllll66666     33333
?????6666633333ppppp     6666666666ppppp               ppppp?????
?????6666633333ppppp     6666666666ppppp               ppppp?????
?????6666633333ppppp     6666666666ppppp               ppppp?????
lllll00000     66666          aaaaaaaaaalllll33333     33333aaaaa
lllll00000     66666          aaaaaaaaaalllll33333     33333aaaaa
lllll00000     66666          aaaaaaaaaalllll33333     33333aaaaa
     aaaaa     lllllppppp33333?????ppppp00000     ppppp33333aaaaa
     aaaaa     lllllppppp33333?????ppppp00000     ppppp33333aaaaa
     aaaaa     lllllppppp33333?????ppppp00000     ppppp33333aaaaa
llllllllllppppp3333300000     ?????     33333     lllll33333ppppp
llllllllllppppp3333300000     ?????     33333     lllll33333ppppp
llllllllllppppp3333300000     ?????     33333     lllll33333ppppp
ppppp     66666?????ppppplllll33333lllllaaaaappppp0000000000?????
ppppp     66666?????ppppplllll33333lllllaaaaappppp0000000000?????
ppppp     66666?????ppppplllll33333lllllaaaaappppp0000000000?????
               00000aaaaa6666600000?????aaaaa     ?????pppppppppp
               00000aaaaa6666600000?????aaaaa     ?????pppppppppp
               00000aaaaa6666600000?????aaaaa     ?????pppppppppp
66666aaaaappppp     lllll66666     lllll     ??????????00000
66666aaaaappppp     lllll66666     lllll     ??????????00000
66666aaaaappppp     lllll66666     lllll     ??????????00000

Of course, this is not identical to the picture on the cover of the manual: The image depends upon the random number generator in APL. How can we reproduce the image exactly as shown on the cover? This is simple, we just have to set the correct random number seed before starting the program.

The random number generator used in APL repeats itself after 231-1 steps, this would take too long time on the simulator. I wrote a small C program that test all possible values, and bingo! The value 1975574597 is the right seed value. The program has to take into account that we don't know if a space in the printout comes from the first or the last space in the text string.

The public library no. 1 contains a working space named WSFNS. This contains the function SETLINK that can be used to set the random number seed. Originally, this function was locked, but here we can see how it is implemented. It uses a secret i-beam function. Type the following:

      6Õ1 1975574597
      13 13 3 5 g K apl?360 K

And you get:

333330000000000?????lllllppppp66666?????aaaaaaaaaaaaaaa     66666
333330000000000?????lllllppppp66666?????aaaaaaaaaaaaaaa     66666
333330000000000?????lllllppppp66666?????aaaaaaaaaaaaaaa     66666
ppppp               aaaaa66666?????66666?????00000     66666lllll
ppppp               aaaaa66666?????66666?????00000     66666lllll
ppppp               aaaaa66666?????66666?????00000     66666lllll
     lllll66666     00000     aaaaa??????????     00000     ?????
     lllll66666     00000     aaaaa??????????     00000     ?????
     lllll66666     00000     aaaaa??????????     00000     ?????
aaaaa0000066666          66666     33333     6666600000     aaaaa
aaaaa0000066666          66666     33333     6666600000     aaaaa
aaaaa0000066666          66666     33333     6666600000     aaaaa
     ppppp66666lllll00000?????          ppppp?????     aaaaa00000
     ppppp66666lllll00000?????          ppppp?????     aaaaa00000
     ppppp66666lllll00000?????          ppppp?????     aaaaa00000
lllll33333pppppaaaaa?????     ppppp     6666600000?????
lllll33333pppppaaaaa?????     ppppp     6666600000?????
lllll33333pppppaaaaa?????     ppppp     6666600000?????
33333     llllllllll?????aaaaalllll     aaaaa??????????
33333     llllllllll?????aaaaalllll     aaaaa??????????
33333     llllllllll?????aaaaalllll     aaaaa??????????
     aaaaa?????3333366666aaaaalllll33333ppppp     66666     00000
     aaaaa?????3333366666aaaaalllll33333ppppp     66666     00000
     aaaaa?????3333366666aaaaalllll33333ppppp     66666     00000
66666?????66666??????????ppppplllllppppp?????00000     aaaaa
66666?????66666??????????ppppplllllppppp?????00000     aaaaa
66666?????66666??????????ppppplllllppppp?????00000     aaaaa
aaaaalllllppppp33333lllll?????66666lllllaaaaappppp?????aaaaa
aaaaalllllppppp33333lllll?????66666lllllaaaaappppp?????aaaaa
aaaaalllllppppp33333lllll?????66666lllllaaaaappppp?????aaaaa
     66666666666666600000333330000033333lllll66666?????ppppp33333
     66666666666666600000333330000033333lllll66666?????ppppp33333
     66666666666666600000333330000033333lllll66666?????ppppp33333
66666          00000?????          33333lllll000003333300000aaaaa
66666          00000?????          33333lllll000003333300000aaaaa
66666          00000?????          33333lllll000003333300000aaaaa
aaaaa     aaaaaaaaaa00000lllll          ?????lllll     ppppp66666
aaaaa     aaaaaaaaaa00000lllll          ?????lllll     ppppp66666
aaaaa     aaaaaaaaaa00000lllll          ?????lllll     ppppp66666

Exactly like the cover page.