Kezdőoldal » Számítástechnika » Programozás » Pascal-ban hogyan lehetne...

Pascal-ban hogyan lehetne karakteres felületű sudoku-t csinálni? Hogy kell definiálni?

Figyelt kérdés

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.



2017. okt. 31. 19:18
1 2 3 4
 21/33 tabaki ***** válasza:
Na, hogy állsz?
2017. nov. 3. 12:47
Hasznos számodra ez a válasz?
 22/33 A kérdező kommentje:

SimkoL megoldása után úgy éreztem, nem tudok labdába rúgni.

Így feladtam, sajnos.

2017. nov. 4. 11:31
 23/33 A kérdező kommentje:
Nem tudom, mit tudtam volna írni, mert hozzátenni vagy máshogy megoldani semmit nem tudnék az alapján...
2017. nov. 4. 11:31
 24/33 SimkoL ***** válasza:
Dehogynem :) A 'lyuk_helye' eljárás nem kell ha tárolod a helyét - mint ahogy már ez elején is tetted, tettétek. A kiírást a mozgatás során a GoToXY eljárással elkészíteni, hogy ne írja ki az egészet. Van még rajta mit fejleszteni, csak egy próbám volt.
2017. nov. 4. 11:58
Hasznos számodra ez a válasz?
 25/33 tabaki ***** válasza:

„SimkoL megoldása után úgy éreztem, nem tudok labdába rúgni.

Így feladtam, sajnos.”


Engedelmeddel, ez egy marhaság. Nem az a feladat, hogy egy szakember tudásával összemérd a magadét. SimkoL segítő szándékkal szólt bele a beszélgetésbe, nem pedig azért, hogy nyomasztó szakmai fölényével rátehénkedjen a te bimbózó zsengéidre. Leszel szíves tiszteletben tartani a szándékát, a megértett ötleteiből tanulni, a még homályosakat pedig saját kútfőből pótolni a programod megírásakor. Mivel még a legelején tartasz, kissé furcsa lenne leállnod azzal az indokkal, hogy kaptál egy-két tippet.


„hozzátenni vagy máshogy megoldani semmit nem tudnék az alapján”


Pompás hír, ugyanis senki el nem várja tőled, hogy az alapján dolgozz. SimkoL egyébként, tudván, hogy az ötlettelenebb megoldásokat mástól (például tőlem) úgyis megkapod, általában olyasmiket is belecsempész a programjaiba, amik a parasztlogika szerint nem maguktól értetődők. Ezek érdekes és tanulságos fortélyok, de nem jelentik sem azt, hogy ugyanazt a programot ne lenne érdemes unalmasabban is megírni, sem pedig azt, hogy a Mester keze alól csakis felülbírálhatatlan, vitathatatlan bravúrmunkák kerülnek ki, amelyeken már csak rontani lehet. Ugyanazt a programot százféleképpen is meg tudod írni, rajta!

Kivételesen én is olyasmivel próbálkozom, ami SimkoL változatára nem hasonlít túlságosan, de szerintem egy kissé ez is trükkös a maga módján:

[link]

Te meg szintén építgesd a saját programodat, és bátran mutasd is be. A magam részéről megígérhetem, hogy értesítelek, ha nem leszek vele elégedett...

2017. nov. 5. 00:49
Hasznos számodra ez a válasz?
 26/33 A kérdező kommentje:

Nincs igazán ötletem a folytatásra.

Nem gondolom, hogy bárki is fölényeskedett volna azzal, hogy bemutatta saját megoldását.

Leszel szíves nem feltételezni rólam, hogy én mit/hogy gondolhatok és leszel szíves nem előírni, hogy mit és hogyan gondoljak. :-) ;-)

2017. nov. 6. 20:38
 27/33 tabaki ***** válasza:

„Nincs igazán ötletem a folytatásra.”

E bánatos kezdet után pompásan ül a váratlan csattanó: „leszel szíves nem előírni, hogy mit és hogyan gondoljak. :-) ;-)”

Távol álljon tőlem, hogy pórázon tartsam a gondolataidat, de azt hiszem, egy embertársamtól joggal várhatom el, hogy egyáltalán gondoljon valamit. Ennek érdekében mégiscsak hasznosnak látom néhány tippecske formájában egy kevés olajat csöpögtetni a megszorult kerekek közé.


1. Ha jól értem, SimkoL keverési módszerének van egy kifogásolható vonása: A számok véletlenszerű beírásával bármilyen keveredés előállhat. Ezzel az a gond, hogy tologatással a lehetséges elrendezéseknek csak a fele állítható sorrendbe, a többi rendezhetetlen. Ezt én a saját programomban egy parasztos, ugyanakkor bombabiztos megoldással küszöböltem ki (hogyan is?), de van más lehetőség is, például, hogy keverés után ellenőrzöd, hogy rendezhető-e a helyzet, és ha nem, akkor újra keversz. Erre például ebben a réges-régi könyvben találsz egy viszonylag egyszerűen lekódolható algoritmust, érdekes lehet kipróbálni:

file:///home/tabaki/Dokumentumok/szoveg/tanulo/basic/csakany-vajda/jatekok_szamitogeppel.htm#3_1_1

Természetesen nem muszáj, és még az is elképzelhető, hogy most még túl nagy falatnak találod. Nem baj, nézzünk egyszerűbbet.


2. Mindkettőnk programjában színváltoztatással jelezzük, ha egy-egy szám a megfelelő helyre került. De megoldható, hogy a program azt is észrevegye, ha sikerült a teljes elrendezés, gratuláljon, és ezek után maga fejeződjön be, ne várjon az erőszakos kilépésre.


3. A játék befejezése után a program rákérdezhet, hogy akarsz-e még egy partit, és csak akkor lép ki, ha nem, egyébként újat indít.


4. A játék során számlálhatod a megtett lépéseket, és rekordtáblázatot írhatsz ki kilépéskor. Az értékelést fájlba mentheted. Lehet két játékos is, és a program váltakozva hol ennek, hol amannak az eredményeit könyveli, kilépéskor értékel.


5. Ha nem megy a megoldás, az abbahagyott játékot egyszerű kilépés helyett pontlevonással szankcionálhatod. Két játékos esetén lehetőséget adhatsz arra, hogy az egyik által feladott játékot a másik átvegye, így pontokat rabolhasson.


6. Átírhatod megjelenítést, például a SimkoL által is javasolt GotoXY() használatával, így mindig csak az éppen kicserélendő két számot kell újraírnod.


7. Csinosíthatod a táblát, mondjuk úgy, hogy a kockáknak alapszínt adsz, esetleg sakktáblaszerűen váltogatva a színezést. Ez mind GotoXY() használatával, mind anélkül eléggé érdekes feladvány.


Mindezen példák még a karakteres képernyő lehetőségein belül maradnak, de szerintem bőven adnak töprenkedni valót, úgyhogy ne érezd úgy, hogy kirántottuk a szőnyeget a lábad alól a „megoldással” -- ezért is írtam előzőleg, hogy szerencsésen választottál, mert ez a program fokról-fokra sokáig építgethető, nem túl bonyolult részfeladatok hozzátoldásával. Remélem, menet közben saját ötleteid is támadnak. Ha nem, az se nagy ügy, majd kitalálunk még valamit...

2017. nov. 6. 23:40
Hasznos számodra ez a válasz?
 28/33 tabaki ***** válasza:

Híjj, be csúnya melléfogás, elfelejtettem, hogy az említett könyvet már letöltöttem, és az volt megnyitva a böngészőmben :) Itt az eredeti:

[link]

2017. nov. 7. 01:04
Hasznos számodra ez a válasz?
 29/33 A kérdező kommentje:

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...

Nem voltam különösképpen bánatos a folytatást illető tanácstalanság miatt. :-)


Egy függvényt írtam a belinkelt könyv alapján, ami elvileg megállapítja a keverésről, hogy megvalósítható -e.

Az if... else megoldást azért alkalmaztam, mert a könyvben ismertetett példa szerint ha megtaláljuk a lyukat, akkor is kell egyet adni hozzá.

Case-vel elegánsabb lenne meghatározni, de amikor egyszer régen akartam, nem működött sehogy, mert "egyértelműen meg kellett határozni az értékeket case esetén.


Már a legelső ciklusról gyanítom, hogy sajnos nem jó, nem tudom, hogy mi a megoldás...

Illetve az első ciklusnak nem ciklusnak kellene lennie, hanem figyelni, hogy első sorban 2 értéktől menjen, de az összes többiben 1 értéktől (?)


function megvalosithato_e : boolean;

var

szamlalo, i, j, n : byte;

begin

szamlalo := 0;

n := tabla[1,1];

for i := 2 to oldal do

for j := 1 to oldal do

begin

if (tabla[i,j] <> 0) then begin

if tabla[i,j] < n then inc(szamlalo);

end

else

inc(szamlalo);

end;

if szamlalo mod 2 = 0 then

result := true else result := false;

end;

2017. nov. 7. 08:01
 30/33 A kérdező kommentje:

Előfordulhat, hogy félreértetted, amit írtam előzőleg, nem a programozással kapcsolatos gondolatokra utaltam ezzel, hanem az alábbi idézetre reagáltam:


"SimkoL segítő szándékkal szólt bele a beszélgetésbe,

nem pedig azért, hogy nyomasztó szakmai fölényével rátehénkedjen a te bimbózó zsengéidre. Leszel szíves tiszteletben tartani a szándékát, a megértett ötleteiből

tanulni, a még homályosakat pedig saját kútfőből pótolni a programod megírásakor."


Erre az idézetre gondoltam, gondolatolvasóként aposztrofáltad magad, mintha tudnád: milyen érzéseket, gondolatokat váltott ki belőlem az, hogy tippeket kaptam és meg szeretnéd szabni, miként viszonyuljak, hogy/hogy ne érezzek...

Nem a programozást illető gondolkodásra utaltam, az idézet második fele erről szól, de nem erre gondoltam.

2017. nov. 7. 08:40
1 2 3 4

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!