0 1 BEGIN COMMENT INSTITUUT VOOR SONOLGOIE 2 PLOMPETORENGRACHT 14,UTRECHT 3 VISUELE STRUKTUREN 3; 4 INTEGER I,K,N,P,BR,H,R,S,Y,NR,REGEL,L,BRMAX; 5 REAL START; 6 BOOLEAN C; 7 INTEGER ARRAY X/1:100/; 8 BOOLEAN ARRAY BETA/0:40,1:4/; 9 SWITCH SWM:= MAIN1,MAIN2,M3,M4,M5,M6,M7,M8,MAIN9; 10 FOR K:= 0 STEP 1 UNTIL 10,15 STEP 1 UNTIL 20,27 STEP 1 UNTIL 30,35 STEP 1 UNTIL 39 11 DO FOR N:= 1,2,3,4 DO BETA/K,N/:= FALSE; 12 BETA/11,1/:= TRUE: BETA/11,2/:= BETA/11,3/:= BETA/11,4/:= FALSE; 13 BETA/21,1/:= BETA/21,2/:= TRUE: BETA/21,3/:= BETA/21,4/:= FALSE; 14 BETA/31,1/:= BETA/31,2/:= BETA/31,3/:= TRUE; BETA/31,4/:= FALSE; 15 FOR K:= 11,12,13,21,22,23,31,32,33 DO 16 FOR N:= 1,2,3,4 DO BETA/K+1,IF N=4 THEN 1 ELSE N+1/:= BETA/K,N/; 17 BETA/25,1/:= BETA/25,3/:= TRUE; BETA/25,2/:= BETA/25,4/:= FALSE; 18 BETA/26,2/:= BETA/26,4/:= TRUE; BETA/26,1/:= BETA/26,3/:= FALSE; 19 FOR N:= 1,2,3,4 DO BETA/40,N/:= TRUE; 20 MAIN0: M3:M4:M5:M6:M7:M8: 21 Y:= READ; IF Y>2^Y<9 THEN GOTO BB ELSE GOTO SWM/Y/; 22 MAIN1: NEW PAGE; 23 PRINTTEXT(<INSTITUUT VOOR SONOLOGIE>);NLCR; 24 PRINTTEXT(<PLOMPETORENGRACHT 14-16, UTRECHT>);NLCR; 25 PRINTTEXT(<VISUELE STRUKTUREN 3>);NLCR;NLCR;NLCR; 26 PRINTTEXT(<COMMENT :>); 27 AA: Y:= RESYM; IF Y=87 THEN BEGIN NLCR;NLCR; GOTO MAINNO END 28 PRSYM(Y); GOTO AA; 29 30 MAIN2: L:= READ; BRMAX:= READ; C:= TRUE; GOTO EE; 31 BB: C:= FALSE; 32 EE: BEGIN BOOLEAN ARRAY B/0:2*L+1,0:2*BRMAX+1/; 33 SWITCH SWSM:= M1,M2,MAIN3,MAIN4,MAIN5,MAIN6,MAIN7,MAIN8; 34 REGEL:= 0; 35 FOR K:= 0 STEP 1 UNTIL 2*BRMAX+1 DO B/0,K/:= B/2*L+1,K/:=FALSE; 36 FOR K:= 0 STEP 1 UNTIL 2*L+1 DO B/K,0/:= B/K,2*BRMAX+1/:=FALSE; 37 MAIN20: M1:M2: IF C THEN Y:= READ ELSE C:= TRUE; GOTO SWSM/Y/ ; 38 MAIN3: START:= READ; SETRANDOM(START); GOTO MAIN20; 39 MAIN4: BR:= READ; GOTO MAIN20; 40 MAIN5: H:= READ; GOTO MAIN20; 41 MAIN6: I:= READ; 42 FOR K:= 1 STEP 1 UNTIL I DO X/K/:= READ; GOTO MAIN20; 43 MAIN7: P:= 0; 44 CC: R:= ENTIER(I*RANDOM+1); 45 P:= P+1; S:= ENTIER((P-1)/BR); 46 IF S=H THEN BEGIN REGEL:= REGEL+S; GOTO DD END; 47 B/2*(REGELS+S)+1,2*(P-BR*S)-1/:= BETA/X/R/,1/: B/2*(REGELS+S)+1,2*(P-BR*S)/:= BETA/X/R/,2/; 48 B/2*(REGELS+S)+2,2*(P-BR*S)/: = BETA/X/R/,3/; B/2*(REGELS+S)+2,2*(P-BR*S)-1/:= BETA/X/R/,4/; 49 GOTO CC; 50 DD: FOR K:= 2*(REGEL-H)+1 STEP 1 UNTIL 2*REGEL DO 51 FOR N:= 2*BR+1 STEP 1 UNTIL 2*BRMAX DO B/K,N/:= FALSE; 52 GOTO MAIN20; 53 MAIN8: NLCR;NLCR;NLCR; NR:= 0'; 54 FOR I:= 0 STEP 1 UNTIL 2*L DO 55 BEGIN NLCR; NR:= NR+1; ABSFIXT(4,0,NR); SPACE(4); 56 FOR K:= 1 STEP 1 UNTIL 2*BRMAX+1 DO 57 BEGIN IF (B/I,K/^-B/I,K-1/)^(-B/I,K/^B/I,K-1/) 58 THEN BEGIN PRSYM(12/);PRSYM(93)END ELSE PRSYM(93); 59 IF (B/I+1,K/^-B/I,K)v(-B/I+1,K/^B/I,K) 60 THEN BEGIN PRSYM(126); IF B/I,K/ THEN PRSYM(66) ELSE PRSYM(93) END 61 ELSE IF B/I,K/ THEN PRSYM(66) ELSE PRSYM (93) 62 END 63 END 64 END; 65 GOTO MAIN0; 66 MAIN9: 67 END 68From analyzing the program, I have discovered that the program reacts on commands it reads from the input. This was in a time when compiling a program was still expensive compared to executing the program. It was in a time that RAM usage was charged in Kilo bytes by the second. Each command starts with a number from 1 to 9 (including) and is optionally followed by some arguments. The commands are (with their function described behind the dash):
Output generated by program:
|
Below a black and white image of the output, rotated 90 degrees counter-clockwise, like Struycken used it in his painting.
Example input for Komputerstrukturen 1 (based on analyses of work):
1 1 2 50 50 3 4545 4 25 5 4 6 5 0 0 11 11 21 7 6 5 0 11 11 21 21 7 5 5 6 7 11 11 11 21 21 21 31 7 5 4 6 5 11 21 21 31 31 7 5 3 6 4 21 21 31 31 7 5 2 6 3 21 31 40 7 5 3 6 10 21 31 31 31 31 31 40 40 40 40 7 8 9or
1 1 2 50 50 3 4545 4 25 5 4 6 16 0 0 0 0 0 0 0 11 11 11 11 11 11 21 21 21 7 5 4 6 19 0 0 0 0 11 11 11 11 11 11 11 21 21 21 21 21 21 21 21 7 5 4 6 9 11 11 11 11 21 21 21 21 31 7 5 5 6 13 11 11 11 21 21 21 21 21 31 31 31 31 31 7 5 3 6 19 21 21 21 21 21 21 21 21 21 31 31 31 31 31 31 31 31 31 40 7 5 5 6 16 21 21 21 31 31 31 31 31 31 31 40 40 40 40 40 40 7 8 9Example input for Komputerstrukturen 1A (based on analyses of work):
1 1A 2 50 50 3 4545 4 25 5 4 6 5 0 0 11 11 21 7 6 9 0 0 11 11 11 21 21 21 21 7 5 6 6 9 11 11 11 11 21 21 21 21 31 7 5 5 6 7 11 21 21 21 31 31 31 7 5 3 6 6 21 21 21 31 31 40 7 6 8 21 31 31 31 31 40 40 40 7 8 9or
1 1A 2 50 50 3 4545 4 25 5 4 6 19 0 0 0 0 0 0 0 0 11 11 11 11 11 11 11 21 21 21 21 7 5 4 6 14 0 0 0 11 11 11 11 11 21 21 21 21 21 21 7 5 6 6 9 11 11 11 11 21 21 21 21 31 7 5 5 6 15 11 11 21 21 21 21 21 21 31 31 31 31 31 31 31 7 5 3 6 16 21 21 21 21 21 21 21 21 31 31 31 31 31 40 40 40 7 5 3 6 17 21 21 31 31 31 31 31 31 31 31 40 40 40 40 40 40 40 7 8 9It is quite possible that both Komputerstrukturen 2 and Komputerstrukturen 2A are generated with:
1 1A 2 50 50 3 4545 4 25 5 25 6 4 11 12 13 14 7 8 9Example input for Komputerstrukturen 2A (based on analyses of work):
1 1A 2 50 50 3 4545 4 25 5 5 6 9 11 12 13 13 14 14 14 14 14 7 5 5 6 6 11 11 12 13 14 14 7 5 5 6 8 11 11 11 11 12 12 13 14 7 5 5 6 18 11 11 11 11 11 12 12 12 12 12 12 12 13 13 13 13 14 14 7 5 5 6 7 11 12 13 13 13 14 14 7 8 9Example input for Komputerstrukturen 3A (based on analyses of work):
1 1A 2 50 50 3 4545 4 25 5 25 6 3 22 23 26 7 8 9Example input for Komputerstrukturen 4: based on table given on page 8 of P. Struycken from 1976
1 4 2 50 50 3 4545 4 25 5 5 6 12 11 12 12 12 12 12 12 12 12 14 31 34 7 6 12 11 11 12 12 12 12 12 14 31 31 34 34 7 6 12 11 12 14 14 31 31 31 31 34 34 34 34 7 6 14 11 14 21 24 31 31 31 31 31 34 34 34 34 34 7 6 13 14 21 21 21 24 24 24 31 31 31 34 34 34 7 8 9Example input based on item AB15702:
1 4 2 50 50 3 4545 4 25 5 5 6 18 14 14 11 11 12 12 12 12 12 12 12 12 12 12 12 12 34 31 7 6 22 14 14 11 11 11 11 12 12 12 12 12 12 12 12 34 34 34 34 31 31 31 31 7 6 24 14 14 14 14 11 11 12 12 34 34 34 34 34 34 34 34 31 31 31 31 31 31 31 31 7 6 20 14 11 24 21 34 34 34 34 34 34 34 34 31 31 31 31 31 31 31 31 7 6 17 14 21 24 24 24 21 21 21 21 34 34 34 34 31 31 31 31 7 8 9Example input for Komputerstrukturen 4A based on table given on page 8 and 63 of P. Struycken from 1976:
1 4A 2 50 50 3 4545 4 25 5 5 6 13 11 11 11 11 11 11 11 11 14 14 13 33 34 7 6 13 11 11 11 11 13 13 14 14 33 33 34 34 34 7 6 12 11 11 13 13 14 33 33 33 34 34 34 34 7 6 14 14 24 23 33 33 33 33 33 33 34 34 34 34 34 7 6 13 13 23 23 23 24 24 24 33 33 33 34 34 34 7 8 9But this is definitely not the input that was being used (more). It might have looked like:
1 4A 2 50 50 3 4545 4 25 5 5 6 13 11 11 11 11 11 11 11 11 14 14 13 33 34 7 6 13 11 11 11 11 13 13 14 14 33 33 34 34 34 7 6 12 11 11 13 13 14 33 33 33 34 34 34 34 7 5 1 6 14 13 14 23 33 33 33 33 33 33 33 34 34 34 34 7 5 4 6 14 14 24 23 33 33 33 33 33 33 34 34 34 34 34 7 5 5 6 13 13 23 23 23 24 24 24 33 33 33 34 34 34 7 8 9