Kezdőlap › Fórumok › Programozás › programozás Pascalban
- This topic has 15 hozzászólás, 6 résztvevő, and was last updated 20 years, 8 months telt el by
hop.
-
SzerzőBejegyzés
-
2004-11-07-12:28 #1980515
Közben gondolkoztam és a következõ megoldásra(?) jutottam:
Ugye minden lépés után meg kell vizsgálni, hogy az aki lépett nem teljesítette e a nyerés feltételét. A feltétel itt jelen esetben az, hogy valamilyen irányban egymást követi N db egyforma jel (itt O vagy X).
Tehát, amikor valaki lép, elõször meg kell vizsgálni, hogy van-e körülötte azonos jel. Ezt lehet ciklussal is, meg rekurzívan (talán ez átláthatóbb). kijelölünk egy részt, ahonnan elkezdjük vizsgálni (pld. mindig az aktuális alatt kezdjük és az óramutató járásának megfelelõen addig vizsgáljuk, amég körbe nem érünk).
Nos három lehetséges értéket találhatunk. Egyik, hogy ellentétes jel, ekkor tovább lépünk, a másik, hogy a tábla határa, ebben az esetben is tovább lépünk, a harmadik, hogy azonos jellel találkozunk. Innen egyszerûsödik a dolog, mert csak az adott irányban (pld. a jel az aktuálishoz képest balra helyezkedik el, akkor innentõl csak balra kell lépkedni) egy ciklussal vagy egy rekurzióval kell lépkedni, ami addig fut, amíg
– elérjük az N db egyforma jelet -> ekkor ugye nyerés van
– Nem lesz N db jel, mert ellentétesbe ütközünk, vagy kifutunk a tábláról. -> ekkor folytatni kell az aktuális jel körbejárását, addig, amíg mind a nyolc irányt meg nem vizsgáltuk.2004-11-07-12:47 #1980516Közben gondolkoztam és a következõ megoldásra(?) jutottam:
Ugye minden lépés után meg kell vizsgálni, hogy az aki lépett nem teljesítette e a nyerés feltételét. A feltétel itt jelen esetben az, hogy valamilyen irányban egymást követi N db egyforma jel (itt O vagy X).
Tehát, amikor valaki lép, elõször meg kell vizsgálni, hogy van-e körülötte azonos jel. Ezt lehet ciklussal is, meg rekurzívan (talán ez átláthatóbb). kijelölünk egy részt, ahonnan elkezdjük vizsgálni (pld. mindig az aktuális alatt kezdjük és az óramutató járásának megfelelõen addig vizsgáljuk, amég körbe nem érünk).
Nos három lehetséges értéket találhatunk. Egyik, hogy ellentétes jel, ekkor tovább lépünk, a másik, hogy a tábla határa, ebben az esetben is tovább lépünk, a harmadik, hogy azonos jellel találkozunk. Innen egyszerûsödik a dolog, mert csak az adott irányban (pld. a jel az aktuálishoz képest balra helyezkedik el, akkor innentõl csak balra kell lépkedni) egy ciklussal vagy egy rekurzióval kell lépkedni, ami addig fut, amíg
– elérjük az N db egyforma jelet -> ekkor ugye nyerés van
– Nem lesz N db jel, mert ellentétesbe ütközünk, vagy kifutunk a tábláról. -> ekkor folytatni kell az aktuális jel körbejárását, addig, amíg mind a nyolc irányt meg nem vizsgáltuk.
[align=right][snapback]95466[/snapback][/align]Továbbfejleszthetõ úgy, hogy egy táblába gyûjtöd, hogy melyik mezõt melyik irányba csekkoltad már, a tábla elõre kitölthetõ, ugye a sarki mezóket eleve csak 3 irányba kell ellenõrizni.
2004-11-07-12:55 #1980517Továbbfejleszthetõ úgy, hogy egy táblába gyûjtöd, hogy melyik mezõt melyik irányba csekkoltad már, a tábla elõre kitölthetõ, ugye a sarki mezóket eleve csak 3 irányba kell ellenõrizni.
[align=right][snapback]95471[/snapback][/align]A táblát így definiáld:
Type
CheckTable = Array[n,m] of byte;mivel nyolc ellenõrzendõ irány van mezõnként, így a byte egy-egy bitje kinevezhetõ egy egy iránynak, amiket megfelelõen átbillenthetsz.Ha 12 órától indulun akkor a bal felsõ sarok induláskor így nézhet ki: 00111000
2004-11-08-07:22 #1980518Hhm..
Eddig jó csakhogy én egy egydimenziós rekordos tömben tárolom a lépéseket
lepesek:array[1…4000] of tomb
tomb=record
x:integer
y:integerKezdjem elõlrõl?????????
Az irányokat ebbõl a kordinátákból ellenõrizni és egyezés esetén tárolni nagy szívás.
Mondjuk ha lerajzolom magamnak akkor +-1-esekkel meg lehet csinálni.
De már nem fogom újra kezdeni.
A gond az hogy nem a lépést (X,O) tároltam hanem a kordinátátkat és minden páros az X-et lépet.
De asszem menni fog:
Köszönök mindent.2004-11-08-18:28 #1980519Hhm..
Eddig jó csakhogy én egy egydimenziós rekordos tömben tárolom a lépéseket
lepesek:array[1…4000] of tomb
tomb=record
x:integer
y:integerKezdjem elõlrõl?????????
Az irányokat ebbõl a kordinátákból ellenõrizni és egyezés esetén tárolni nagy szívás.
Mondjuk ha lerajzolom magamnak akkor +-1-esekkel meg lehet csinálni.
De már nem fogom újra kezdeni.
A gond az hogy nem a lépést (X,O) tároltam hanem a kordinátátkat és minden páros az X-et lépet.
De asszem menni fog:
Köszönök mindent.
[align=right][snapback]95653[/snapback][/align]Szerintem ez alapvetõen rossz megközelítés, megoldható így is, de szerintem legalább annyi, ha nem több munka, mintha újrakezdenéd.
Ha lesz egy kis idõm összedobok vmit.2009-12-04-19:56 #1876707Sziasztok! Segítséget szeretnék kérni a kötelezõ programom megírásához. A probléma a következõ:
NxM -es (N és M maximum Nmax) amõba játék szimulálása két játékos
között. A tábla méreteit, és a koordinátákat a standard inputról kell
olvasni. Minden lépés után újra ki kell rajzolni a táblát a standard
outputra (nem az elõzõt kell átrajzolni). A táblán az egyik játékos ‘O’, a
másik ‘X’, az üres mezõk ‘.’-tal vannak jelölve. A program jelezze, ha
valamelyik játékos nyert, vagy a döntetlent ha betelt a tábla.Ha valaki rendelkezik ezzel a programmal, vagy van valami ötlete, szívesen venném, ha segítene vele.
emailcímem: ildi000@freemail.hu -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz