PROG : 16509
D-FILE: 18687
VARS : 19480
E-LINE: 19481
STKBOT: 19481
STKEND: 19481
9999 means line number
PRINT means treat as KEYWORD P
5 REM THE WOLF, THE GOAT AND
THE CABBAGE
6 REM COMPUTER PUZZLES: FOR
SPECTRUM AND ZX81
7 REM BY IAN STEWART AND
ROBIN JONES, (C) 1982
8 REM UPDATED BY STEVEN REID,
(C) 2024
10 LET B$=" ´ººº÷ "
20 LET BC=0
30 LET QUERY=500
40 LET CHECK=1000
50 LET BOAT=2000
60 LET BK=1
70 LET OUT=2500
80 LET IN=3000
82 LET ERROR=5000
85 LET EAT=4000
86 LET DONE=5030
87 LET KEY=5500
90 LET C$=" "
93 DIM D$(2,3)
95 LET D$(1)="WGC"
100 PRINT AT 15,0;" ³³³
³³³"
110 PRINT AT 16,0;" úúúúúúú
úúúúúúúúúúúúúúú "
120 PRINT AT 14,2;D$(1)
130 PRINT AT 15,5;B$
200 REM MOVE
210 GOSUB QUERY
220 GOSUB BOAT
230 GOTO 200
400 REM QUERY
505 IF BC=0 THEN GOTO 540
510 PRINT AT 2,0;"TAKE OUT OF B
OAT?"
520 GOSUB KEY
525 LET O$=K$
530 GOSUB OUT
535 IF D$(BK)=" " THEN GOTO 5
70
540 PRINT AT 2,0;"PUT INTO BOAT
? "
550 GOSUB KEY
555 LET I$=K$
560 GOSUB IN
570 RETURN
1000 REM CHECK
1010 IF D$(2)="WGC" THEN PRINT
AT 2,0;" WELL DONE "
1020 IF D$(2)="WGC" THEN GOTO DO
NE
1030 RETURN
2000 REM BOAT
2010 FOR T=5*(BK=1)+20*(BK<>1)
TO 20*(BK=1)+5*(BK<>1) STEP 1-2
*(BK<>1)
2020 PRINT AT 15,T;B$
2025 PRINT AT 14,T;C$
2030 NEXT T
2035 GOSUB EAT
2040 LET BK=3-BK
2050 RETURN
2500 REM OUT
2505 IF O$="" THEN RETURN
2510 FOR F=3 TO 5
2520 IF C$(F)=O$ THEN GOTO 2540
2530 NEXT F
2535 RETURN
2540 LET C$(F)=" "
2550 LET D$(BK,F-2)=O$
2560 PRINT AT 14,2*(BK=1)+27*(BK
<>1);D$(BK)
2570 PRINT AT 14,5*(BK=1)+20*(BK
<>1);C$
2580 LET BC=BC-1
2590 GOSUB CHECK
2600 RETURN
3000 REM IN
3005 IF I$="" THEN RETURN
3010 FOR F=1 TO 3
3020 IF D$(BK,F)=I$ THEN GOTO 30
40
3030 NEXT F
3035 RETURN
3040 LET D$(BK,F)=" "
3050 LET C$(F+2)=I$
3060 PRINT AT 14,2*(BK=1)+27*(BK
<>1);D$(BK)
3070 PRINT AT 14,5*(BK=1)+20*(BK
<>1);C$
3080 LET BC=BC+1
3085 IF BC=2 THEN GOTO ERROR
3090 GOSUB CHECK
4000 REM EAT
4010 LET X$=D$(BK)
4020 IF X$="WG " OR X$=" GC"
THEN GOTO 4040
4030 RETURN
4040 PRINT AT 2,0;" WOOPS..
.EATEN "
4050 GOTO DONE
5000 REM ERROR
5010 PRINT AT 2,0;"SORRY, TOO MA
NY IN BOAT. TRY"
5020 PRINT "AGAIN"
5030 PRINT AT 20,0;"PRESS A KEY
TO CONTINUE..."
5040 IF INKEY$="" THEN GOTO 5040
5050 CLS
5060 RUN
5500 REM KEY
5510 LET K$=INKEY$
5520 IF K$="" THEN GOTO 5510
5530 RETURN
6000 SAVE "WGC"
6010 RUN