Számvarázs,avagy SUDOKU-játékprogram
Bevezető.
Kilencszer
kilenc,olyan mint egy számvarázs..az alapötlet rendkívül egyszerű:
Adott
egy kilencszer kilences négyzetrács, háromszor hármas kisebb négyzetekre
osztva, a feladat pedig az, hogy minden sorba és oszlopba, illetve a kisebb
négyzetekbe írjuk be egytől kilencig a számokat úgy, hogy minden sorban, minden
oszlopban és minden háromszor hármas kisebb négyzetben egy-egy számjegy csak
egyszer szerepeljen. (Az, hogy számokat használunk, teljesen érdektelen,
lehetnének betűk vagy kis ábrák is, a lényeg, hogy minden sorban, oszlopban és
kis négyzetben minden elemből csak egy lehet. Ennek ellenére a 'számos'
változat terjedt el leginkább.)
Néhány
számot természetesen előre beírnak a feladvány kitalálói, de a rejtvény
nehézsége elsősorban nem a megadott számok mennyiségétol függ: könnyen
megfejthető lehet egy olyan sudoku, amibe kevés szám van beírva előre, és
fordítva. Minden feladvány megfejthető következtetéssel, találgatás nélkül.
A
sheffieldi egyetem matematikusa, Frazer Jarvis és Bertram Felgenhauer egyébként
kikombinálta, pontosabban szoftverekkel, nyers erővel kiszámolta, hogy a
kilencszer kilences rácsban 6 670 903 752 021 072 936 960-féleképpen lehet a
szabályoknak megfelelően elhelyezni a számokat.
Egyedülálló - 1-9 - számok
A
sudoku egyszerűbb elődjét a 18. század végén alkotta meg Leonhard Euler svájci
matematikus, mai formáját először 1979-ben publikálták Number Place
(számelhelyezés) néven New Yorkban. Japánban 1984-ben adták ki először, de csak
1986-ban lett hirtelen népszerű. A mostani világméretű közkedveltség annak
köszönhető, hogy az új-zélandi Wayne Gould, aki korábban bíró volt Hongkongban,
1997-ben Japánban találkozott egy ilyen rejtvénnyel, és nekiállt kifejleszteni
egy szoftvert, amely képes gyorsan előállítani a rejtvényeket. Amikor kész
volt, jelentkezett a brit Times-nál, ahol tavaly november 12-én meg is jelent
az első sudoku, ami rövid időn belül sikertörténetté vált.
A
sudoku szó "egyedülálló számok"-at jelent japánul, a kifejezés egy
japán kiadó birtokában van, emiatt az ország többi kiadója inkább eredeti
nevén, nanpure-ként jelenteti meg a fejtörőket (ez a kifejezés
"számelhelyezést" jelent).
Magyarországon
azonban nem teljesen ismeretlen a sudoku, ugyanis a Fülesben már valamivel
több, mint tíz éve vannak ilyen rejtvények, a bájos „Bűvös négyzet” címmel.
A
Sudoku egy japán játék, amely napjainkban Japántól Ausztráliáig szerte a
világon százezrek kedvenc időtöltésévé vált. Több száz lap közöl naponta
Sudoku-rejtvényeket, köztük az olyan tekintélyesek is, mint a The Times vagy a
Die Zeit,Magyarországon a Metro.
De mi ez egyáltalán?
S hogyan kell játszani?
A
Sudoku ugyanis egy olyan egy 9x9-es négyzetrács, amelyben 9 darab 3x3-as,
egyenként 9 darab négyzetet tartalmazó kisebb négyzet van. Összesen tehát 81
darab négyzetből áll. A négyzetrácsban számok vannak megadva és a négyzetrács
üres négyzeteibe úgy kell beírnunk a hiányzó számokat, hogy a négyzetrács mind
a 9 sorában és mind a 9 oszlopában megtalálható legyen 1-től 9-ig minden egyes
szám. De mindezt úgy, hogy ezeknek a feltételeknek a teljesülése mellett még az
is igaz legyen, hogy valamennyi (9 darab) kis négyzetben (blokkban) is
szerepeljen az összes szám 1-től 9-ig. Ez a rejtvény-megoldás azonban csak
akkor érdemli ki a Sudoku elnevezést, ha a nagy négyzetrácsba az előre megadott
számok olyan módon vannak megadva, hogy a rejtvénynek csak egyetlenegy
megoldása van.
Ugye egész
egyszerűnek tűnik?
Megérteni
könnyű - megoldani már nehezebb. Szerencsére nem kell matematikusnak lennünk
ahhoz, hogy egy ilyen jellegű rejtvényt meg tudjunk fejteni: csak logikus és
rendszeres gondolkodásra van hozzá szükségünk. Ám ha úgy érezzük, ez nekünk
mégsem megy, akkor sem szabad feladnunk, hiszen a Sudoku épp ezeket - a
mindennapi életben és az életbenmaradáshoz oly fontos - képességeket segíthet
kifejleszteni. A Sudoku kiváló agytorna: játék a lehetőségekkel, kísérletezés,
stratégia.
S mitől függ egy-egy
Sudoku nehézsége?
A
rejtvények nehézségi szintje attól függ, hogy logikailag mennyire nehéz
meghatározni a további számokat. Talán meglepő, de annak, hogy kezdetben hány
szám adott a rejtvényben, alig van köze ahhoz, hogy a rejtvény valójában
mennyire nehéz. Vannak rejtvények, amelyekben csak kevés számjegy adott, ezek
lehetnek akár a legegyszerűbbek is - ugyanakkor lehetséges, hogy azokat a
rejtvényeket, amelyekben az átlagnál több szám adott, rendkívül nehéz
megfejteni. Ám hogy valójában melyik minősül nehéznek vagy könnyűnek, eléggé
szubjektív: nem vagyunk egyformák, másképpen dolgozik az agyunk is.
Mikor játsszunk
Sudokut?
Egy
Sudoku megfejtése bármikor kellemes időtöltés lehet: egy hosszú vagy rövid
vonatúton, napfényes vagy esős délután, hóban vagy szélben, egyedül vagy
nagyobb társaságban. Lehet magányosan gyakorolni, társaságban versenyezni,agyat
tornáztatni vele.
A
mai korban azonban van még egy segítség,ez a számítógép.
Hát
akkor lássunk csodát,hogyan segíthet egy számítógépes program,mely a
legegyszerűbb módon,egy BASIC program
felhasználásával segít elménknek, a fenti módon összerakni a
számokat,függőlegesen,vízszintesen és a 3x3-as kockában elrendezni a számokat
1-től 9-ig.
Számvarázs,avagy SUDOKU-játékprogram,fő részei,a programozás
megoldandó lépései:
0-ás
sor
Számok
és DIM tömbök kiszámítása,beállítása
Alapértékek
beállítása
9x9-es
tábla megrajzolása
Az
első lépés:a tábla,és memória törlése (csak először,kezdetben (!!))
Főmenű
elkészítése
Első
menű
Második
menű
Kész
tábla betöltése (egyszerre a memóriában 5 tábla lehet,ez kb.20K-t foglal a
memóriából,a többit maga a program) (Hej-haj a mai gépek sok megabájtja !!)
Tábla
mentése (nemcsak emulátoron,hanem az alapgépen is működik)mentés:magnóra,mentés
microdrive-re,mentés +3-as géphez floppyra ( a mentésekre szükség van,nem
biztos,hogy egyszerre meg tudjuk a feladatot oldani)
Játék
indítás-harmadik menű
Spectrum
tábla-kitöltés segítsége,mutatja a lehetőségeket,vízszintes sorokat,függőleges
oszlopokat,és a 3x3-as tömböket.
Javítások
a megkezdett tábláknál
A
táblán való mozgás a spectrum legendás írányítási módja :QAOP SPACE,vagyis
Q=fel,A=le,O=balra,P=jobbra,0-vagy SPACE tűz(beírás) gomb (az emulátort
beállíthatjuk a kurzorgomb irányításra)
A
befejezéskor a játékgyáros elköszön

0 REM Számvarázs
-SUDOKU-program Játekgyáros 2006 március
a kedvenc,a BASIC-ban
nem is létező 0-ás sor (!!),ezt beírva,az többet nem törölhető,ide szokták a
címet,és a szerző nevét beírni,létrehozása az alanti kódsorral lehetséges:
(először a 0-ás sorba
írandó szöveget az 1-es számsorral látjuk el,feltesszük a helyére,majd sorszám
nélkül),a képernyő aljára írjuk be:
POKE
PEEK 23635+256*PEEK 23636+1,0
majd ENTER-rel
elküldjük,és máris látjuk,hogy az 1-es (sor) és sorszám eltűnt,és 0-ra
változott.
1 DEF FN f(x)=(1 AND (x=1 OR x=3 OR x=5 OR
x=7))
2 DEF FN c(x)=(1 AND (x=2 OR x=3 OR x=6 OR
x=7))
3 DEF FN b(x)=(1 AND (x>=4 AND x<=7))
Kezdetnek definiáljuk
a számokat,ezekre majd a programban hívatkozunk
10 BORDER 0: PAPER 4: INK 0
a keretet feketére,az
alapszínt zöldre,a tinta (betű) színt feketére állítjuk
20 DIM s(9,9,10)
30 DIM s$(5,9,9,10,1)
32 DIM r(5)
dimenzionáljuk a
változók tömbjeit,itt raktározzuk el számokat munka közben,és a program
végeztével
(Itt jegyzem meg,hogy
a programot soha ne indítsuk RUN-nal,mert akkor a DIM tömböket lenullázzuk,és
minden elvész !!)
35 LET elrendez=1
37 LET n$="tábla1"
40 LET alaptabla=0
Meghatározzuk a fő
változó értékeket,ezek értéke-nagysága kezdetben=0
50 BORDER 1: PAPER 1: INK 6: CLS
A főcímhez átállítjuk
a táblaszín értékeket :keret fekete,alapszín-háttér kék,rajzoló-író szín sárga.
51 FOR f=72 TO 79: POKE 23681,f: LPRINT
" S z á m v a r á z s - j á t é k ": RANDOMIZE USR 65055: NEXT f
52 PRINT INK 5;AT 3,2; PAPER 1;"*
NyitraiSOFT-Játékgyáros";AT 20,5;"avagy SUDOKU tábla"
54 PAUSE 0

a képernyőre középre
- sárga színben kb.tízszeres nagyságban kiírja : Számvarázs - játék,a felirat
hangjelzés közepette,lüktetve kirajzolódik,felül normál betűkkel'
NyitraiSoft-Játékgyáros',alulra 'avagy SUDOKU tábla',majd egy gombnyomásig
várakozik..
55 GO SUB 9000: GO SUB 9070: GO SUB 9150
a 9000-es sor írja ki
a címet,a 9070-es sor rajzoja ki a
táblát,a 9150-s sor visszaküldi ide (részletesebben majd ott)

60 LET m$=" Irattár
Beír Mutat Vége
": LET o$="ibmv": GO SUB 8500
70 IF valaszt=0 THEN GO TO 60
az első főmenű
80 GO TO 100+30*(valaszt-1)
110 LET m$=" Új Betölt Mentés
Opciók ": LET
o$="ubmo": GO SUB 8500
115 IF valaszt=0 THEN GO TO 55

A második főmenű
(ezeket használjuk majd legtöbbet)
120 GO TO 200+50*(valaszt-1)

130 REM Menű szerkesztő
140 IF alaptabla=0 THEN BEEP .1,-20: GO TO 60
150 GO SUB 9200: GO SUB 7000: GO TO 60
itt eszközölhetjük a
javításokat,ha valamit rosszul írtunk be
170 IF alaptabla=0 THEN BEEP .1,-20: GO TO 55
180 GO TO 1000

a számvarázs-játék
indul
192 GO TO 9999

itt az utolsó sora a
programnak,ha mindent elmentettünk,és már a mai napon nem akarunk a kitöltendő
táblával foglalkozni,kiléphetünk a programból..
210 GO SUB 9500: GO SUB 9150: LET alaptabla=1:
GO TO 100
260 INPUT "Neve [";(n$);"]
"; LINE z$
az első táblát
betölthetjük (magnónál szalagról,emulátornál a megfelelő könyvtárból)

265 IF z$="új" THEN GO TO 100
270 IF LEN z$>10 THEN GO TO 260
280 IF LEN z$>0 THEN LET n$=z$
283 PRINT AT 20,0;
285 IF elrendez=1 THEN LOAD n$ DATA s(): LET
alaptabla=1: GO SUB 9000: GO SUB 9070: GO SUB 9150: GO TO 100
290 IF elrendez=2 THEN LOAD
*"m";1;n$ DATA s(): LET alaptabla=1: GO SUB 9000: GO SUB 9070: GO SUB
9150: GO TO 100
295 IF elrendez=3 THEN LOAD *"a:"+n$
DATA s(): LET alaptabla=1: GO SUB 9000: GO SUB 9070: GO SUB 9150: GO TO 100
297 GO TO 100

Kimenthetjük más
hordozóra is ..
310 INPUT "Neve [";(n$);"]
"; LINE z$
320 IF LEN z$>10 THEN GO TO 310
330 IF LEN z$>0 THEN LET n$=z$
335 IF elrendez=1 THEN SAVE n$ DATA s(): GO TO
100
340 IF elrendez=2 THEN SAVE
*"m";1;n$ DATA s(): GO TO 100
345 IF elrendez=3 THEN SAVE *"a:"+n$
DATA s(): GO TO 100
347 GO TO 100
360 LET m$=" Magnókazettára mentés ": LET o$="m": GO SUB
8500
370 IF valaszt=0 THEN GO TO 100
ha a tábla a
képernyőn van,akkor hozzáláthatunk a feladatnak (persze,ha nem akarjuk,nem kell
a számítógép segítségét igénybevenni,nekiláthatunk a képernyőn saját magunk
próbálkozása által is kitölteni,megoldani a feladatot.)
380 LET elrendez=valaszt: GO TO 100
1000
REM számvarázs-játék indul
1010
INPUT ""
1020
PRINT #0; BRIGHT 1; INK 0; PAPER 6;AT 0,0;""
1030
LET cf=1: LET cc=1: LET menu=0
1050
GO SUB 6900
1070
GO SUB 8800

Játék
indítás-harmadik menű
1080
INPUT "": IF menu=0 THEN PRINT #0; BRIGHT 1; INK 6; PAPER 0;AT
0,0;"QAOP/villog léptet 1-9
Szám"'"SPACE töröl ENTER
vissza Másik.": GO TO 1100
1090
IF menu=1 THEN PRINT #0; BRIGHT 1; INK 6; PAPER 0;AT 0,0;"Sor Oszlop Tömb
Elhatároz"'" Load(tábla) Kiment(tábla) Másik. ": GO TO
1100
1100
REM első kör
1120
LET sor=3: LET oszlop=30: BRIGHT 1: FOR k=1 TO 9: PRINT AT sor+k-1,oszlop;CHR$
((32 AND s(cf,cc,k)=0)+(48+k AND s(cf,cc,k)<>0)): NEXT k: BRIGHT 0
1130
LET cfp=3+(cf-1)*2: LET ccp=7+(cc-1)*2
1140
PRINT AT cfp,ccp; OVER 1; INK 8; FLASH 1;" ": BEEP .01,0
1150
PAUSE 0: LET t$=INKEY$
1160
IF t$="o" OR t$=CHR$ 8 THEN PRINT AT cfp,ccp; OVER 1; INK 8; FLASH
0;" ": LET cc=cc-1: IF cc<1 THEN LET cc=9
1170
IF t$="p" OR t$=CHR$ 9 THEN PRINT AT cfp,ccp; OVER 1; INK 8; FLASH
0;" ": LET cc=cc+1: IF cc>9 THEN LET cc=1
1180
IF t$="a" OR t$=CHR$ 10 THEN PRINT AT cfp,ccp; OVER 1; INK 8; FLASH
0;" ": LET cf=cf+1: IF cf>9 THEN LET cf=1
1190
IF t$="á" OR t$=CHR$ 11 THEN PRINT AT cfp,ccp; OVER 1; INK 8; FLASH
0;" ": LET cf=cf-1: IF cf<1 THEN LET cf=9
1200
IF t$<"1" OR t$>"9" THEN GO TO 1230
1210
LET ii=cf: LET jj=cc: GO SUB 8600: FOR i=1 TO LEN v$: IF t$=v$(i) THEN LET
va=VAL t$: LET s(cf,cc,10)=va: FOR k=1 TO 9: LET s(cf,cc,k)=(1 AND k=va)+(0 AND
k<>va): NEXT k: PRINT AT cfp,ccp; INK 1;va
1220
NEXT i
1230
IF t$=" " THEN LET s(cf,cc,10)=0: FOR k=1 TO 9: LET s(cf,cc,k)=1:
NEXT k: LET i=cf: LET j=cc: GO SUB 7200: PRINT AT cfp,ccp;" "
1240
IF t$=CHR$ 13 THEN GO TO 50

a spectrum kérésre
megmutatja:milyen számokat írhatunk be a megfelelő sorba,oszlopba,vagy 3x3
tömbbe
1250
IF t$="s" THEN PRINT AT cfp,ccp; OVER 1; INK 8; FLASH 0;"
": GO SUB 2000: GO TO 1080
1260
IF t$="o" THEN LET menu=NOT menu: GO TO 1080
1270
IF t$="t" THEN GO SUB 3000: GO TO 1080: REM aktuális sor
1280
IF t$="e" THEN GO SUB 4000: GO TO 1080: REM aktuális oszlop
1290
IF t$="l" THEN GO SUB 5000: GO TO 1080: REM aktuális 3x3-as blokk
1300
IF t$="k" THEN GO SUB 1500: GO TO 1070
1310
IF t$="m" THEN GO SUB 1600: GO TO 1070
1400
GO TO 1100
Lehetőség van új
tábla kitöltésre,ezt kiválaszthatjuk egy feladványfüzetből,vagy magunk
kreálhatunk új táblát..
1500
REM tábla kitöltés
1510
INPUT "": PRINT #0;AT 1,0;"
1-5 tábla mentés,ENTER kilépés ": BEEP .1,20
1520
PAUSE 0: LET t$=INKEY$: IF (t$<"1" OR t$>"5") AND
t$<>CHR$ 13 THEN GO TO 1520
1525
IF t$=CHR$ 13 THEN RETURN
1530
LET res=VAL t$
1540
IF r(res)=0 THEN BEEP .1,-20: GO TO 1520
1550
INPUT "": PRINT #0;AT 1,0;"Betöltöm a: ";
1560
FOR i=1 TO 9: PRINT #0;" :";: FOR j=1 TO 9: FOR k=1 TO 10: LET va=CODE
s$(res,i,j,k): LET s(i,j,k)=va-100: NEXT k: NEXT j: NEXT i
1565
GO SUB 9150
1570
RETURN
1600
REM
ha elkészültünk egy
feladvány beírásával (ez még nem a kész táblát jelenti,hanem csak az induló
számok beírását, mindig mentsük el),hogy később visszatérhessünk az induló
álláshoz

1610
INPUT "": PRINT #0;AT 1,0;"1-5 tábla kimentés,ENTER kilépés
": BEEP .1,20
1620
PAUSE 0: LET t$=INKEY$: IF (t$<"1" OR t$>"5") AND
t$<>CHR$ 13 THEN GO TO 1620
1625
IF t$=CHR$ 13 THEN RETURN
1630
LET res=VAL t$
1650
INPUT "": PRINT #0;AT 1,0;"Mentem a táblát ";
1660
FOR i=1 TO 9: PRINT #0;" :";: FOR j=1 TO 9: FOR k=1 TO 10: LET
va=s(i,j,k): LET s$(res,i,j,k)=CHR$ (va+100): NEXT k: NEXT j: NEXT i
1670
LET r(res)=1
1680
RETURN
itt kezdődik a
segítség (persze ne gondoljuk azt,hogy a spectrum egyszerűen kitölti nekünk a
feladványt,csak megmutatja,kiírja a lehetőségeket,látványos formában)minden
sorban,oszlopban,3x3-as tömbben megmutatja,mit is írhatunk be.
2000
REM Spectrum segíti kitölteni a SUDOKU-táblát
2010
LET mindig=0: LET elvon=1: LET torol=0
2023
INPUT "": PRINT #0;AT 1,0; INVERSE 1;"A meghatározó számok
keresése "
2025
LET va=0: LET va1=0: LET va2=0
2030
FOR i=1 TO 9: FOR j=1 TO 9: LET cfp=3+(i-1)*2: LET ccp=7+(j-1)*2: PRINT AT
cfp,ccp; INVERSE 1; OVER 1;" ": IF s(i,j,10)>0 THEN GO TO 2100
2050
BRIGHT 1: FOR k=1 TO 9: PRINT AT 3+k-1,30;CHR$ ((32 AND s(i,j,k)=0)+(48+k AND
s(i,j,k)<>0)): NEXT k: BRIGHT 0
2091
IF elvon THEN GO SUB 7200
2092
LET ii=i: LET jj=j: GO SUB 8600
2093
IF LEN v$<>1 THEN GO TO 2100
2094
LET va=VAL v$: LET s(i,j,10)=va: FOR k=1 TO 9: LET s(i,j,k)=(0 AND
k<>va)+(1 AND k=va): NEXT k: GO SUB 7500: PRINT AT cfp,ccp; INK 1;va: GO
TO 2110
2100
PRINT AT cfp,ccp; INVERSE 1; OVER 1;" "
2105
IF INKEY$=" " THEN LET torol=1: RETURN
2110
NEXT j: NEXT i
2120
LET elvon=0
2131
GO SUB 8900: IF hataroz THEN RETURN
2132
IF va=0 THEN GO SUB 7900: IF va=0 AND NOT torol THEN GO SUB 8300: IF va1=0 THEN
RETURN
2133
IF torol THEN RETURN
2134
IF va1<>0 AND va=0 THEN GO TO 2020
2135
IF mindig=1 THEN LET t$="i": GO TO 2170

Ha végzett egy-egy
résszel,felajánlja a szünetet,vagy a folytatást
2140
INPUT "": PRINT #0;AT 0,0;"A (f)olytatom elég hosszú
lesz:"'"Csináljam? (Igen/Nem/Folytatom)"
2150
PAUSE 0: LET t$=INKEY$
2160
IF t$<>"i" AND t$<>"n" AND
t$<>"f" THEN GO TO 2150
2165
IF t$="f" THEN LET mindig=1: GO TO 2135
2170
INPUT "": PRINT #0;"Már dolgozom is...": FOR f=3 TO 19 STEP
2: FOR c=7 TO 23 STEP 2: PRINT AT f,c; OVER 1;" ": NEXT c: NEXT f: IF
t$="i" THEN GO TO 2020
2180
RETURN
kérhetünk egy-egy kiválasztott
sort

3000
REM aktuális sor választása
3010
LET m$="Megmutatom az 1-9 lehetőségeit
": LET o$="123456789m"
3015
GO SUB 8500
3020
IF valaszt=10 THEN GO TO 3100
3030
IF valaszt<>0 THEN GO TO 3040
3031
FOR j=1 TO 9: IF s(cf,j,10)<1 THEN PRINT AT cfp,7+(j-1)*2;" "
3032
NEXT j
3035
RETURN
3040
FOR j=1 TO 9: IF s(cf,j,10)<1 AND s(cf,j,valaszt)=1 THEN PRINT AT
cfp,7+(j-1)*2; INK 3;valaszt: GO TO 3050
3045
IF s(cf,j,10)<1 THEN PRINT AT cfp,7+(j-1)*2;" "
3050
NEXT j
3060
GO TO 3015
megmutatja egy táblázatban,hogyan
helyezkednek el a számok,sorban lekérhetjük az 1,2 9 stb. sort is
3100
REM aktuális sor részlete
3120
CLS : LET fi=cf
3125
GO SUB 9000: INK 2: PLOT 52,122: DRAW 144,0: PLOT 52,108: DRAW 144,0: PLOT
52,122: DRAW 0,-92: DRAW 144,0: PLOT 196,122: DRAW 0,-92
3127
FOR j=1 TO 10: PLOT 52+(j-1)*16,122: DRAW 0,-92: IF j=1 OR j=4 OR j=7 OR j=10
THEN DRAW 1,0: DRAW 0,92
3128
NEXT j: INK 0
3129
LET v$="Lehetséges": BRIGHT 1: LET sor=7: LET oszlop=5: GO SUB 8700:
BRIGHT 0
3130
PRINT AT 4,13; INVERSE 1;"sor: ";fi
3140
FOR j=1 TO 9: PRINT AT 7,7+(j-1)*2;: IF s(fi,j,10)>=1 THEN PRINT s(fi,j,10):
FOR k=1 TO 9: PRINT AT 8+k,7+(j-1)*2;" ": NEXT k: GO TO 3175
3150
PRINT " ": FOR k=1 TO 9: PRINT AT 8+k,7+(j-1)*2;: IF s(fi,j,k)=1 THEN
PRINT k: GO TO 3170
3160
PRINT " "
3170
NEXT k
3175
NEXT j
3180
LET m$=" 1-9 pontos
részletezés "
3190
LET o$="123456789"
3200
GO SUB 8500
3210
IF valaszt=0 THEN CLS : GO SUB 9000: GO SUB 9070: GO SUB 9150: GO SUB 6900: GO
SUB 8800: GO TO 3000
3220
LET fi=valaszt: GO TO 3130
4000
REM aktuális oszlop választás
4010
LET m$="Megmutatom az 1-9 lehetőségeit
": LET o$="123456789m"
4015
GO SUB 8500
4020
IF valaszt=10 THEN GO TO 4100
4030
IF valaszt<>0 THEN GO TO 4040
4031
FOR i=1 TO 9: IF s(i,cc,10)<1 THEN PRINT AT 3+(i-1)*2,ccp;" "
4032
NEXT i
4035
RETURN
4040
FOR i=1 TO 9: IF s(i,cc,10)<1 AND s(i,cc,valaszt)=1 THEN PRINT AT
3+(i-1)*2,ccp; INK 3;valaszt: GO TO 4050
4045
IF s(i,cc,10)<1 THEN PRINT AT 3+(i-1)*2,ccp;" "
4050
NEXT i
4060
GO TO 4015

megmutatja egy
táblázatban,hogyan helyezkednek el a számok,sorban lekérhetjük az 1,2 9 stb.
oszlopot is
4100
REM aktuális oszlop
4110
CLS : GO SUB 9000
4112
INK 2: FOR i=0 TO 9: PLOT 52,(3+(i-1)*2)*8+4: DRAW 160,0: IF i/3=INT (i/3) THEN
PLOT 52,(3+(i-1)*2)*8+5: DRAW 160,0
4114
NEXT i
4116
PLOT 52,12: DRAW 0,18*8+1: PLOT 68,12: DRAW 0,18*8+1: PLOT 52+160,12: DRAW
0,18*8+1: INK 0
4118
LET v$="Lehetséges": LET sor=7: LET oszlop=29: BRIGHT 1: GO SUB 8700:
BRIGHT 0
4120
LET co=cc
4200
FOR i=1 TO 9: PRINT AT 3+(i-1)*2,7;: IF s(i,co,10)>=1 THEN PRINT s(i,co,10):
FOR k=1 TO 9: PRINT AT 3+(i-1)*2,9+(k-1)*2;" ": NEXT k: GO TO 4220
4205
PRINT " "
4210
FOR k=1 TO 9: PRINT AT 3+(i-1)*2,9+(k-1)*2;: IF s(i,co,k)=1 THEN PRINT k: GO TO
4215
4212
PRINT " "
4215
NEXT k
4220
NEXT i
4225
INVERSE 1: LET v$="oszlop "+STR$ (co): LET sor=6: LET oszlop=4: GO
SUB 8700: INVERSE 0
4230
LET m$=" 1-9 lehetseges oszlop
"
4240
LET o$="123456789"
4250
GO SUB 8500
4260
IF valaszt=0 THEN CLS : GO SUB 9000: GO SUB 9070: GO SUB 9150: GO SUB 6900: GO
SUB 8800: GO TO 4000
4270
LET co=valaszt: GO TO 4200
5000
REM
megmutatja
egy táblázatban,hogyan helyezkednek el a 3x3 tömb számai,sorban lekérhetjük az
1,2 9 stb. kockát is
5010
LET m$="Megmutatom az 1-9 lehetőségeit
": LET o$="123456789m"
5020
GO SUB 8500
5030
IF valaszt=10 THEN GO TO 5100
5040
IF valaszt<>0 THEN GO TO 5070
5050
LET ii=1+3*INT ((cf-1)/3): LET jj=1+3*INT ((cc-1)/3): FOR i=ii TO ii+2: FOR
j=jj TO jj+2: IF s(i,j,10)<1 THEN PRINT AT 3+(i-1)*2,7+(j-1)*2;" "
5060
NEXT j: NEXT i: RETURN
5070
LET ii=1+3*INT ((cf-1)/3): LET jj=1+3*INT ((cc-1)/3): FOR i=ii TO ii+2: FOR
j=jj TO jj+2: IF s(i,j,10)<1 AND s(i,j,valaszt)=1 THEN PRINT AT
3+(i-1)*2,7+(j-1)*2; INK 3;valaszt: GO TO 5080
5075
IF s(i,j,10)<1 THEN PRINT AT 3+(i-1)*2,7+(j-1)*2;" "
5080
NEXT j: NEXT i
5090
GO TO 5020
5100
REM hangjelzés és ENTER-re kilépés
5110
BEEP 1,-20: GO TO 5020
6900
REM lehetőségek kijelzése
6910
LET sor=3: LET oszlop=2: LET v$="tábla": INVERSE 1: GO SUB 8700
6920
LET sor=3: LET oszlop=29: LET v$="lehetőseg": GO SUB 8700: INVERSE 0
6930
RETURN
ha saját magunk
írtunk be valamit,akkor a spectrum ellenőriz,és megmutatja a hibás
elhelyezkedést

7000
REM a spectrum ellenőrzi és megmutatja a lehetséges számokat
7005
INPUT "": PRINT #0;AT 1,0; INVERSE 1;"Beállítom a lehetséges
számokat!"
7010
FOR i=1 TO 9: FOR j=1 TO 9: LET cfp=3+(i-1)*2: LET ccp=7+(j-1)*2: PRINT AT
cfp,ccp; INVERSE 1; OVER 1;" ": IF s(i,j,10)>0 THEN GO TO 7125
7040
GO SUB 7200
7125
PRINT AT cfp,ccp; INVERSE 1; OVER 1;" ": NEXT j: NEXT i
7140
RETURN
vízszintesen,majd
függőlegesen is végignézi,és kijelöli a spectrum
7200
REM előszőr vízszintesen,majd függőlegesen is végignézi,és kijelöli
7220
FOR c=1 TO 9: IF c<>j AND s(i,c,10)>0 THEN LET s(i,j,s(i,c,10))=0
7240
NEXT c
7260
FOR f=1 TO 9: IF f<>i AND s(f,j,10)>0 THEN LET s(i,j,s(f,j,10))=0
7280
NEXT f
7290
LET fcom=1+3*INT ((i-1)/3): LET ccom=1+3*INT ((j-1)/3): FOR f=fcom TO fcom+2:
FOR c=ccom TO ccom+2
7320
IF (f<>i OR c<>j) AND s(f,c,10)>0 THEN LET s(i,j,s(f,c,10))=0
7330
NEXT c: NEXT f
7340
RETURN
7500
REM a 3x3-as kockákban mutatja a lehetséges értékeket
7510
FOR c=1 TO 9: LET s(i,c,va)=(1 AND c=j)+(0 AND c<>j): NEXT c
7520
FOR f=1 TO 9: LET s(f,j,va)=(1 AND f=i)+(0 AND f<>i): NEXT f
7530
LET fcom=1+3*INT ((i-1)/3): LET ccom=1+3*INT ((j-1)/3): FOR f=fcom TO fcom+2:
FOR c=ccom TO ccom+2: LET s(f,c,va)=(1 AND (f=i AND c=j))+(0 AND (f<>i OR
c<>j)): NEXT c: NEXT f
7540
RETURN
Megoldások elemzése ""nézd csak
türelmesen...""",viszíntesen a sort,függőlegesen az
oszlopokat,és külön-külön a 3x3 tömböket..

7900
REM elemzés minden lehetőséggel
7905
INPUT "": PRINT #0;AT 1,0; INVERSE 1;"Megoldás elemzése
""nézd csak türelmesen..."""
7907
LET va=0
7910
FOR i=1 TO 9: LET cfp=3+(i-1)*2: DIM v(9,2): FOR j=1 TO 9: LET ccp=7+(j-1)*2:
PRINT AT cfp,ccp; OVER 1; INK 8; INVERSE 1;" ": IF s(i,j,10)>0
THEN GO TO 7925
7915
BRIGHT 1: FOR k=1 TO 9: PRINT AT 3+k-1,30;CHR$ ((32 AND s(i,j,k)=0)+(48+k AND
s(i,j,k)<>0)): NEXT k: BRIGHT 0: FOR k=1 TO 9: LET
v(k,1)=v(k,1)+s(i,j,k): IF v(k,1)=1 AND v(k,2)=0 THEN LET v(k,2)=j
7920
NEXT k
7925
PRINT AT cfp,ccp; OVER 1; INK 8; INVERSE 1;" ": IF INKEY$="
" THEN LET torol=1: RETURN
7927
NEXT j: FOR k=1 TO 9: IF v(k,1)=1 THEN LET s(i,v(k,2),10)=k: LET va=k: LET
j=v(k,2): FOR l=1 TO 9: LET s(i,j,l)=(1 AND l=va)+(0 AND l<>va): NEXT l:
GO SUB 7500: PRINT INK 1;AT cfp,7+(j-1)*2;va
7930
NEXT k: NEXT i
7935
IF va<>0 THEN RETURN
7950
FOR j=1 TO 9: LET ccp=7+(j-1)*2: DIM v(9,2): FOR i=1 TO 9: LET cfp=3+(i-1)*2:
PRINT AT cfp,ccp; OVER 1; INK 8; INVERSE 1;" ": IF s(i,j,10)>0
THEN GO TO 7960
7955
BRIGHT 1: FOR k=1 TO 9: PRINT AT 3+k-1,30;CHR$ ((32 AND s(i,j,k)=0)+(48+k AND s(i,j,k)<>0)):
NEXT k: BRIGHT 0: FOR k=1 TO 9: LET v(k,1)=v(k,1)+s(i,j,k): IF v(k,1)=1 AND
v(k,2)=0 THEN LET v(k,2)=i
7957
NEXT k
7960
PRINT AT cfp,ccp; OVER 1; INK 8; INVERSE 1;" ": IF INKEY$="
" THEN LET torol=1: RETURN
7965
NEXT i: FOR k=1 TO 9: IF v(k,1)=1 THEN LET s(v(k,2),j,10)=k: LET va=k: LET
i=v(k,2): FOR l=1 TO 9: LET s(i,j,l)=(1 AND l=va)+(0 AND l<>va): NEXT l:
GO SUB 7500: PRINT INK 1;AT 3+(i-1)*2,ccp;va
7970
NEXT k: NEXT j
7980
IF va<>0 THEN RETURN
8000
FOR m=1 TO 9 STEP 3: FOR n=1 TO 9 STEP 3
a 3x3-as kockák
ellenőrzése,itt szokott a legtöbb hiba lenni
8005
DIM v(9,3)
8010
FOR i=m TO m+2: LET cfp=3+(i-1)*2: FOR j=n TO n+2: LET ccp=7+(j-1)*2
8020
PRINT AT cfp,ccp; OVER 1; INK 8; INVERSE 1;" ": IF s(i,j,10)>0
THEN GO TO 8050
8030
BRIGHT 1: FOR k=1 TO 9: PRINT AT 3+k-1,30;CHR$ ((32 AND s(i,j,k)=0)+(48+k AND
s(i,j,k)<>0)): NEXT k: BRIGHT 0: FOR k=1 TO 9: LET
v(k,1)=v(k,1)+s(i,j,k): IF v(k,1)=1 AND v(k,2)=0 THEN LET v(k,2)=i: LET
v(k,3)=j
8040
NEXT k
8050
PRINT AT cfp,ccp; OVER 1; INK 8; INVERSE 1;" ": IF INKEY$="
" THEN LET torol=1: RETURN
8055
NEXT j: NEXT i
8060
FOR k=1 TO 9: IF v(k,1)=1 THEN LET i=v(k,2): LET j=v(k,3): LET va=k: LET
s(i,j,10)=va: FOR l=1 TO 9: LET s(i,j,l)=(1 AND l=va)+(0 AND l<>va): NEXT
l: GO SUB 7500: PRINT INK 1;AT 3+(i-1)*2,7+(j-1)*2;va
8070
NEXT k
8080
NEXT n: NEXT m
8090
RETURN
a többi számhoz
viszonyított lehetőség-megmutatom a megoldást:

8300
REM a többi számhoz viszonyított lehetőség
8305
INPUT "": PRINT #0;AT 1,0; INVERSE 1;" Megmutatom a megoldást: "
8307
LET va1=0: LET va2=0
8310
FOR i=1 TO 9: LET cfp=3+(i-1)*2: LET ii=i: FOR j=1 TO 9: LET ccp=7+(j-1)*2:
PRINT AT cfp,ccp; OVER 1; INK 8; INVERSE 1;" ": IF s(i,j,10)>0 OR
FN f(ABS s(i,j,10)) THEN GO TO 8350
8315
BRIGHT 1: FOR k=1 TO 9: PRINT AT 3+k-1,30;CHR$ ((32 AND s(i,j,k)=0)+(48+k AND
s(i,j,k)<>0)): NEXT k: BRIGHT 0: LET jj=j: GO SUB 8600: IF LEN
v$<>2 THEN GO TO 8350
8320
LET w$=v$: LET par1=j: LET enc=0: FOR c=1 TO 9: LET jj=c: IF jj<>j AND
(s(ii,jj,10)<1 AND NOT FN f(ABS s(ii,jj,10))) THEN GO SUB 8600: IF w$=v$
THEN LET par2=c: LET enc=enc+1
8330
NEXT c: IF enc<>1 THEN GO TO 8350
8332
LET va1=VAL w$(1): LET va2=VAL w$(2): FOR c=1 TO 9: IF c<>par1 AND
c<>par2 THEN LET s(i,c,va1)=0: LET s(i,c,va2)=0
8335
IF c=par1 OR c=par2 THEN LET s(i,c,10)=s(i,c,10)-1
8340
NEXT c
8350
PRINT AT cfp,ccp; OVER 1; INK 8; INVERSE 1;" ": IF INKEY$="
" THEN LET torol=1: RETURN
8355
NEXT j: NEXT i
8360
IF va1<>0 THEN RETURN
8370
FOR j=1 TO 9: LET ccp=7+(j-1)*2: LET jj=j: FOR i=1 TO 9: LET cfp=3+(i-1)*2:
PRINT AT cfp,ccp; OVER 1; INK 8; INVERSE 1;" ": IF s(i,j,10)>0 OR
FN c(ABS s(i,j,10)) THEN GO TO 8410
8375
BRIGHT 1: FOR k=1 TO 9: PRINT AT 3+k-1,30;CHR$ ((32 AND s(i,j,k)=0)+(48+k AND
s(i,j,k)<>0)): NEXT k: BRIGHT 0: LET ii=i: GO SUB 8600: IF LEN
v$<>2 THEN GO TO 8410
8380
LET w$=v$: LET par1=i: LET enc=0: FOR f=1 TO 9: LET ii=f: IF ii<>i AND
(s(ii,jj,10)<1 AND NOT FN c(ABS s(ii,jj,10))) THEN GO SUB 8600: IF w$=v$
THEN LET par2=f: LET enc=enc+1
8390
NEXT f: IF enc<>1 THEN GO TO 8410
8392
LET va1=VAL w$(1): LET va2=VAL w$(2): FOR f=1 TO 9: IF f<>par1 AND
f<>par2 THEN LET s(f,j,va1)=0: LET s(f,j,va2)=0
8395
IF f=par1 OR f=par2 THEN LET s(f,j,10)=s(f,j,10)-2
8400
NEXT f
8410
PRINT AT cfp,ccp; OVER 1; INK 8; INVERSE 1;" ": IF INKEY$="
" THEN LET torol=1: RETURN
8415
NEXT i: NEXT j
8420
IF va1<>0 THEN RETURN
3x3-as blokkok
ellenőrzése,és javaslat
8422
REM kilences ( 3x3) blokk
8426
FOR m=1 TO 9 STEP 3: FOR n=1 TO 9 STEP 3
8428
FOR i=m TO m+2: LET cfp=3+(i-1)*2: LET ii=i: FOR j=n TO n+2: LET ccp=7+(j-1)*2:
PRINT AT cfp,ccp; OVER 1; INK 8; INVERSE 1;" "
8430
IF s(i,j,10)>0 OR FN b(ABS s(i,j,10)) THEN GO TO 8452
8432
BRIGHT 1: FOR k=1 TO 9: PRINT AT 3+k-1,30;CHR$ ((32 AND s(i,j,k)=0)+(48+k AND
s(i,j,k)<>0)): NEXT k: BRIGHT 0
8434
LET jj=j: GO SUB 8600: IF LEN v$<>2 THEN GO TO 8452
8436
LET w$=v$: LET par1i=i: LET par1j=j: LET enc=0
8438
FOR f=m TO m+2: FOR c=n TO n+2: IF f<>par1i AND c<>par1j AND
(s(f,c,10)<1 AND NOT FN c(ABS s(f,c,10))) THEN LET ii=f: LET jj=c: GO SUB
8600: IF w$=v$ THEN LET par2i=f: LET par2j=c: LET enc=enc+1
8440
NEXT c: NEXT f
8442
IF enc<>1 THEN GO TO 8452
8444
LET va1=VAL w$(1): LET va2=VAL w$(2): FOR f=m TO m+2: FOR c=n TO n+2
8446
IF (f<>par1i OR c<>par1j) AND (f<>par2i OR c<>par2j)
THEN LET s(f,c,va1)=0: LET s(f,c,va2)=0
8448
IF (f=par1i AND c=par1j) OR (f=par2i AND c=par2j) THEN LET
s(f,c,10)=s(f,c,10)-4
8450
NEXT c: NEXT f
8452
PRINT AT cfp,ccp; OVER 1; INK 8; INVERSE 1;" ": IF INKEY$="
" THEN LET torol=1: RETURN
8453
NEXT j: NEXT i
8454
NEXT n: NEXT m: RETURN
a választott menűből
való visszalépés,mindig az előző menűt tölti be
8500
REM választott menű
8510
PRINT #0; BRIGHT 1; INK 0; PAPER 6;AT 0,0;m$;AT 1,0; BRIGHT 0; INVERSE
1;"ENTER-re az előző menűt tölti be"
8520
PAUSE 0: LET t$=INKEY$
8530
FOR t=1 TO LEN o$: IF t$=o$(t) THEN LET valaszt=t: RETURN
8540
NEXT t
8550
IF t$=CHR$ 13 THEN LET valaszt=0: RETURN
8560
GO TO 8520
a hibakeresés után
megmutaja a spectrum a lehetséges szám-értékeket
8600
REM lista a lehetséges értékekkel v$(ii,jj)
8610
LET v$="": FOR k=1 TO 9: IF s(ii,jj,k)=1 THEN LET v$=v$+STR$ k
8620
NEXT k
8630
RETURN
8700
REM vízszintes kiírás
8710
FOR k=1 TO LEN v$: PRINT AT sor+k-1,oszlop;v$(k): NEXT k
8720
RETURN
8800
REM a tábla számai 1-5
8810
FOR i=1 TO 5: PRINT AT 2+i,3; PAPER 6+r(i); BRIGHT 1;i: NEXT i
8820
RETURN
8900
REM meghatározza 1-9-et
8910
LET hataroz=0: FOR i=1 TO 9: FOR j=1 TO 9: IF s(i,j,10)<1 THEN RETURN
8920
NEXT j: NEXT i: LET hataroz=1: RETURN
ezzel kezdődik a
játék,az elejéről ide ugrik,kiírja a fő-feliratot 'Számvarázs-tábla 2006'

9000
REM Számvarázs ( SUDOKU ) felirat
9002
INPUT "": BORDER 4: PAPER 4: INK 1: CLS

a keret zöld,a háttér
zöld,a tintaszín kék
9003
PRINT INK 1;AT 1,5;"Számvarázs-tábla 2006'": GO TO 9020
9005
PLOT 0,0: DRAW INK 1;255,0: DRAW INK 1;0,175: DRAW INK 1;-255,0: DRAW INK
1;0,-175
9006
LET xi=20: LET yi=170: INK 1
9007
PLOT xi+32,yi: DRAW -32,0: DRAW 0,-4: DRAW 32,0: DRAW 0,-4: DRAW -32,0
9008
LET xi=xi+36: PLOT xi,yi: DRAW 0,-8: DRAW 32,0: DRAW 0,8
9009
LET xi=xi+36: PLOT xi+32,yi: DRAW 0,-8: DRAW -32,0: DRAW 0,4: DRAW 32,0
9010
LET xi=xi+36: PLOT xi,yi: DRAW 32,0: DRAW 0,-8: DRAW -32,0: DRAW 0,8
9011
LET xi=xi+36: PLOT xi,yi: DRAW 0,-8: DRAW 0,4: DRAW 16,0: DRAW 4,4: DRAW 12,0:
PLOT xi+16,yi-4: DRAW 4,-4: DRAW 12,0
9012
LET xi=xi+36: PLOT xi,yi: DRAW 0,-8: DRAW 32,0: DRAW 0,8
9020
INK 1
9030
RETURN
kirajzolja kék
színnel a kockás táblát,a 3x3-as tömböknek erősebb a vonala,jól látható módon

9070
REM tábla kirajzolás
9075
INK 1
9080
FOR i=0 TO 9
9090
PLOT 52,(3+(i-1)*2)*8+4: DRAW 18*8,0
9095
IF i/3=INT (i/3) THEN PLOT 52,(3+(i-1)*2)*8+5: DRAW 18*8,0
9100
NEXT i
9110
FOR i=0 TO 9
9120
PLOT (7+i*2)*8-4,12: DRAW 0,18*8+1
9125
IF i/3=INT (i/3) THEN PLOT (7+i*2)*8-5,12: DRAW 0,18*8+1
9130
NEXT i
9135
INK 0
9140
RETURN
9160
IF alaptabla=0 THEN RETURN
9170
FOR i=1 TO 9
9180
FOR j=1 TO 9
9190
PRINT AT 3+(i-1)*2,7+(j-1)*2;
9193
IF s(i,j,10)>0 THEN PRINT s(i,j,10): GO TO 9197
9195
PRINT " "
9197
NEXT j
9198
NEXT i
9199
RETURN
az előzőleg
beírt,vagy betöltött táblát tudjuk megváltoztatni,a fő-maradandó számok
feketével,amit mi,vagy a spectrum később ír be -jól elkülönülő - kék színnel
9200
REM javítás a táblán
9210
LET cf=1: LET cc=1
a táblán való mozgás
a spectrum legendás írányítási módja :QAOP
SPACE,vagyis Q=fel,A=le,O=balra,P=jobbra,0-vagy SPACE tűz(beírás) gomb (az
emulátort beállíthatjuk a kurzorgomb irányításra)
9225
PRINT #0;AT 0,0; BRIGHT 1;"SPACE töröl.
ENTER visszalép."'"VILLOG/QAOP lépés. 1-9 jelöl."
9230
LET cfp=3+(cf-1)*2: LET ccp=7+(cc-1)*2
9235
PRINT AT cfp,ccp; OVER 1; FLASH 1;" "
9240
PAUSE 0: LET t$=INKEY$
9250
IF t$=CHR$ 8 OR t$="o" THEN PRINT AT cfp,ccp; OVER 1;" ":
LET cc=cc-1: IF cc<1 THEN LET cc=9
9260
IF t$=CHR$ 9 OR t$="p" THEN PRINT AT cfp,ccp; OVER 1;" ":
LET cc=cc+1: IF cc>9 THEN LET cc=1
9270
IF t$=CHR$ 10 OR t$="a" THEN PRINT AT cfp,ccp; OVER 1;" ":
LET cf=cf+1: IF cf>9 THEN LET cf=1
9280
IF t$=CHR$ 11 OR t$="q" THEN PRINT AT cfp,ccp; OVER 1;" ":
LET cf=cf-1: IF cf<1 THEN LET cf=9
9290
IF t$=" " THEN PRINT AT cfp,ccp;" ": LET s(cf,cc,10)=0: FOR
i=1 TO 9: LET s(cf,cc,i)=1: NEXT i
9300
IF t$=CHR$ 13 THEN PRINT AT cfp,ccp; OVER 1;" ": RETURN
9310
IF t$>="1" AND t$<="9" THEN LET va=CODE t$-48: LET
s(cf,cc,10)=va: PRINT AT cfp,ccp;va: FOR i=1 TO 9: LET s(cf,cc,i)=(1 AND i=va)
OR (0 AND i<>va): NEXT i
9499
GO TO 9230
amikor kezdünk (és
nem indultunk a RUN-nal),vagy új táblát akarunk betölteni,akkor használjuk-e
menű-t

9500
REM táblatörlés-memóriatörlés
9505
INPUT "": PRINT #0;AT 1,0;"Letörlöm a táblát,nullázom a
memóriát!!";AT 1,22;
9507
DIM s(9,9,10)
9510
FOR i=1 TO 9
9515
PRINT #0;": ";
9520
FOR j=1 TO 9
9540
FOR k=1 TO 9
9550
LET s(i,j,k)=1
9560
NEXT k
9570
NEXT j
9580
NEXT i
9590
RETURN

és akkor elérkeztünk
a program utosó soraihoz,itt kiléphetünk a játékból a játékgyáros
köszönetével..
'búcsúzik a
játékgyáros !' felirat a spectrum minden színében,és hangjelzés kíséretében,és
utána a borzasztó FEKETE képernyő...

9998
REM kilépés a játékból
9999
FOR i=1 TO 15: BORDER 7: PAPER 7: INK 0: BRIGHT 0: FLASH 0: PRINT #0; INK
i/2;AT 1,0;" búcsúzik a játékgyáros
!! ": RANDOMIZE USR 65055: NEXT i:
RANDOMIZE USR 0
Közreadta :Nyitrai
László,akit játékgyárosnak is hívnak...
honlapom http://jatekgyaros.blogspot.com
Függelék:
Gould könyvei
:Egyedülálló számok
A
sudoku egyszerűbb elődjét a 18. század végén alkotta meg Leonhard Euler svájci
matematikus, mai formáját először 1979-ben publikálták Number Place
(számelhelyezés) néven New Yorkban. Japánban 1984-ben adták ki először, de csak
1986-ban lett hirtelen népszerű. 1989-ben Commodore 64-re is megjelent egy
sudoku program DigitHunt címmel. A mostani világméretű közkedveltség annak
köszönhető, hogy az új-zélandi Wayne Gould, aki korábban bíró volt Hongkongban,
1997-ben Japánban találkozott egy ilyen rejtvénnyel, és nekiállt kifejleszteni
egy szoftvert, ami képes gyorsan előállítani a rejtvényeket. Amikor kész volt,
jelentkezett a brit Times-nál, ahol tavaly november 12-én meg is jelent az első
sudoku, ami rövid időn belül sikertörténetté vált, ésatöbbi.
A
sudoku szó "egyedülálló számok"-at jelent japánul, a kifejezés a
Nikoli kiadó birtokában van, legalábbis a rejtvénnyel kimerítően foglalkozó
Wikipedia-szócikk szerint, emiatt az ország többi kiadója inkább eredeti nevén,
nanpureként jelenteti meg a fejtörőt (ez a kifejezés "számelhelyezést"
jelent).
Megjegyzések
Megjegyzés küldése