spamsink: (Default)
[personal profile] spamsink posting in [community profile] besm6
Теперь мы умеем писать интроспективные программы (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’

На АЛГОЛЕ-БЭСМ им. Курочкина, по-видимому, это невозможно: неизвестен способ напечатать закрывающую кавычку.
На ассемблерах, очевидно, тоже можно, но ломает.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

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 09:15 am
Powered by Dreamwidth Studios