_  __   _  _         _ _     _      _           _           
  __| |/ /_ | || |     __| (_)___| | __ (_)_ __   __| | _____  __
 / _` | '_ \| || |_   / _` | / __| |/ / | | '_ \ / _` |/ _ \ \/ /
| (_| | (_) |__   _| | (_| | \__ \   <  | | | | | (_| |  __/>  < 
 \__,_|\___/   |_|    \__,_|_|___/_|\_\ |_|_| |_|\__,_|\___/_/\_\
                                                                 
            

NIM

FILE INFORMATION

FILENAME(S): NIM

FILE TYPE(S): SEQ

FILE SIZE: 5.8K

FIRST SEEN: 2025-11-02 16:54:38

APPEARS ON: 6 disk(s)

FILE HASH

2abb5f125b7b0739e2f8b04078e176112f693da5175d747e53e0e09a4a5e1139

FOUND ON DISKS (6 DISKS)

DISK TITLE FILENAME FILE TYPE COLLECTION TRACK SECTOR ACTIONS
ALI NIM SEQ Treasure Chest - Reamigation 4 9 DOWNLOAD FILE
DICK 59 NIM SEQ DuncanTwain 6 9 DOWNLOAD FILE
DICK 10 NIM SEQ DuncanTwain 6 9 DOWNLOAD FILE
PASCAL 64 NIM SEQ DuncanTwain 29 8 DOWNLOAD FILE
PASCAL NIM SEQ DuncanTwain 6 9 DOWNLOAD FILE
PASCAL NIM SEQ hedning, pewp 6 9 DOWNLOAD FILE

FILE CONTENT & ANALYSIS

00000000: 20 70 72 6F 67 72 61 6D  20 6E 69 6D 20 28 69 6E  | program nim (in|
00000010: 70 75 74 2C 20 6F 75 74  70 75 74 29 3B 0D 63 6F  |put, output);.co|
00000020: 6E 73 74 20 20 20 6E 72  6F 77 73 20 3D 20 32 35  |nst   nrows = 25|
00000030: 3B 0D 20 20 20 20 20 20  20 20 64 65 6C 61 79 20  |;.        delay |
00000040: 3D 20 31 30 30 30 3B 0D  20 20 20 20 20 20 20 20  |= 1000;.        |
00000050: 63 6F 69 6E 20 3D 20 31  36 38 3B 0D 76 61 72 20  |coin = 168;.var |
00000060: 20 20 20 20 70 69 6C 65  20 3A 20 61 72 72 61 79  |    pile : array|
00000070: 20 5B 31 2E 2E 33 5D 20  6F 66 20 30 2E 2E 6E 72  | [1..3] of 0..nr|
00000080: 6F 77 73 3B 0D 20 20 20  20 20 20 20 20 6D 6F 76  |ows;.        mov|
00000090: 65 20 20 3A 20 72 65 63  6F 72 64 0D 20 20 20 20  |e  : record.    |
000000A0: 20 20 20 20 20 20 20 20  20 20 20 20 6E 74 61 6B  |            ntak|
000000B0: 65 6E 2C 20 70 69 6C 65  6E 6F 20 3A 20 69 6E 74  |en, pileno : int|
000000C0: 65 67 65 72 3B 0D 20 20  20 20 20 20 20 20 65 6E  |eger;.        en|
000000D0: 64 3B 0D 20 20 20 20 20  20 20 20 69 20 3A 20 69  |d;.        i : i|
000000E0: 6E 74 65 67 65 72 3B 0D  20 20 20 20 20 20 20 20  |nteger;.        |
000000F0: 6B 65 79 20 3A 20 63 68  61 72 3B 0D 66 75 6E 63  |key : char;.func|
00000100: 74 69 6F 6E 20 67 61 6D  65 6F 76 65 72 20 3A 20  |tion gameover : |
00000110: 62 6F 6F 6C 65 61 6E 3B  0D 62 65 67 69 6E 20 67  |boolean;.begin g|
00000120: 61 6D 65 6F 76 65 72 20  3A 3D 20 28 70 69 6C 65  |ameover := (pile|
00000130: 20 5B 31 5D 20 2B 20 70  69 6C 65 20 5B 32 5D 20  | [1] + pile [2] |
00000140: 2B 20 70 69 6C 65 20 5B  33 5D 20 3D 20 30 29 20  |+ pile [3] = 0) |
00000150: 65 6E 64 3B 0D 66 75 6E  63 74 69 6F 6E 20 61 73  |end;.function as|
00000160: 63 20 28 6E 20 3A 20 69  6E 74 65 67 65 72 29 20  |c (n : integer) |
00000170: 3A 20 63 68 61 72 3B 0D  62 65 67 69 6E 20 61 73  |: char;.begin as|
00000180: 63 20 3A 3D 20 63 68 72  20 28 6E 2B 6F 72 64 20  |c := chr (n+ord |
00000190: 28 27 30 27 29 29 20 65  6E 64 3B 0D 70 72 6F 63  |('0')) end;.proc|
000001A0: 65 64 75 72 65 20 64 69  73 70 6C 61 79 3B 0D 20  |edure display;. |
000001B0: 20 20 20 20 20 20 20 76  61 72 20 20 20 20 20 70  |       var     p|
000001C0: 2C 20 72 6F 77 2C 20 63  6F 6C 2C 20 66 69 72 73  |, row, col, firs|
000001D0: 74 63 6F 6C 20 3A 20 69  6E 74 65 67 65 72 3B 0D  |tcol : integer;.|
000001E0: 20 20 20 20 20 20 20 20  62 65 67 69 6E 0D 20 20  |        begin.  |
000001F0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 70 61  |              pa|
00000200: 67 65 3B 0D 20 20 20 20  20 20 20 20 20 20 20 20  |ge;.            |
00000210: 20 20 20 20 66 6F 72 20  70 20 3A 3D 20 31 20 74  |    for p := 1 t|
00000220: 6F 20 33 20 64 6F 0D 20  20 20 20 20 20 20 20 20  |o 3 do.         |
00000230: 20 20 20 20 20 20 20 20  20 20 20 62 65 67 69 6E  |           begin|
00000240: 0D 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00000250: 20 20 20 20 20 20 20 20  20 66 69 72 73 74 63 6F  |         firstco|
00000260: 6C 20 3A 3D 20 70 2A 31  30 3B 0D 20 20 20 20 20  |l := p*10;.     |
00000270: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000280: 20 20 20 66 6F 72 20 72  6F 77 20 3A 3D 20 30 20  |   for row := 0 |
00000290: 74 6F 20 4E 52 4F 57 53  2D 31 20 64 6F 20 0D 20  |to NROWS-1 do . |
000002A0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000002B0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 69  |               i|
000002C0: 66 20 70 69 6C 65 20 5B  70 5D 20 3E 3D 20 4E 52  |f pile [p] >= NR|
000002D0: 4F 57 53 2D 72 6F 77 20  74 68 65 6E 20 0D 20 20  |OWS-row then .  |
000002E0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000002F0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000300: 20 20 66 6F 72 20 63 6F  6C 20 3A 3D 20 66 69 72  |  for col := fir|
00000310: 73 74 63 6F 6C 2B 33 20  74 6F 20 66 69 72 73 74  |stcol+3 to first|
00000320: 63 6F 6C 2B 35 20 64 6F  0D 20 20 20 20 20 20 20  |col+5 do.       |
00000330: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000340: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000350: 20 76 64 75 20 28 72 6F  77 2C 20 63 6F 6C 20 2C  | vdu (row, col ,|
00000360: 20 63 68 72 20 28 43 4F  49 4E 29 29 3B 0D 20 20  | chr (COIN));.  |
00000370: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000380: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 69 66  |              if|
00000390: 20 70 69 6C 65 20 5B 70  5D 20 3E 3D 20 31 30 20  | pile [p] >= 10 |
000003A0: 74 68 65 6E 20 0D 20 20  20 20 20 20 20 20 20 20  |then .          |
000003B0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000003C0: 20 20 20 20 20 20 76 64  75 20 28 4E 52 4F 57 53  |      vdu (NROWS|
000003D0: 2D 31 2C 20 66 69 72 73  74 63 6F 6C 2C 20 61 73  |-1, firstcol, as|
000003E0: 63 20 28 70 69 6C 65 5B  70 5D 20 64 69 76 20 31  |c (pile[p] div 1|
000003F0: 30 29 29 3B 0D 20 20 20  20 20 20 20 20 20 20 20  |0));.           |
00000400: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000410: 20 20 20 20 20 76 64 75  20 28 4E 52 4F 57 53 2D  |     vdu (NROWS-|
00000420: 31 2C 20 66 69 72 73 74  63 6F 6C 2B 31 2C 61 73  |1, firstcol+1,as|
00000430: 63 28 70 69 6C 65 5B 70  5D 20 6D 6F 64 20 31 30  |c(pile[p] mod 10|
00000440: 29 29 3B 0D 20 20 20 20  20 20 20 20 20 20 20 20  |));.            |
00000450: 20 20 20 20 20 20 20 20  65 6E 64 3B 0D 20 20 20  |        end;.   |
00000460: 20 20 20 20 20 65 6E 64  3B 20 28 2A 20 64 69 73  |     end; (* dis|
00000470: 70 6C 61 79 20 2A 29 0D  70 72 6F 63 65 64 75 72  |play *).procedur|
00000480: 65 20 73 69 67 6E 6F 6E  3B 0D 20 20 20 20 20 20  |e signon;.      |
00000490: 20 20 62 65 67 69 6E 0D  20 20 20 20 20 20 20 20  |  begin.        |
000004A0: 20 20 20 20 20 20 20 20  70 61 67 65 3B 0D 20 20  |        page;.  |
000004B0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 77 72  |              wr|
000004C0: 69 74 65 6C 6E 20 28 27  20 20 20 20 20 20 20 20  |iteln ('        |
000004D0: 20 20 20 20 20 20 20 20  20 20 2A 2A 2A 20 20 4E  |          ***  N|
000004E0: 49 4D 20 20 2A 2A 2A 27  29 3B 0D 20 20 20 20 20  |IM  ***');.     |
000004F0: 20 20 20 20 20 20 20 20  20 20 20 77 72 69 74 65  |           write|
00000500: 6C 6E 3B 0D 20 20 20 20  20 20 20 20 20 20 20 20  |ln;.            |
00000510: 20 20 20 20 77 72 69 74  65 6C 6E 3B 0D 20 20 20  |    writeln;.   |
00000520: 20 20 20 20 20 20 20 20  20 20 20 20 20 77 72 69  |             wri|
00000530: 74 65 6C 6E 20 28 27 20  20 49 20 77 69 6C 6C 20  |teln ('  I will |
00000540: 73 65 74 20 75 70 20 74  68 72 65 65 20 70 69 6C  |set up three pil|
00000550: 65 73 20 6F 66 20 63 6F  69 6E 73 2E 27 29 3B 0D  |es of coins.');.|
00000560: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000570: 77 72 69 74 65 6C 6E 20  28 27 54 6F 20 6D 6F 76  |writeln ('To mov|
00000580: 65 2C 20 74 61 6B 65 20  61 6E 79 20 6E 75 6D 62  |e, take any numb|
00000590: 65 72 20 6F 66 20 63 6F  69 6E 73 20 61 77 61 79  |er of coins away|
000005A0: 27 29 3B 0D 20 20 20 20  20 20 20 20 20 20 20 20  |');.            |
000005B0: 20 20 20 20 77 72 69 74  65 6C 6E 20 28 27 66 72  |    writeln ('fr|
000005C0: 6F 6D 20 61 6E 79 20 70  69 6C 65 2E 20 20 54 68  |om any pile.  Th|
000005D0: 65 20 70 6C 61 79 65 72  20 77 68 6F 20 63 6C 65  |e player who cle|
000005E0: 61 72 73 20 74 68 65 27  29 3B 0D 20 20 20 20 20  |ars the');.     |
000005F0: 20 20 20 20 20 20 20 20  20 20 20 77 72 69 74 65  |           write|
00000600: 6C 6E 20 28 27 73 63 72  65 65 6E 20 77 69 6E 73  |ln ('screen wins|
00000610: 2E 20 27 29 3B 0D 20 20  20 20 20 20 20 20 20 20  |. ');.          |
00000620: 20 20 20 20 20 20 77 72  69 74 65 6C 6E 3B 0D 20  |      writeln;. |
00000630: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 77  |               w|
00000640: 72 69 74 65 20 28 27 20  20 4E 6F 77 20 68 69 74  |rite ('  Now hit|
00000650: 20 61 6E 79 20 6B 65 79  20 74 6F 20 73 74 61 72  | any key to star|
00000660: 74 20 3A 20 27 29 3B 0D  20 20 20 20 20 20 20 20  |t : ');.        |
00000670: 20 20 20 20 20 20 20 20  77 68 69 6C 65 20 67 65  |        while ge|
00000680: 74 6B 65 79 20 3D 20 63  68 72 20 28 30 29 20 64  |tkey = chr (0) d|
00000690: 6F 3B 0D 20 20 20 20 20  20 20 20 65 6E 64 3B 20  |o;.        end; |
000006A0: 28 2A 20 73 69 67 6E 6F  6E 20 2A 29 0D 70 72 6F  |(* signon *).pro|
000006B0: 63 65 64 75 72 65 20 68  69 73 6D 6F 76 65 3B 20  |cedure hismove; |
000006C0: 0D 20 20 20 20 20 20 20  20 76 61 72 20 20 20 20  |.        var    |
000006D0: 20 6F 6B 20 3A 20 62 6F  6F 6C 65 61 6E 3B 0D 20  | ok : boolean;. |
000006E0: 20 20 20 20 20 20 20 62  65 67 69 6E 0D 20 20 20  |       begin.   |
000006F0: 20 20 20 20 20 20 20 20  20 20 20 20 20 77 72 69  |             wri|
00000700: 74 65 6C 6E 20 28 27 4E  6F 77 20 65 6E 74 65 72  |teln ('Now enter|
00000710: 20 79 6F 75 72 20 6D 6F  76 65 20 3A 27 29 3B 0D  | your move :');.|
00000720: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000730: 77 69 74 68 20 6D 6F 76  65 20 64 6F 20 72 65 70  |with move do rep|
00000740: 65 61 74 0D 20 20 20 20  20 20 20 20 20 20 20 20  |eat.            |
00000750: 20 20 20 20 20 20 20 20  20 20 20 20 77 72 69 74  |            writ|
00000760: 65 6C 6E 3B 0D 20 20 20  20 20 20 20 20 20 20 20  |eln;.           |
00000770: 20 20 20 20 20 20 20 20  20 20 20 20 20 77 72 69  |             wri|
00000780: 74 65 20 28 27 50 69 6C  65 20 28 31 20 74 6F 20  |te ('Pile (1 to |
00000790: 33 29 20 3F 20 27 29 3B  0D 20 20 20 20 20 20 20  |3) ? ');.       |
000007A0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000007B0: 20 72 65 61 64 20 28 70  69 6C 65 6E 6F 29 3B 0D  | read (pileno);.|
000007C0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000007D0: 20 20 20 20 20 20 20 20  6F 6B 20 3A 3D 20 70 69  |        ok := pi|
000007E0: 6C 65 6E 6F 20 69 6E 20  5B 31 2E 2E 33 5D 3B 0D  |leno in [1..3];.|
000007F0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000800: 20 20 20 20 20 20 20 20  69 66 20 6F 6B 20 74 68  |        if ok th|
00000810: 65 6E 0D 20 20 20 20 20  20 20 20 20 20 20 20 20  |en.             |
00000820: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 62  |               b|
00000830: 65 67 69 6E 0D 20 20 20  20 20 20 20 20 20 20 20  |egin.           |
00000840: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000850: 20 20 20 20 20 77 72 69  74 65 20 28 27 4E 75 6D  |     write ('Num|
00000860: 62 65 72 20 74 6F 20 74  61 6B 65 20 61 77 61 79  |ber to take away|
00000870: 20 3F 20 27 29 3B 0D 20  20 20 20 20 20 20 20 20  | ? ');.         |
00000880: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000890: 20 20 20 20 20 20 20 72  65 61 64 20 28 6E 74 61  |       read (nta|
000008A0: 6B 65 6E 29 3B 0D 20 20  20 20 20 20 20 20 20 20  |ken);.          |
000008B0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000008C0: 20 20 20 20 20 20 6F 6B  20 3A 3D 20 6E 74 61 6B  |      ok := ntak|
000008D0: 65 6E 20 69 6E 20 5B 31  2E 2E 70 69 6C 65 20 5B  |en in [1..pile [|
000008E0: 70 69 6C 65 6E 6F 5D 5D  3B 0D 20 20 20 20 20 20  |pileno]];.      |
000008F0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000900: 20 20 20 20 20 20 65 6E  64 3B 0D 20 20 20 20 20  |      end;.     |
00000910: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000920: 20 20 20 69 66 20 6E 6F  74 20 6F 6B 20 74 68 65  |   if not ok the|
00000930: 6E 20 77 72 69 74 65 6C  6E 20 28 27 57 68 61 74  |n writeln ('What|
00000940: 20 3F 3F 27 29 3B 0D 20  20 20 20 20 20 20 20 20  | ??');.         |
00000950: 20 20 20 20 20 20 20 75  6E 74 69 6C 20 6F 6B 3B  |       until ok;|
00000960: 0D 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00000970: 20 77 69 74 68 20 6D 6F  76 65 20 64 6F 20 70 69  | with move do pi|
00000980: 6C 65 20 5B 70 69 6C 65  6E 6F 5D 20 3A 3D 20 70  |le [pileno] := p|
00000990: 69 6C 65 20 5B 70 69 6C  65 6E 6F 5D 2D 6E 74 61  |ile [pileno]-nta|
000009A0: 6B 65 6E 3B 0D 20 20 20  20 20 20 20 20 65 6E 64  |ken;.        end|
000009B0: 3B 20 20 28 2A 20 6F 66  20 68 69 73 6D 6F 76 65  |;  (* of hismove|
000009C0: 20 2A 29 0D 70 72 6F 63  65 64 75 72 65 20 6D 79  | *).procedure my|
000009D0: 6D 6F 76 65 3B 0D 76 61  72 20 20 20 20 20 62 69  |move;.var     bi|
000009E0: 74 20 3A 20 61 72 72 61  79 20 5B 31 2E 2E 33 2C  |t : array [1..3,|
000009F0: 20 31 2E 2E 34 5D 20 6F  66 20 62 6F 6F 6C 65 61  | 1..4] of boolea|
00000A00: 6E 3B 0D 20 20 20 20 20  20 20 20 70 61 72 69 74  |n;.        parit|
00000A10: 79 20 3A 20 61 72 72 61  79 20 5B 31 2E 2E 34 5D  |y : array [1..4]|
00000A20: 20 6F 66 20 62 6F 6F 6C  65 61 6E 3B 0D 20 20 20  | of boolean;.   |
00000A30: 20 20 20 20 20 66 69 72  73 74 62 69 74 2C 20 78  |     firstbit, x|
00000A40: 2C 20 69 2C 20 6A 20 3A  20 69 6E 74 65 67 65 72  |, i, j : integer|
00000A50: 3B 0D 20 20 20 20 20 20  20 20 62 65 67 69 6E 0D  |;.        begin.|
00000A60: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000A70: 66 6F 72 20 69 20 3A 3D  20 31 20 74 6F 20 33 20  |for i := 1 to 3 |
00000A80: 64 6F 0D 20 20 20 20 20  20 20 20 20 20 20 20 20  |do.             |
00000A90: 20 20 20 20 20 20 20 62  65 67 69 6E 0D 20 20 20  |       begin.   |
00000AA0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000AB0: 20 20 20 20 20 78 20 3A  3D 20 70 69 6C 65 20 5B  |     x := pile [|
00000AC0: 69 5D 3B 0D 20 20 20 20  20 20 20 20 20 20 20 20  |i];.            |
00000AD0: 20 20 20 20 20 20 20 20  20 20 20 20 66 6F 72 20  |            for |
00000AE0: 6A 20 3A 3D 20 34 20 64  6F 77 6E 74 6F 20 31 20  |j := 4 downto 1 |
00000AF0: 64 6F 20 0D 20 20 20 20  20 20 20 20 20 20 20 20  |do .            |
00000B00: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000B10: 20 20 20 20 62 65 67 69  6E 0D 20 20 20 20 20 20  |    begin.      |
00000B20: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000B30: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000B40: 20 20 62 69 74 20 5B 69  2C 6A 5D 20 3A 3D 20 6F  |  bit [i,j] := o|
00000B50: 64 64 20 28 78 29 3B 0D  20 20 20 20 20 20 20 20  |dd (x);.        |
00000B60: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000B70: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000B80: 78 20 3A 3D 20 78 20 64  69 76 20 32 3B 0D 20 20  |x := x div 2;.  |
00000B90: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000BA0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 65 6E  |              en|
00000BB0: 64 3B 0D 20 20 20 20 20  20 20 20 20 20 20 20 20  |d;.             |
00000BC0: 20 20 20 20 20 20 20 65  6E 64 3B 0D 20 20 20 20  |       end;.    |
00000BD0: 20 20 20 20 20 20 20 20  20 20 20 20 66 6F 72 20  |            for |
00000BE0: 69 20 3A 3D 20 31 20 74  6F 20 34 20 64 6F 20 70  |i := 1 to 4 do p|
00000BF0: 61 72 69 74 79 20 5B 69  5D 20 3A 3D 20 0D 20 20  |arity [i] := .  |
00000C00: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000C10: 20 20 20 20 20 20 62 69  74 20 5B 31 2C 69 5D 20  |      bit [1,i] |
00000C20: 3C 3E 20 28 62 69 74 20  5B 32 2C 69 5D 20 3C 3E  |<> (bit [2,i] <>|
00000C30: 20 62 69 74 20 5B 33 2C  69 5D 29 3B 0D 20 20 20  | bit [3,i]);.   |
00000C40: 20 20 20 20 20 20 20 20  20 20 20 20 20 6D 6F 76  |             mov|
00000C50: 65 2E 70 69 6C 65 6E 6F  20 3A 3D 20 31 3B 0D 20  |e.pileno := 1;. |
00000C60: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 6D  |               m|
00000C70: 6F 76 65 2E 6E 74 61 6B  65 6E 20 3A 3D 20 30 3B  |ove.ntaken := 0;|
00000C80: 0D 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00000C90: 20 77 69 74 68 20 6D 6F  76 65 20 64 6F 0D 20 20  | with move do.  |
00000CA0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000CB0: 20 20 20 20 20 20 69 66  20 6E 6F 74 20 28 70 61  |      if not (pa|
00000CC0: 72 69 74 79 20 5B 31 5D  20 6F 72 20 70 61 72 69  |rity [1] or pari|
00000CD0: 74 79 5B 32 5D 20 6F 72  20 70 61 72 69 74 79 20  |ty[2] or parity |
00000CE0: 5B 33 5D 20 6F 72 0D 20  20 20 20 20 20 20 20 20  |[3] or.         |
00000CF0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000D00: 20 70 61 72 69 74 79 20  5B 34 5D 29 20 74 68 65  | parity [4]) the|
00000D10: 6E 0D 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |n.              |
00000D20: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000D30: 20 20 62 65 67 69 6E 0D  20 20 20 20 20 20 20 20  |  begin.        |
00000D40: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000D50: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000D60: 77 68 69 6C 65 20 70 69  6C 65 20 5B 70 69 6C 65  |while pile [pile|
00000D70: 6E 6F 5D 20 3D 20 30 20  64 6F 20 70 69 6C 65 6E  |no] = 0 do pilen|
00000D80: 6F 20 3A 3D 0D 20 20 20  20 20 20 20 20 20 20 20  |o :=.           |
00000D90: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000DA0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000DB0: 20 20 20 20 20 20 20 20  20 20 20 20 20 70 69 6C  |             pil|
00000DC0: 65 6E 6F 2B 31 3B 0D 20  20 20 20 20 20 20 20 20  |eno+1;.         |
00000DD0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000DE0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 69  |               i|
00000DF0: 66 20 70 69 6C 65 20 5B  70 69 6C 65 6E 6F 5D 20  |f pile [pileno] |
00000E00: 3D 20 31 20 74 68 65 6E  20 20 6E 74 61 6B 65 6E  |= 1 then  ntaken|
00000E10: 20 3A 3D 31 0D 20 20 20  20 20 20 20 20 20 20 20  | :=1.           |
00000E20: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000E30: 20 20 20 20 20 20 20 20  20 20 20 20 20 65 6C 73  |             els|
00000E40: 65 20 6E 74 61 6B 65 6E  20 3A 3D 20 72 61 6E 64  |e ntaken := rand|
00000E50: 6F 6D 20 6D 6F 64 20 28  70 69 6C 65 0D 20 20 20  |om mod (pile.   |
00000E60: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000E70: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000E80: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000E90: 20 20 20 20 20 20 20 20  20 20 20 20 20 5B 70 69  |             [pi|
00000EA0: 6C 65 6E 6F 5D 2D 31 29  2B 31 3B 0D 20 20 20 20  |leno]-1)+1;.    |
00000EB0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000EC0: 20 20 20 20 20 20 20 20  20 20 20 20 65 6E 64 0D  |            end.|
00000ED0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000EE0: 20 20 20 20 20 20 20 20  65 6C 73 65 20 62 65 67  |        else beg|
00000EF0: 69 6E 0D 20 20 20 20 20  20 20 20 20 20 20 20 20  |in.             |
00000F00: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000F10: 20 20 20 66 69 72 73 74  62 69 74 20 3A 3D 20 31  |   firstbit := 1|
00000F20: 3B 0D 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |;.              |
00000F30: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000F40: 20 20 77 68 69 6C 65 20  6E 6F 74 20 70 61 72 69  |  while not pari|
00000F50: 74 79 20 5B 66 69 72 73  74 62 69 74 5D 20 64 6F  |ty [firstbit] do|
00000F60: 20 0D 20 20 20 20 20 20  20 20 20 20 20 20 20 20  | .              |
00000F70: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000F80: 20 20 20 20 20 20 20 20  20 20 66 69 72 73 74 62  |          firstb|
00000F90: 69 74 20 3A 3D 20 66 69  72 73 74 62 69 74 20 2B  |it := firstbit +|
00000FA0: 20 31 3B 0D 20 20 20 20  20 20 20 20 20 20 20 20  | 1;.            |
00000FB0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000FC0: 20 20 20 20 77 68 69 6C  65 20 6E 6F 74 20 62 69  |    while not bi|
00000FD0: 74 20 5B 70 69 6C 65 6E  6F 20 2C 20 66 69 72 73  |t [pileno , firs|
00000FE0: 74 62 69 74 5D 20 64 6F  0D 20 20 20 20 20 20 20  |tbit] do.       |
00000FF0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001000: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001010: 20 70 69 6C 65 6E 6F 20  3A 3D 20 70 69 6C 65 6E  | pileno := pilen|
00001020: 6F 20 2B 20 31 3B 0D 20  20 20 20 20 20 20 20 20  |o + 1;.         |
00001030: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001040: 20 20 20 20 20 20 20 66  6F 72 20 69 20 3A 3D 20  |       for i := |
00001050: 66 69 72 73 74 62 69 74  20 74 6F 20 34 20 64 6F  |firstbit to 4 do|
00001060: 0D 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00001070: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001080: 20 20 20 20 20 62 65 67  69 6E 0D 20 20 20 20 20  |     begin.     |
00001090: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000010A0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000010B0: 20 20 20 78 20 3A 3D 20  31 3B 0D 20 20 20 20 20  |   x := 1;.     |
000010C0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000010D0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000010E0: 20 20 20 66 6F 72 20 6A  20 3A 3D 20 33 20 64 6F  |   for j := 3 do|
000010F0: 77 6E 74 6F 20 69 20 64  6F 20 78 20 3A 3D 20 78  |wnto i do x := x|
00001100: 2A 32 3B 0D 20 20 20 20  20 20 20 20 20 20 20 20  |*2;.            |
00001110: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001120: 20 20 20 20 20 20 20 20  20 20 20 20 69 66 20 70  |            if p|
00001130: 61 72 69 74 79 20 5B 69  5D 20 74 68 65 6E 0D 20  |arity [i] then. |
00001140: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001150: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001160: 20 20 20 20 20 20 20 69  66 20 62 69 74 20 5B 70  |       if bit [p|
00001170: 69 6C 65 6E 6F 2C 20 69  5D 20 74 68 65 6E 20 6E  |ileno, i] then n|
00001180: 74 61 6B 65 6E 20 3A 3D  0D 20 20 20 20 20 20 20  |taken :=.       |
00001190: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000011A0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000011B0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000011C0: 20 6E 74 61 6B 65 6E 20  2B 20 78 0D 20 20 20 20  | ntaken + x.    |
000011D0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000011E0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000011F0: 20 20 20 20 65 6C 73 65  20 6E 74 61 6B 65 6E 20  |    else ntaken |
00001200: 3A 3D 20 6E 74 61 6B 65  6E 20 2D 20 78 3B 0D 20  |:= ntaken - x;. |
00001210: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001220: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001230: 20 20 20 65 6E 64 3B 0D  20 20 20 20 20 20 20 20  |   end;.        |
00001240: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001250: 65 6E 64 3B 0D 20 20 20  20 20 20 20 20 20 20 20  |end;.           |
00001260: 20 20 20 20 20 77 69 74  68 20 6D 6F 76 65 20 64  |     with move d|
00001270: 6F 20 70 69 6C 65 20 5B  70 69 6C 65 6E 6F 5D 20  |o pile [pileno] |
00001280: 3A 3D 20 70 69 6C 65 20  5B 70 69 6C 65 6E 6F 5D  |:= pile [pileno]|
00001290: 20 2D 20 6E 74 61 6B 65  6E 3B 0D 20 20 20 20 20  | - ntaken;.     |
000012A0: 20 20 20 65 6E 64 3B 20  28 2A 20 6F 66 20 6D 79  |   end; (* of my|
000012B0: 6D 6F 76 65 20 2A 29 0D  62 65 67 69 6E 0D 20 20  |move *).begin.  |
000012C0: 20 20 20 20 20 20 73 69  67 6E 6F 6E 3B 0D 20 20  |      signon;.  |
000012D0: 20 20 20 20 20 20 72 65  70 65 61 74 0D 20 20 20  |      repeat.   |
000012E0: 20 20 20 20 20 20 20 20  20 20 20 20 20 66 6F 72  |             for|
000012F0: 20 69 20 3A 3D 20 31 20  74 6F 20 33 20 64 6F 20  | i := 1 to 3 do |
00001300: 70 69 6C 65 20 5B 69 5D  20 3A 3D 20 72 61 6E 64  |pile [i] := rand|
00001310: 6F 6D 20 6D 6F 64 20 31  30 20 2B 20 36 3B 0D 20  |om mod 10 + 6;. |
00001320: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 64  |               d|
00001330: 69 73 70 6C 61 79 3B 0D  20 20 20 20 20 20 20 20  |isplay;.        |
00001340: 20 20 20 20 20 20 20 20  72 65 70 65 61 74 0D 20  |        repeat. |
00001350: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001360: 20 20 20 20 20 20 20 68  69 73 6D 6F 76 65 3B 0D  |       hismove;.|
00001370: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001380: 20 20 20 20 20 20 20 20  69 66 20 67 61 6D 65 6F  |        if gameo|
00001390: 76 65 72 20 74 68 65 6E  20 77 72 69 74 65 6C 6E  |ver then writeln|
000013A0: 20 28 27 43 6F 6E 67 72  61 74 75 6C 61 74 69 6F  | ('Congratulatio|
000013B0: 6E 73 2E 2E 2E 27 2C 0D  20 20 20 20 20 20 20 20  |ns...',.        |
000013C0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000013D0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000013E0: 20 20 20 20 20 20 20 20  27 20 79 6F 75 20 77 69  |        ' you wi|
000013F0: 6E 20 21 27 29 0D 20 20  20 20 20 20 20 20 20 20  |n !').          |
00001400: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 65 6C  |              el|
00001410: 73 65 20 62 65 67 69 6E  0D 20 20 20 20 20 20 20  |se begin.       |
00001420: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001430: 20 20 20 20 20 20 20 20  20 64 69 73 70 6C 61 79  |         display|
00001440: 3B 0D 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |;.              |
00001450: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001460: 20 20 6D 79 6D 6F 76 65  3B 0D 20 20 20 20 20 20  |  mymove;.      |
00001470: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001480: 20 20 20 20 20 20 20 20  20 20 66 6F 72 20 69 20  |          for i |
00001490: 3A 3D 20 31 20 74 6F 20  64 65 6C 61 79 20 64 6F  |:= 1 to delay do|
000014A0: 20 3B 0D 20 20 20 20 20  20 20 20 20 20 20 20 20  | ;.             |
000014B0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000014C0: 20 20 20 64 69 73 70 6C  61 79 3B 0D 20 20 20 20  |   display;.    |
000014D0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000014E0: 20 20 20 20 20 20 20 20  20 20 20 20 77 72 69 74  |            writ|
000014F0: 65 6C 6E 20 28 27 4D 79  20 6D 6F 76 65 20 77 61  |eln ('My move wa|
00001500: 73 27 2C 20 6D 6F 76 65  2E 6E 74 61 6B 65 6E 20  |s', move.ntaken |
00001510: 3A 20 33 2C 0D 20 20 20  20 20 20 20 20 20 20 20  |: 3,.           |
00001520: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001530: 20 20 20 20 20 20 20 20  20 20 20 20 20 27 20 66  |             ' f|
00001540: 72 6F 6D 20 70 69 6C 65  27 2C 20 6D 6F 76 65 2E  |rom pile', move.|
00001550: 70 69 6C 65 6E 6F 3A 32  29 3B 0D 20 20 20 20 20  |pileno:2);.     |
00001560: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001570: 20 20 20 20 20 20 20 20  20 20 20 69 66 20 67 61  |           if ga|
00001580: 6D 65 6F 76 65 72 20 74  68 65 6E 20 77 72 69 74  |meover then writ|
00001590: 65 6C 6E 20 28 27 2A 2A  2A 20 49 20 77 69 6E 2E  |eln ('*** I win.|
000015A0: 27 29 3B 0D 20 20 20 20  20 20 20 20 20 20 20 20  |');.            |
000015B0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000015C0: 20 20 20 20 77 72 69 74  65 6C 6E 3B 0D 20 20 20  |    writeln;.   |
000015D0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000015E0: 20 20 20 20 20 20 20 20  20 20 20 20 20 77 72 69  |             wri|
000015F0: 74 65 6C 6E 3B 0D 20 20  20 20 20 20 20 20 20 20  |teln;.          |
00001600: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001610: 20 20 65 6E 64 3B 0D 20  20 20 20 20 20 20 20 20  |  end;.         |
00001620: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 75  |               u|
00001630: 6E 74 69 6C 20 67 61 6D  65 6F 76 65 72 3B 0D 20  |ntil gameover;. |
00001640: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 77  |               w|
00001650: 72 69 74 65 20 28 27 41  6E 6F 74 68 65 72 20 67  |rite ('Another g|
00001660: 61 6D 65 20 3F 20 27 29  3B 0D 20 20 20 20 20 20  |ame ? ');.      |
00001670: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001680: 20 20 77 68 69 6C 65 20  69 6E 70 75 74 5E 20 3D  |  while input^ =|
00001690: 20 27 20 27 20 64 6F 20  67 65 74 20 28 69 6E 70  | ' ' do get (inp|
000016A0: 75 74 29 3B 0D 20 20 20  20 20 20 20 20 20 20 20  |ut);.           |
000016B0: 20 20 20 20 20 72 65 61  64 20 28 6B 65 79 29 3B  |     read (key);|
000016C0: 0D 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
000016D0: 20 77 68 69 6C 65 20 6E  6F 74 20 65 6F 6C 6E 20  | while not eoln |
000016E0: 64 6F 20 67 65 74 20 28  69 6E 70 75 74 29 3B 0D  |do get (input);.|
000016F0: 20 20 20 20 20 20 20 20  75 6E 74 69 6C 20 6B 65  |        until ke|
00001700: 79 20 3D 20 27 6E 27 3B  0D 70 61 67 65 3B 0D 65  |y = 'n';.page;.e|
00001710: 6E 64 2E 0D                                       |nd..            |
 PROGRAM NIM (INPUT, OUTPUT);.CONST   NR
OWS = 25;.        DELAY = 1000;.        
COIN = 168;.VAR     PILE : ARRAY [1..3] 
OF 0..NROWS;.        MOVE  : RECORD.    
            NTAKEN, PILENO : INTEGER;.  
      END;.        I : INTEGER;.        
KEY : CHAR;.FUNCTION GAMEOVER : BOOLEAN;
.BEGIN GAMEOVER := (PILE [1] + PILE [2] 
+ PILE [3] = 0) END;.FUNCTION ASC (N : I
NTEGER) : CHAR;.BEGIN ASC := CHR (N+ORD 
('0')) END;.PROCEDURE DISPLAY;.        V
AR     P, ROW, COL, FIRSTCOL : INTEGER;.
        BEGIN.                PAGE;.    
            FOR P := 1 TO 3 DO.         
           BEGIN.                       
 FIRSTCOL := P*10;.                     
   FOR ROW := 0 TO NROWS-1 DO .         
                       IF PILE [P] >= NR
OWS-ROW THEN .                          
          FOR COL := FIRSTCOL+3 TO FIRST
COL+5 DO.                               
         VDU (ROW, COL , CHR (COIN));.  
                              IF PILE [P
] >= 10 THEN .                          
      VDU (NROWS-1, FIRSTCOL, ASC (PILE[
P] DIV 10));.                           
     VDU (NROWS-1, FIRSTCOL+1,ASC(PILE[P
] MOD 10));.                    END;.   
     END; (* DISPLAY *).PROCEDURE SIGNON
;.        BEGIN.                PAGE;.  
              WRITELN ('                
  ***  NIM  ***');.                WRITE
LN;.                WRITELN;.           
     WRITELN ('  I WILL SET UP THREE PIL
ES OF COINS.');.                WRITELN 
('TO MOVE, TAKE ANY NUMBER OF COINS AWAY
');.                WRITELN ('FROM ANY P
ILE.  THE PLAYER WHO CLEARS THE');.     
           WRITELN ('SCREEN WINS. ');.  
              WRITELN;.                W
RITE ('  NOW HIT ANY KEY TO START : ');.
                WHILE GETKEY = CHR (0) D
O;.        END; (* SIGNON *).PROCEDURE H
ISMOVE; .        VAR     OK : BOOLEAN;. 
       BEGIN.                WRITELN ('N
OW ENTER YOUR MOVE :');.                
WITH MOVE DO REPEAT.                    
    WRITELN;.                        WRI
TE ('PILE (1 TO 3) ? ');.               
         READ (PILENO);.                
        OK := PILENO IN [1..3];.        
                IF OK THEN.             
               BEGIN.                   
             WRITE ('NUMBER TO TAKE AWAY
 ? ');.                                R
EAD (NTAKEN);.                          
      OK := NTAKEN IN [1..PILE [PILENO]]
;.                            END;.     
                   IF NOT OK THEN WRITEL
N ('WHAT ??');.                UNTIL OK;
.                WITH MOVE DO PILE [PILE
NO] := PILE [PILENO]-NTAKEN;.        END
;  (* OF HISMOVE *).PROCEDURE MYMOVE;.VA
R     BIT : ARRAY [1..3, 1..4] OF BOOLEA
N;.        PARITY : ARRAY [1..4] OF BOOL
EAN;.        FIRSTBIT, X, I, J : INTEGER
;.        BEGIN.                FOR I :=
 1 TO 3 DO.                    BEGIN.   
                     X := PILE [I];.    
                    FOR J := 4 DOWNTO 1 
DO .                                BEGI
N.                                      
  BIT [I,J] := ODD (X);.                
                        X := X DIV 2;.  
                              END;.     
               END;.                FOR 
I := 1 TO 4 DO PARITY [I] := .          
              BIT [1,I] <> (BIT [2,I] <>
 BIT [3,I]);.                MOVE.PILENO
 := 1;.                MOVE.NTAKEN := 0;
.                WITH MOVE DO.          
              IF NOT (PARITY [1] OR PARI
TY[2] OR PARITY [3] OR.                 
         PARITY [4]) THEN.              
                  BEGIN.                
                        WHILE PILE [PILE
NO] = 0 DO PILENO :=.                   
                                     PIL
ENO+1;.                                 
       IF PILE [PILENO] = 1 THEN  NTAKEN
 :=1.                                   
     ELSE NTAKEN := RANDOM MOD (PILE.   
                                        
                     [PILENO]-1)+1;.    
                            END.        
                ELSE BEGIN.             
                   FIRSTBIT := 1;.      
                          WHILE NOT PARI
TY [FIRSTBIT] DO .                      
                  FIRSTBIT := FIRSTBIT +
 1;.                                WHIL
E NOT BIT [PILENO , FIRSTBIT] DO.       
                                 PILENO 
:= PILENO + 1;.                         
       FOR I := FIRSTBIT TO 4 DO.       
                             BEGIN.     
                                   X := 
1;.                                     
   FOR J := 3 DOWNTO I DO X := X*2;.    
                                    IF P
ARITY [I] THEN.                         
               IF BIT [PILENO, I] THEN N
TAKEN :=.                               
                         NTAKEN + X.    
                                    ELSE
 NTAKEN := NTAKEN - X;.                 
                   END;.                
        END;.                WITH MOVE D
O PILE [PILENO] := PILE [PILENO] - NTAKE
N;.        END; (* OF MYMOVE *).BEGIN.  
      SIGNON;.        REPEAT.           
     FOR I := 1 TO 3 DO PILE [I] := RAND
OM MOD 10 + 6;.                DISPLAY;.
                REPEAT.                 
       HISMOVE;.                        
IF GAMEOVER THEN WRITELN ('CONGRATULATIO
NS...',.                                
                ' YOU WIN !').          
              ELSE BEGIN.               
                 DISPLAY;.              
                  MYMOVE;.              
                  FOR I := 1 TO DELAY DO
 ;.                                DISPL
AY;.                                WRIT
ELN ('MY MOVE WAS', MOVE.NTAKEN : 3,.   
                                     ' F
ROM PILE', MOVE.PILENO:2);.             
                   IF GAMEOVER THEN WRIT
ELN ('*** I WIN.');.                    
            WRITELN;.                   
             WRITELN;.                  
          END;.                        U
NTIL GAMEOVER;.                WRITE ('A
NOTHER GAME ? ');.                      
  WHILE INPUT^ = ' ' DO GET (INPUT);.   
             READ (KEY);.               
 WHILE NOT EOLN DO GET (INPUT);.        
UNTIL KEY = 'N';.PAGE;.END..
C64 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL