Já bych porovnání jazyků viděl maličko jinak. Na počátku byl vývojový diagram...
Jako první podle něj vznikl program pro
ZX81:
Kód:
9 REM ------------
10 REM HRA ZX81 NIM
11 REM ------------
20 GOSUB 1000
30 GOSUB 5000
40 GOSUB 3000
50 PRINT ,,,,"HRU HRAJE CLOVEK PROTI POCITACI,STRIDAVE ODEBIRAJI ZAPALKY PODLESTANOVENEHO MAXIMA. TEN, NA KOHOZUSTANE POSLEDNI, PROHRAVA.",,,,,"STISKNI NEJAKOU KLAVESU..."
60 LET R=RND
70 IF INKEY$="" THEN GOTO 70
80 RANDOMIZE
99 REM -------------
100 REM HLAVNI CYKLUS
101 REM -------------
110 GOSUB 5000
120 IF O=0 THEN GOTO 400
199 REM -------------
200 REM HRAJE POCITAC
201 REM -------------
210 GOSUB 3000
220 IF P>1 THEN GOTO 270
230 PRINT "VITEZI CLOVEK."
240 LET V=V+1
250 GOSUB 4000
260 GOTO 200
270 LET O=(P-1)-(M+1)*INT ((P-1)/(M+1))
280 IF O=0 THEN LET O=INT (RND*M)+1
290 IF O>(P-1) THEN GOTO 280
300 PRINT "POCITAC BERE ";O;"."
310 LET P=P-O
399 REM ------------
400 REM HRAJE CLOVEK
401 REM ------------
410 GOSUB 3000
420 IF P>1 THEN GOTO 460
430 PRINT "VITEZI POCITAC."
440 GOSUB 4000
450 GOTO 400
460 PRINT "MUZES VZIT 1 AZ ";M;", KOLIK BERES?"
470 INPUT O
480 LET O=INT O
490 IF O<1 OR O>M OR O>=P THEN GOTO 470
500 LET P=P-O
510 GOTO 100
999 REM ----------------------
1000 REM POCATECNI INICIALIZACE
1001 REM ----------------------
1010 LET H=0
1020 LET V=0
1030 LET O=0
1999 REM ----------------
2000 REM GENERATOR NAHODY
2001 REM ----------------
2010 LET P=2*INT (RND*6)+17
2020 LET M=INT (RND*4)+2
2030 LET H=H+1
2040 RETURN
2999 REM ------------------
3000 REM NAKRESLENI ZAPALEK
3001 REM ------------------
3010 PRINT
3020 FOR R=1 TO 4
3030 FOR S=1 TO P
3040 PRINT CHR$ 133;
3050 NEXT S
3060 PRINT
3070 NEXT R
3080 LET Q=(P-10*INT (P/10))*(P<10 OR P>20)
3090 LET K$="EK"
3100 IF Q>1 AND Q<5 THEN LET K$="KY"
3110 IF Q=1 THEN LET K$="KA"
3120 PRINT ,,"NA STOLE LEZI ";P;" ZAPAL";K$;","
3130 RETURN
3999 REM -----------------
4000 REM VOLBA POKRACOVANI
4001 REM -----------------
4010 PRINT ,,"HER:",H
4020 PRINT "VYHER:",V
4030 PRINT ,,"CHCES HRAT ZNOVU? (A/N)"
4040 IF INKEY$="A" THEN GOTO 4070
4050 IF INKEY$="N" THEN NEW
4060 GOTO 4040
4070 GOSUB 5000
4080 GOTO 2000
4999 REM -----------------
5000 REM SMAZANI OBRAZOVKY
5001 REM -----------------
5010 CLS
5020 PRINT "ZX81 NIM (C)2015 FARAON"
5030 RETURN
O něco později přišel na řadu
FORTRAN 66:
Kód:
PROGRAM NIM MAIN01
INTEGER VYHER,POCET,MAXIM,ODBER MAIN02
LOGICAL KONEC MAIN03
CHARACTER*60 NAVOD(5) MAIN04
COMMON /UDAJE/VYHER,POCET,MAXIM,KONEC MAIN05
COMMON /TEXT/NAVOD MAIN06
CALL INICI MAIN07
C VYPIS NAVODU MAIN08
PRINT 600,(NAVOD(I),I=1,5) MAIN09
READ * MAIN10
C HRAJE CLOVEK MAIN11
1 CALL ZOBRAZ(POCET) MAIN12
IF (POCET.GT.1) GOTO 2 MAIN13
PRINT 100 MAIN14
CALL UKONC MAIN15
IF (KONEC) GOTO 9 MAIN16
GOTO 1 MAIN17
C DOTAZ NA ODBER MAIN18
2 PRINT 200,MAXIM MAIN19
READ 300,ODBER MAIN20
ODBER=INT(ODBER) MAIN21
IF (ODBER.LT.1.OR.ODBER.GT.MAXIM.OR.ODBER.GE.POCET) GOTO 2 MAIN22
POCET=POCET-ODBER MAIN23
C HRAJE POCITAC MAIN24
3 CALL ZOBRAZ(POCET) MAIN25
IF (POCET.GT.1) GOTO 4 MAIN26
PRINT 400 MAIN27
VYHER=VYHER+1 MAIN28
CALL UKONC MAIN29
IF (KONEC) GOTO 9 MAIN30
GOTO 3 MAIN31
C VYPOCET ODBERU MAIN32
4 ODBER=MOD(POCET-1,MAXIM+1) MAIN33
IF (ODBER.GT.0) GOTO 5 MAIN34
6 ODBER=MOD(NAHODA(),MAXIM)+1 MAIN35
IF (ODBER.GE.POCET) ODBER=POCET-1 MAIN36
IF (ODBER.LT.POCET) GOTO 5 MAIN37
GOTO 6 MAIN38
C PROVEDENI ODBERU MAIN39
5 PRINT 500,ODBER MAIN40
POCET=POCET-ODBER MAIN41
GOTO 1 MAIN42
100 FORMAT (16H VITEZI POCITAC!,/) MAIN43
200 FORMAT (16H MUZES VZIT 1 AZ,I2,15H, KOLIK BERES? ) MAIN44
300 FORMAT (I10) MAIN45
400 FORMAT (15H VITEZI CLOVEK!,/) MAIN46
500 FORMAT (13H POCITAC BERE,I2/) MAIN47
600 FORMAT (1A60) MAIN48
9 END MAIN49
C VYPIS VYSLEDKU A VOLBA POKRACOVANI NEBO UKONCENI UKONC01
SUBROUTINE UKONC UKONC02
INTEGER HER,VYHER,POCET,MAXIM UKONC03
LOGICAL KONEC UKONC04
CHARACTER VOLBA UKONC05
COMMON /UDAJE/VYHER,POCET,MAXIM,KONEC UKONC06
PRINT 100,HER,VYHER UKONC07
1 PRINT 200 UKONC08
READ 300,VOLBA UKONC09
IF (VOLBA.EQ.'A'.OR.VOLBA.EQ.'a') GOTO 2 UKONC10
IF (VOLBA.NE.'N'.AND.VOLBA.NE.'n') GOTO 1 UKONC11
KONEC=.TRUE. UKONC12
GOTO 2 UKONC13
C POCATECNI INICIALIZACE PROMENNYCH UKONC14
ENTRY INICI UKONC15
HER=0 UKONC16
VYHER=0 UKONC17
KONEC=.FALSE. UKONC18
C VYGENEROVANI NAHODNYCH HODNOT UKONC19
2 POCET=MOD(NAHODA(),6)*2+17 UKONC20
MAXIM=MOD(NAHODA(),4)+2 UKONC21
HER=HER+1 UKONC22
RETURN UKONC23
100 FORMAT (7H HER: ,I8/,7H VYHER:,I8) UKONC24
200 FORMAT (25H0CHCES POKRACOVAT? [A/N] ) UKONC25
300 FORMAT (A1) UKONC26
END UKONC27
C NAKRESLENI ZAPALEK NA STOLE ZOBRAZ01
SUBROUTINE ZOBRAZ(POC) ZOBRAZ02
INTEGER Q,POC,KON,ZAP ZOBRAZ03
CHARACTER RADEK(60) ZOBRAZ04
CHARACTER*2 KONCOVKA(3) ZOBRAZ05
DATA KONCOVKA/2HKA,2HKY,2HEK/ ZOBRAZ06
C HLAVICKY ZOBRAZ07
DO 10 ZAP=1,27 ZOBRAZ08
RADEK(ZAP*2)=' ' ZOBRAZ09
IF (ZAP.LE.POC) RADEK(ZAP*2)='0' ZOBRAZ10
10 CONTINUE ZOBRAZ11
PRINT 100,RADEK ZOBRAZ12
C DRIVKA ZOBRAZ13
DO 20 ZAP=1,27 ZOBRAZ14
RADEK(ZAP*2)=' ' ZOBRAZ15
IF (ZAP.LE.POC) RADEK(ZAP*2)='|' ZOBRAZ16
20 CONTINUE ZOBRAZ17
PRINT 100,((RADEK),I=1,3) ZOBRAZ18
C VYPOCET KONCOVKY ZOBRAZ19
IF (POC.GE.10.AND.POC.LE.20) GOTO 3 ZOBRAZ20
Q=MOD(POC,10) ZOBRAZ21
KON=2 ZOBRAZ22
IF (Q.EQ.1) KON=1 ZOBRAZ23
IF (Q.GT.4) KON=3 ZOBRAZ24
GOTO 2 ZOBRAZ25
3 KON=3 ZOBRAZ26
2 PRINT 200,POC,KONCOVKA(KON) ZOBRAZ27
RETURN ZOBRAZ28
100 FORMAT (60A1) ZOBRAZ29
200 FORMAT (14H0NA STOLE LEZI,I3,6H ZAPAL,A2,1H,) ZOBRAZ30
END ZOBRAZ31
C GENERATOR PSEUDONAHODNEHO CISLA NAHODA01
FUNCTION NAHODA() NAHODA02
INTEGER NAHODA,SEED NAHODA03
SAVE SEED NAHODA04
C INICIALIZACE SEEDU NAHODA05
IF (SEED.GT.0) GOTO 1 NAHODA06
CALL GETDAT(I,J,K) NAHODA07
SEED=I*365+J*12+K NAHODA08
CALL GETTIM(I,J,K,L) NAHODA09
SEED=MOD(SEED+I*3600+I*60+K,134456) NAHODA10
1 SEED=MOD(8121*SEED+28411,134456-1) NAHODA11
NAHODA=SEED NAHODA12
RETURN NAHODA13
END NAHODA14
C NAPLNENI NAVODU DATA01
BLOCK DATA DATA02
COMMON /TEXT/NAVOD DATA03
CHARACTER*60 NAVOD(5) DATA04
DATA NAVOD/ DATA05
1 27H FORTRAN NIM (C)2015 FARAON, DATA06
2 33H0HRU HRAJE CLOVEK PROTI POCITACI,, DATA07
3 53H STRIDAVE ODEBIRAJI ZAPALKY PODLE STANOVENEHO MAXIMA., DATA08
4 41H TEN, NA KOHO ZUSTANE POSLEDNI, PROHRAVA., DATA09
5 17H0STISKNI ENTER.../ DATA10
END DATA11