Pascal-ban hogyan lehetne karakteres felületű sudoku-t csinálni? Hogy kell definiálni?
Tehát, a tologatást stb miként kell megvalósítani, hogy működjön is?
program sudoku;
var
jatek : array [1..3,1..3] of byte;
i, j, k : byte;
begin
k := 1;
for i := 1 to 3 do
for j := 1 to 3 do
begin
jatek[i,j] := k;
inc(k);
Write(jatek[i,j]:5);
end;
end.
Nemigen tudom követni a szándékaidat. Nemcsak azért, mert belebonyolódtál a tömbkezelésbe (ez itt nem egyszerű ügy), hanem, mert nehéz átlátnom, hogy a semleges nevű i és j változók közül melyik felel meg a sornak, és melyik az oszlopnak. Szerintem nem volt szerencsés döntés, hogy az első példaprogramokban mi is az eredeti változónevekhez igazodtunk, én nem véletlenül váltottam át később a hagyományos és egyértelmű x és y nevekre. Gondolom, a lyukat SimkoL nyomán nálad is a 0 érték jelzi -- én több szempontból egyszerűbbnek találom, ha az a legnagyobb számérték; úgy tűnik, ez fölöslegessé teszi az if (tabla[i,j] <> 0) feltételvizsgálatot, amely az üres kocka speciális értékéből adódik.
A ciklusoddal (egyebek mellett) csakugyan az a baj, amit írtál, tehát eleve csak egy részét vizsgálja meg a tömbnek. Értelmezési zavaraim miatt meg se kíséreltem kibogozni a te függvényedet, inkább megpróbáltam sajátot írni:
Ezzel kapcsolatban a következőket tartom megemlíteni:
1. Nálam, mint említettem, az üres kocka a maximális érték (OLDAL*OLDAL), ez egyébként megfelel a Csákány-Vajda könyvben szereplő megoldásnak.
2. A módszer: A kétdimenziós tömböt átírtam egy egydimenziós vektorba, így könnyen vizsgálhatók a soron következő és az azutáni értékek.
3. A kisebb, ty, ty változókat csak azért vezettem be, hogy ne szoktassalak a globális változók túlzott használatára, voltaképpen helyettesíthetők a szamlalo, x, y változókkal.
4. A függvény visszatérési értékét result helyett a hagyományos módon adom meg, az {$mode objfpc}{$H+} direktíva használata esetén maradhat a result.
5. Néhány próba és ellenpróba (a visszatérési érték megfordítása) alapján úgy látom, a függvényem működik, de ahhoz már kevés a tudományom, hogy hitelesen le tudjam tesztelni. Remélem, SimkoL megint beleártja magát a diskurzusba...
„Igazából az nem tetszik, hogy olyanok nem nagyon kapnak ironikus kritikákat, akik kész megoldásokat várnak, pedig az adott program csak pár sor lenne és az illető egyetlen betűt se tud leírni...”
Bizony-bizony... Az illetők rendszerint gyilkos malíciát kapnak, meg esetleg a reménytelen impotenciájukat lesajnáló, alamizsnaként odavetett programot, amitől semmivel se lesznek okosabbak. Ne emészd magad ilyesmin, igenis nagyra értékeljük, hogy te nem ezt a boldogtalan gyülekezetet gyarapítod, hanem veszed az időt és fáradságot a gondolkodásra, ráadásul láthatólag törekedel arra, hogy takarékos és szép kódot írj.
@#32:
Ööö... ezt vagy nem értem, vagy a fogalmazásbeli pontatlanságom lehet az oka. A megjegyzésben ezt írom:
„(Az üres hely a legnagyobb.)”
Nem gondoltam rá, de ez leginkább úgy érthető, hogy a legmagasabb tömbindex -- különösen annak függvényében, hogy te a magad programjában gondoskodol arról, hogy az üres kocka legyen az utolsó. Én ezt a lépést különösebb ok nélkül (mondjuk, hogy általánosabb legyen), kiszedtem a keverésből, tehát nálam a lik akárhová eshet a táblán. Ilyenformán, ha a könyv algoritmusát sikerült követnem, az üres kocka is részt vesz az értékelésben.
Láthatólag nincs szerencsém a nevezéktannal, amikor az URES konstanst hol a tömb maximumaként, hol az üres kocka értékeként használom. Sokkal értelmesebb lett volna már az elején elkülöníteni, valahogy ilyenformán:
TABLAVEGE = OLDAL * OLDAL;
URES = TABLAVEGE;
...és azután értelemszerűen használni a kettőt (for ty := 1 to TABLAVEGE do), a megjegyzésben meg valamivel egyértelműbben fogalmazni:
„(Az üres helyet a legnagyobb értékű tömbelem jelenti.)”
Mindazonáltal, mivel valójában egy kukkot sem értek az ellenőrzés módszeréből, nem tudom megítélni, hogy az független-e pl. az oldalak méretétől (a könyv csak a hagyományos, 4×4-es tábláról beszél), az oldalméretek párosságától (a próbálkozásaim alapján úgy tűnik, hogy igen) és attól, hogy egyenlők az oldalak, vagy eltérő hosszúságúak. A magam részéről jobban szeretem az eredeti változatomat, amely távol tartja magát az ördögszülte matematikától...
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!