Jul. 26th, 2025

spamsink: (Default)
[personal profile] spamsink
Теперь мы умеем писать интроспективные программы (quine) на БЭСМ-6 на всех Фортранах
      РRОGRАМQ
      RЕАLХ(14)
      DАТА  Х /84Н(6Х8НРRОGRАМQ/6Х9НRЕАLХ(14)/6Х12НDАТА  Х /84Н9А6/5Х1НС
     С5А6,1Н//6Х9НРRINТ Х,Х/6Х3HЕND)/
      РRINТ Х,Х
      ЕND

(для Форекса, не требующего PROGRAM, можно чуть короче),
на Паскале-Мониторе
PROGRAM MAIN(OUTPUT);TYPE STRING=PACKED ARRAY[1..60]OF CHAR;
VAR L:ARRAY[1..6]OF STRING; I,J:INTEGER; Q,S:CHAR; BEGIN
L[1]:=’PROGRAM MAIN(OUTPUT);TYPE STRING=PACKED ARRAY[1..60]OF CHAR;’;
L[2]:=’VAR L:ARRAY[1..6]OF STRING; I,J:INTEGER; Q,S:CHAR; BEGIN    ’;
L[3]:=’Q:=ZZZZ; FOR I:=1 TO 2 DO WRITELN(L[I]); FOR I := 1 TO 6 DO ’;
L[4]:=’WRITELN(ZL[Z,I:1,Z]:=Z,Q,L[I],Q,Z;Z); FOR I:=3 TO 6 DO BEGIN’;
L[5]:=’FOR J:=1 TO 60 DO BEGIN S:=L[I][J]; IF S=ZZZ THEN IF J<>43  ’;
L[6]:=’THEN S:=Q; WRITE(S) END; WRITELN END END.                   ’;
Q:=’’’’; FOR I:=1 TO 2 DO WRITELN(L[I]); FOR I := 1 TO 6 DO
WRITELN(’L[’,I:1,’]:=’,Q,L[I],Q,’;’); FOR I:=3 TO 6 DO BEGIN
FOR J:=1 TO 60 DO BEGIN S:=L[I][J]; IF S=’Z’ THEN IF J<>43
THEN S:=Q; WRITE(S) END; WRITELN END END.

(на Паскале-Автокоде тоже можно, в принципе)
и на АЛГОЛе-ГДР
 ’BEGIN’’STRING’’ARRAY’L[1:7];’INTEGER’I,J;’STRING’Q,R,S;
 ’PROCEDURE’P(S);’STRING’S;’BEGIN’’FOR’J:=1’STEP’1’UNTIL’
 LENGTH(S)’DO’PRINT(’IF’J’NE’45’AND’S[J] = ’’/’’ ’THEN’ Q
 ’ELSE’ S[J]); PRINT(NEWLINE) ’END’; R := ’’1234567’’;
 L[1]:=’’/BEGIN//STRING//ARRAY/L[1:7];/INTEGER/I,J;/STRING/Q,R,S;’’;
 L[2]:=’’/PROCEDURE/P(S);/STRING/S;/BEGIN//FOR/J:=1/STEP/1/UNTIL/’’;
 L[3]:=’’LENGTH(S)/DO/PRINT(/IF/J/NE/45/AND/S[J] = ///// /THEN/ Q’’;
 L[4]:=’’/ELSE/ S[J]); PRINT(NEWLINE) /END/; R := //1234567//;’’;
 L[5]:=’’Q:=///47///;/FOR/ I:=1,2,3,4/DO/P(L[I]); /FOR/I:=1,2,3,4,’’;
 L[6]:=’’5,6,7/DO/PRINT(//L[//,R[I],//]:=//,Q,Q,L[I],Q,Q,//;//,’’;
 L[7]:=’’NEWLINE);/FOR/ I:=5,6,7 /DO/ P(L[I]); /END//EOP/’’;
 Q:=’’’47’’’;’FOR’ I:=1,2,3,4’DO’P(L[I]); ’FOR’I:=1,2,3,4,
 5,6,7’DO’PRINT(’’L[’’,R[I],’’]:=’’,Q,Q,L[I],Q,Q,’’;’’,
 NEWLINE);’FOR’ I:=5,6,7 ’DO’ P(L[I]); ’END’’EOP’

На АЛГОЛЕ-БЭСМ им. Курочкина, по-видимому, это невозможно: неизвестен способ напечатать закрывающую кавычку.
На ассемблерах, очевидно, тоже можно, но ломает.

Profile

Сообщество любителей БЭСМ-6

December 2025

S M T W T F S
 123456
78910111213
14151617181920
21222324252627
282930 31   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 18th, 2026 05:08 am
Powered by Dreamwidth Studios