|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 3072 (0xc00) Types: TextFile Names: »NIM«
└─⟦eca9022c5⟧ Bits:30002661 Datalære sådan - løsningsdiskette └─ ⟦this⟧ »NIM«
0010 // Program, der kan lære spillet NIM. 0020 //-------------------------------------------------- 0030 // 0040 CLEAR 0050 INPUT "Hvor mange tændstikker i bunken? ": n 0060 DIM forløb(n),erfaring(n,3),sidstetrækker$ OF 1,svar$ OF 1 0070 DIM layout$ OF 47 0080 erfaring(1,1):= -1; erfaring(1,2):= -1; erfaring(1,3):= -1 0090 erfaring(2,2):= -1; erfaring(2,3):= -1; erfaring(3,3):= -1 0100 // alle andre tabelværdier er automatisk nul ved dim. 0110 // 0120 REPEAT 0130 CLEAR 0140 bunke:= n 0150 // 0160 FOR i:= 1 TO n DO 0170 forløb(i):= 0 0180 NEXT i 0190 // 0200 REPEAT 0210 PRINT "bunken er på ",bunke," tændstikker" 0220 EXEC programtræk 0230 PRINT TAB(35),"bunken er på ",bunke," tændstikker" 0240 IF bunke>=1 THEN EXEC modspillertræk 0250 UNTIL bunke<1 0260 // 0270 IF sidstetrækker$="P" THEN 0280 PRINT "program tabte - du vandt!" 0290 ELSE 0300 PRINT "program vandt - du tabte!" 0310 ENDIF 0320 // 0330 EXEC erfaringsopsaml 0340 // 0350 INPUT "ønskes flere spil (J/N): ": svar$ 0360 // 0370 UNTIL svar$ IN "Nn" 0380 // 0390 CLEAR 0400 layout$:= " ### #### #### ####" //(RC-comal) 0410 // (i Metanic-comal skal layoutet ændres, så der er -tegn først) 0420 PRINT 0430 PRINT 0440 PRINT " bunkens størrelse træk=1 træk=2 træk=3 " 0450 PRINT " ---------------------------------------------" 0460 FOR i:= 1 TO n DO 0470 PRINT USING layout$: i,erfaring(i,1),erfaring(i,2),erfaring(i,3) 0480 NEXT i 0490 PRINT " ---------------------------------------------" 0500 // 0510 END //------------ slut hovedprogram ----------------------------- 0520 // 0530 PROC programtræk 0540 v1:= erfaring(bunke,1) 0550 v2:= erfaring(bunke,2) 0560 v3:= erfaring(bunke,3) 0570 t:= 1 0580 v:= v1 0590 IF v2>v THEN 0600 t:= 2; v:= v2 0610 ENDIF 0620 IF v3>v THEN 0630 t:= 3; v:= v3 0640 ENDIF 0650 // 0660 forløb(bunke):= t 0670 bunke:= bunke-t 0680 PRINT "program tager ",t," tændstikker" 0690 sidstetrækker$:= "P" 0700 ENDPROC programtræk 0710 // 0720 // 0730 PROC modspillertræk 0740 REPEAT 0750 PRINT TAB(35)," - ", 0760 INPUT "vælg dit træk (1,2 eller 3): ": t 0770 UNTIL t=1 OR t=2 OR t=3 0780 forløb(bunke):= -t 0790 bunke:= bunke-t 0800 sidstetrækker$:= "M" 0810 ENDPROC modspillertræk 0820 // 0830 // 0840 PROC erfaringsopsaml 0850 FOR b:= 1 TO n DO 0860 IF forløb(b)<>0 THEN 0870 t:= forløb(b) 0880 IF sidstetrækker$="M" AND t>0 THEN e:= 1 0890 IF sidstetrækker$="M" AND t<0 THEN e:= -1 0900 IF sidstetrækker$="P" AND t>0 THEN e:= -1 0910 IF sidstetrækker$="P" AND t<0 THEN e:= 1 0920 t:= ABS(t) 0930 erfaring(b,t):= erfaring(b,t)+e 0940 ENDIF 0950 NEXT b 0960 ENDPROC erfaringsopsaml 0970 // 0980 //----------------------------------------------------- «eof»