-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathB05_Woordpuzzel.bc3
440 lines (439 loc) · 13.9 KB
/
B05_Woordpuzzel.bc3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
1000 A=500:GOTO20:REM WOORDPUZZEL
1010 GOSUB8010:REM **ENTREE**
1020 GOSUB5010:REM **WISSTRING**
1030 GOSUB5110:REM **OMLIJSTING**
1040 GOSUB2010:REM **MENU**
1050 GOSUB2210:REM **VOORBEELD**
1060 GOSUB2410:REM **PUZZEL INVOER**
1070 GOSUB4010:REM **OPLOSSEN**
1080 GOSUB7810:REM **MEER?**
1090 IFIN=74 THEN1060:REM J
1100 GOSUB100:VE=INT(SH/2)
1110 T$="Tot ziens dan maar.":GOSUB1510
1120 SD=50:GOSUB450:GOSUB100:GOTO950
1130 REM--
1500 REM **CENTREER TEKST**
1510 LE=LEN(T$):HO=INT((SB-LE)/2)
1511 IFHO<1 THENHO=1
1520 GOSUB110:PRINTT$
1530 VE=VE+1
1540 IFVE=SH-4 THENV=1:GOSUB1610
1550 RETURN
1560 REM--
1600 REM **DRUK TOETS**
1610 T$="Druk een toets"
1620 VE=SH-3:HO=INT((SB-14)/2)
1630 GOSUB110:PRINTT$
1640 GOSUB210:GOSUB1710
1650 RETURN
1660 REM--
1700 REM **WISSEN**
1710 FORVE=V TOSH-3:HO=1
1720 GOSUB110:PRINTSP$:NEXTVE
1730 RETURN
1740 REM--
1800 REM **'PRINT AT'**
1810 VE=SH-8:HO=2:GOSUB110:RETURN
1820 VE=SH-1:HO=0:GOSUB110:PRINTSP$:HO=0
1830 GOSUB110:RETURN:REM 'INPUT'
1840 REM **J/N**
1850 VE=SH-3:T$="Druk toets J of N"
1860 GOSUB1510:GOSUB210
1870 RETURN
1880 REM--
2000 REM **KIES FUNCTIE**
2010 V=1:GOSUB1710
2020 T$="Wilt U de Inleiding zien?/Introduction?"
2030 VE=10:GOSUB1510:GOSUB1850:GOSUB1710
2040 IFIN=74 THEN GOSUB8100:REM J
2050 RETURN
2060 REM--
2200 REM **VOORBEELD?**
2210 GOSUB1710:VE=10
2220 T$="Wilt U het Voorbeeld zien? (Example?)"
2230 GOSUB1510:GOSUB1850:GOSUB1710
2240 IFIN=74 THEN GOSUB3010:REM J
2250 RETURN
2260 REM--
2400 REM **PUZZEL INVOER**
2410 GOSUB1710:VE=10
2420 T$="Nu de puzzel invoeren."
2430 GOSUB1510:SD=30:GOSUB450
2440 V=1:GOSUB1710
2450 GOSUB6010:REM **GROOTTE**
2460 REM--
2600 GOSUB6210:REM **WOORDINVOER**
2610 GOSUB6410:REM **GROEPINVOER**
2620 GOSUB6710:REM **A() EN R()=0**
2630 RETURN
2640 REM--
3000 REM **VOORBEELD**
3010 DIMY$(9),G(9),H(9)
3020 RESTORE:FORI=0 TO9
3030 READY$(I):READG(I):READH(I):NEXTI
3040 FORI=0 TO9:VE=I+1
3050 HO=3:GOSUB110:PRINTY$(I)
3060 FORJ=1 TO10:HO=J+16:GOSUB110
3070 PRINT".":NEXTJ
3080 FORJ=G(I) TOG(I)+2:HO=J+16:GOSUB110
3090 PRINT"*":NEXTJ:NEXTI
3100 SD=70:GOSUB450
3110 VE=12:T$="Het probleem is dus de":GOSUB1510
3120 T$="volgorde van deze woorden zo te":GOSUB1510
3130 T$="veranderen dat op de sterren een":GOSUB1510
3140 T$="bekend gezegde verschijnt.":GOSUB1510
3150 SD=70:GOSUB450
3160 FORI=0 TO9:HO=3:VE=I+1:GOSUB110
3170 PRINTY$(H(I))
3180 HO=2+G(I):GOSUB110:PRINT"---"
3190 HO=16+G(I):GOSUB110
3200 PRINTMID$(Y$(H(I)),G(I),3)
3210 NEXTI
3220 VE=17:T$="De oplossing is dus:":GOSUB1510
3230 T$="LEDIGHEID IS DES":GOSUB1510
3240 T$="DUIVELS OORKUSSEN":GOSUB1510
3250 SD=70:GOSUB450
3260 RETURN
3270 REM--
4000 REM **OPLOSSEN**
4010 GOSUB6710:REM **R() EN A()=0**
4020 GOSUB6750:REM **PATROON**
4030 RC=0
4040 WC=0
4050 IFA(WC)=0 THEN4090
4060 IFWC=W THEN4190
4070 WC=WC+1
4080 GOTO4050
4090 VE=RC+2:HO=L+5+S(RC):GOSUB110
4100 PRINTMID$(W$(WC),S(RC),G)
4110 GOSUB1810:PRINT"Aannemen?":GOSUB1850
4120 IFIN=78 THEN4060:REM N
4130 IFIN=74 THEN4150:REM J
4140 GOTO4110
4150 A(WC)=1:R(RC)=WC+1:RC=RC+1
4160 IF(RC>W) THEN GOSUB7010:RETURN
4170 REM--
4180 GOTO4040
4190 VE=RC+2:HO=L+5+S(RC):GOSUB110
4200 PRINTD$
4210 IFRC=0 THEN4280
4220 A(R(RC-1)-1)=0:RC=RC-1:WC=R(RC)-1
4230 IFWC=W THEN4250
4240 GOTO4050
4250 VE=RC+2:HO=L+5+S(RC):GOSUB110
4260 PRINTD$
4270 GOTO4040
4280 GOSUB1810:PRINT"Al de groepen verworpen ?!"
4290 SD=40:GOSUB450:V=SH-8:GOSUB1710
4300 GOSUB1810:PRINT"WEER PROBEREN?":GOSUB1850
4310 IFIN=74 THEN4340:REM J
4320 IFIN=78 THEN1100:REM N
4330 GOTO4300
4340 GOSUB1710:GOSUB1810
4350 PRINT"Met dezelfde gegevens?":GOSUB1850
4360 IFIN=74 THEN GOSUB1710:GOTO4010:REM J
4370 IFIN=78 THEN2410:REM N
4380 GOTO4350
4390 REM--
5000 REM **WISSTRING**
5010 SP$="":FORI=0 TOSB-2
5020 SP$=SP$+" ":NEXTI
5030 RETURN
5040 REM--
5100 REM **OMLIJSTING**
5110 GOSUB100:FORI=0 TOSB:HO=I
5120 VE=0:GOSUB5200
5130 VE=SH-2:GOSUB5200
5140 NEXTI
5150 FORI=1 TOSH-3:VE=I
5160 HO=0:GOSUB5200
5170 HO=SB:GOSUB5200
5180 NEXTI
5190 RETURN
5200 GOSUB110:PRINT"?":RETURN
5210 REM--
6000 REM "PROBLEEM INVOER"
6010 V=2:GOSUB1710
6020 V=SH-8:GOSUB1710:GOSUB1810
6030 PRINT"Hoeveel woorden? (max 13)"
6040 GOSUB1820:INPUTWO:W=WO-1
6050 IFW>12 THEN6020
6060 GOSUB1710:GOSUB1810
6070 PRINT"Hoeveel letters/woord? (max 15) "
6080 GOSUB1820:INPUTLE:L=LE-1
6090 IFL>14 THEN6060
6100 GOSUB1710:GOSUB1810
6110 PRINT"Hoeveel letters/groep? "
6120 GOSUB1820:INPUTG:GOSUB1710
6130 DIMW$(W),S(W),A(W),R(W),B$(W)
6140 D$="":FORI=1 TOG:D$=D$+"*":NEXTI
6150 RETURN
6160 REM--
6200 REM **WOORDEN LADEN**
6210 FORWC=0 TOW:GOSUB1810
6220 PRINT"Toets in woord no ";WC+1
6230 GOSUB1820:INPUTX$
6240 IF(LEN(X$)=L+1) THEN6270
6250 GOSUB1710:GOSUB1810:PRINT"ONJUIST AANTAL LETTERS"
6260 SD=40:GOSUB450:GOSUB1710:GOSUB1810:GOTO6220
6270 GOSUB1710:GOSUB1810
6280 PRINTX$;" CORRECT? (J/N)"
6290 GOSUB1850
6300 IFIN=74 THEN6340:REM J
6310 IFIN=78 THEN6330:REM N
6320 GOTO6280
6330 GOSUB1710:GOSUB1810:GOTO6220
6340 W$(WC)=X$:GOSUB1710
6350 NEXTWC
6360 RETURN
6370 REM--
6400 REM **GROEPEN LADEN**
6410 FORWC=0 TOW
6420 GOSUB1710:GOSUB1810
6430 PRINT"Waar begint groep no. ";WC+1
6440 GOSUB1820:INPUTS(WC)
6450 IF(S(WC)<=(L-G+2)) THEN6490
6460 GOSUB1710:GOSUB1810
6470 PRINT"Niet hoger dan ";L-G+2;" !"
6480 SD=40:GOSUB450:GOTO6420
6490 GOSUB6910:REM **REGELS MAKEN**
6500 VE=WC+2:HO=L+6:GOSUB110:PRINTB$(WC)
6510 NEXTWC
6520 GOSUB1710:GOSUB1810
6530 PRINT"Is het patroon juist? (J/N)":GOSUB1850
6540 IFIN=74 THEN6580:REM J
6550 IFIN=78 THEN6570:REM N
6560 GOTO6520
6570 V=2:GOSUB1710:V=SH-8:GOTO6410
6580 V=2:GOSUB1710:GOSUB1810
6590 PRINT"Nu worden de groepen aangeboden"
6600 SD=40:GOSUB450:V=SH-8:GOSUB1710
6610 RETURN
6620 REM--
6700 REM **R() EN A()=0**
6710 FORI=0 TOW:A(I)=0:R(I)=0:NEXTI
6720 RETURN
6730 REM--
6740 REM **PATROON OP SCHERM**
6750 VE=2:HO=L+6
6760 FORI=0 TOW
6770 GOSUB110:PRINTB$(I):VE=VE+1
6780 NEXTI
6790 RETURN
6800 REM--
6900 REM **MAAK REGELS**
6910 K$="":FORI=1 TOS(WC)-1
6920 K$=K$+".":NEXTI
6930 FORI=S(WC) TOS(WC)+G-1:IFI=1 THENK$=""
6940 K$=K$+"*":NEXTI:IFI=L+2 THEN6970
6950 FORI=S(WC)+G TOL+1
6960 K$=K$+".":NEXTI
6970 B$(WC)=K$
6980 RETURN
6990 REM--
7000 REM **RESULTAAT**
7010 V=2:GOSUB1710:VE=SH-8
7020 T$="Dit was dus de oplossing?":GOSUB1510
7030 SD=40:GOSUB450:GOSUB1710:VE=SH-8
7040 T$="Nu nog netjes presenteren.":GOSUB1510
7050 T$="De letters komen stuk voor stuk.":GOSUB1510
7060 SD=60:GOSUB450:GOSUB1710
7070 T$="SPATIETOETS: Nieuw woord"
7080 VE=SH-8:GOSUB1510
7090 T$="ENTERTOETS: Nieuwe regel":GOSUB1510
7100 T$="ANDERE TOETSEN: Volgende letter":GOSUB1510
7110 SD=40:GOSUB450:VE=10:HO=2:GOSUB110
7120 FORI=0 TOW
7130 P$=MID$(W$(R(I)-1),S(I),G)
7140 FORJ=1 TOG
7150 PRINTMID$(P$,J,1):GOSUB210
7160 IFIN=13 THEN GOSUB7600
7170 IFIN=32 THEN GOSUB7630
7180 HO=HO+1
7190 GOSUB110
7200 NEXTJ
7210 NEXTI
7220 RETURN
7230 REM--
7600 HO=1
7610 VE=VE+2
7620 RETURN
7630 HO=HO+1
7640 RETURN
7650 REM--
7800 REM **MEER?**
7810 V=SH-8:GOSUB1710
7820 VE=V:T$="Tot zover deze puzzel":GOSUB1510
7830 HO=1:GOSUB110:PRINTSP$:VE=VE+1
7840 T$="Nog meer?":GOSUB1510:GOSUB1850
7850 V=2:GOSUB1710
7860 RETURN
7870 REM--
8000 REM **ENTREE**
8010 GOSUB100:SB=HO:SH=VE:T$=""
8020 VE=0:HO=0:GOSUB110
8030 PRINT"Welkom / Welcome!":E=0:PRINT
8040 PRINT"English speaking readers press 'E',":PRINT
8050 PRINT"Nederlandse lezers: druk op de 'N'"
8060 GOSUB210
8070 IFIN=69 THENE=1
8080 RETURN
8100 V=2:GOSUB1710
8110 VE=3:T$="WOORDRANGSCHIKKING":GOSUB1510
8120 VE=6:T$="Een hulpje":GOSUB1510
8130 VE=8:T$="voor":GOSUB1510
8140 VE=10:T$="puzzelaars.":GOSUB1510
8150 VE=12:T$="Geschreven in BASICODE-3":GOSUB1510
8160 VE=14:T$="op een":GOSUB1510
8170 VE=16:T$="SPECTRUM.":GOSUB1510
8180 V=6:GOSUB1610:IFE=1 THEN9000
8190 VE=5:T$="Dit programma helpt bij het":GOSUB1510
8200 T$="oplossen van puzzels waarin":GOSUB1510
8210 T$="spreekwoorden moeten worden":GOSUB1510
8220 T$="gevonden door groepen letters uit":GOSUB1510
8230 T$="gegeven woorden te lichten.":GOSUB1510
8240 V=5:GOSUB1610
8250 VE=5:T$="Het kan tot 13 even lange":GOSUB1510
8260 T$="woorden met ieder ten hoogste":GOSUB1510
8270 T$="15 letters hanteren. De te kiezen":GOSUB1510
8280 T$="groepen moeten onderling gelijke":GOSUB1510
8290 T$="lengte hebben en geheel binnen":GOSUB1510
8300 T$="de woordlengte vallen.":GOSUB1510
8310 GOSUB1610
8320 VE=5:T$="Er is een uitgewerkt":GOSUB1510
8330 T$="voorbeeld ter illustratie.":GOSUB1510
8340 VE=8:T$="REM-regels 30000 e.v.":GOSUB1510
8350 T$="geven namen van variabelen, zodat":GOSUB1510
8360 T$="de capaciteit van het programma":GOSUB1510
8370 T$="vergroot kan worden, maar dan kan":GOSUB1510
8380 T$="de scherm presentatie in het":GOSUB1510
8390 T$="gedrang komen.":GOSUB1510
8400 VE=15:T$="":GOSUB1510
8410 T$="":GOSUB1510:GOSUB1610
8420 VE=5:T$="Tenslotte staan er 2":GOSUB1510
8430 T$="opgaven, maar geen oplossing,":GOSUB1510
8440 T$="in regels 29000-29062, zodat":GOSUB1510
8450 T$="gebruikers kunnen oefenen.":GOSUB1510
8460 GOSUB1610
8470 VE=5:T$="Mocht iemand onverhoopt":GOSUB1510
8480 T$="nog ongerechtigheden vinden in de":GOSUB1510
8490 T$="logica van het programma, dan houdt":GOSUB1510
8500 T$="de auteur zich aanbevolen voor een":GOSUB1510
8510 T$="berichtje daarover.":GOSUB1510
8520 VE=VE+1
8530 T$="Adres in REM-regels 32000 e.v.":GOSUB1510
8540 VE=VE+1
8550 T$="Vergeet overigens niet dat soms":GOSUB1510
8560 T$="eenzelfde groep in meer dan":GOSUB1510
8570 T$="een woord voorkomt!":GOSUB1510:GOSUB1610
8580 V=3:GOSUB1710
8590 RETURN
8600 REM--
9000 VE=6:T$="Program 'WORDSORT' helps to solve":GOSUB1510
9010 T$="puzzles in which a hidden saying must":GOSUB1510
9020 T$="be found. A set of long words is given,":GOSUB1510
9030 T$="together with a pattern of crosses.":GOSUB1510
9040 T$="By arranging the words in the correct":GOSUB1510
9050 T$="order on the pattern, a wellknown":GOSUB1510
9060 T$="phrase/saying appears on the crosses.":GOSUB1510
9070 T$="The program shows an example (Dutch)":GOSUB1510
9080 T$="and also contains two problems, the":GOSUB1510
9090 T$="solutions to which are NOT given, ":GOSUB1510
9100 T$="one English, one Dutch. No prizes":GOSUB1510
9110 T$="are offered for the first correct":GOSUB1510
9120 T$="solution received!":GOSUB1610:VE=6
9130 T$="See REM lines 29000 & 29050 et seq.":GOSUB1510
9140 T$="The main logic of the solving":GOSUB1510
9150 T$="algorithm has been derived from a":GOSUB1510
9160 T$="flowsheet. A condensed version of it":GOSUB1510
9170 T$="is presented as a separate BASICODE 3":GOSUB1510
9180 T$="program called 'FLOWSHEET'.":GOSUB1510
9190 T$="":GOSUB1510
9200 T$="":GOSUB1510
9210 T$="":GOSUB1510
9220 VE=SH-4:GOSUB1610:VE=6
9230 T$="The remainder of the program is in":GOSUB1510
9240 T$="Dutch, on the assumption that":GOSUB1510
9250 T$="you've gained enough understanding":GOSUB1510
9260 T$="by listening to the BASICODE programs!"
9270 GOSUB1510:VE=SH-4:GOSUB1610:GOTO8580
25000 DATA"AALBESDIEF",3,1,"ALLEDAAGSE"
25010 DATA3,4,"METAALBOOR",2,8
25020 DATA"ROTSKUSTEN",6,7,"RUIGHARIGE"
25030 DATA5,0,"SENILITEIT",2,9
25040 DATA"TRAPGEVELS",8,6,"VERHUISDAG"
25050 DATA8,2,"WEIDEGROND",5,3
25060 DATA"ZUIVERAARS",1,5
26000 REM--
29000 REM ACHTERZIJDE,BELANGELOOS,BOERENGEZIN,DRIJFKRACHT
29002 REM ENDOSSEMENT,GEMEENSCHAP,GINNEGAPPEN
29004 REM SCHANDTEKEN,SCHEMERLAMP,TUSSENMUREN
29006 REM VOORUITZIEN,VOORWIELREM,WIJNACCIJNS
29008 REM GROEPEN BEGINNEN OP 5,7,3,2,2,5,7,1,7,3,4,8,9
29010 REM CONTROLE SOM GROEP BEGINPUNTEN IS 63
29012 REM (DRIE EN ZESTIG) en de groepen
29014 REM hebben allen drie letters.
29040 REM--
29050 REM FOR ENGLISH SPEAKING READERS
29052 REM ADDITIONAL,AIRHEATERS,DEPRESSING
29054 REM FUNGICIDES,ISOTHERMAL,PROFESSING
29056 REM PROFOUNDLY,PROMETHEUS,REPUTATION
29058 REM SIXTYFIFTH,SLINGSHOTS
29060 REM GROUPS START AT 4,1,3,8,2,2,3,7,6,5,3
29062 REM CHECKSUM GROUPSTARTS IS 44 (FORTY FOUR)
29064 REM The groups have three letters each.
29066 REM--
30000 REM **VARIABELEN**
30010 REM SH=SCHERMHOOGTE, SB=SCHERMBREEDTE
30020 REM SP$=WISSTRING,V=TOPREGEL VOOR WISROUTINE
30030 REM WO=AANTAL WOORDEN, W IS 1 MINDER
30040 REM LE=AANTAL LETTERS/WOORD, L IS 1 MINDER
30050 REM G=GROEPLENGTE, S()=BEGINPUNT VAN DE GROEP
30060 REM W$()=WOORDENBESTAND, B$()=PUNT/STER PATROON
30070 REM A()=0 (ON-) OF 1 (GEBRUIKT WOORD)
30080 REM R()=EERSTVOLGEND ONGEBRUIKT WOORD
30090 REM D$=STERGROEP
30100 REM RC=REGELTELLER, WC=WOORDTELLER
30110 REM--
30120 REM **SUBROUTINES**
30130 REM 1500 CENTREER/PRINT
30140 REM 1600 DRUK EEN TOETS
30150 REM 1700 WIS BINNEN DE OMLIJSTING
30160 REM 1800 'PRINT AT' ROUTINE
30170 REM 1840 J/N
30180 REM 2000 INLEIDING?
30190 REM 2200 VOORBEELD?
30200 REM 2400 PUZZEL IN
30210 REM 3000 VOORBEELD
30220 REM 4000 OPLOSSEN
30230 REM 5000 SCHERMMAAT/WIS STRING
30240 REM 5100 OMLIJSTING
30250 REM 6000 PROBLEEM GROOTTE
30260 REM 6200 WOORD INVOER
30270 REM 6400 GROEP INVOER
30280 REM 6700 A() EN R()=0
30290 REM 6900 PATROON REGELS MAKEN
30300 REM 7000 RESULTAAT PRESENTEREN
30310 REM 7800 EIND
30320 REM
30330 REM
30340 REM **********************
30350 REM * WOORDRANGSCHIKKING *
30360 REM * *
30370 REM * SPECTRUM BASIC '82 *
30390 REM * BASICODE-2 FEB '86 *
30410 REM * BASICODE-3 JUL '87 *
30420 REM * *
32000 REM * Copyright 1987: *
32010 REM * *
32020 REM * LOUIS PAYNE *
32030 REM * HIGH VIEW *
32040 REM * SHAWCROSS ROAD *
32050 REM * WEST RUNTON *
32060 REM * CROMER *
32070 REM * NORFOLK *
32080 REM * NR27 9NA *
32090 REM * *
32100 REM * GROOT BRITANNIE *
32110 REM **********************
32120 REM TROS-RADIO dd 871125