DataMuseum.dk

Presents historical artifacts from the history of:

RegneCentralen RC759 "Piccoline"

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RegneCentralen RC759 "Piccoline"

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦517ccf233⟧ TextFile

    Length: 3072 (0xc00)
    Types: TextFile
    Names: »NIM«

Derivation

└─⟦eca9022c5⟧ Bits:30002661 Datalære sådan - løsningsdiskette
    └─ ⟦this⟧ »NIM« 

TextFile

0010 // Program, der kan lære spillet NIM.«nul»
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.«nul»
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 //-----------------------------------------------------«nul»
«eof»