Fejtörő (2016-2017)

Mókás, de direkt dögnehéz programozási feladványok Spectrumra
Kiki
Speccyalista
Hozzászólások: 34
Csatlakozott: 2012.01.09. 01:26

Re: Fejtörő (2016-2017)

Hozzászólás Szerző: Kiki » 2017.01.14. 19:58

Gyere Gyuri, ne csigázz minket tovább!

Avatar
Pgyuri
Speccyalista
Hozzászólások: 448
Csatlakozott: 2012.01.06. 13:34

Re: Fejtörő (2016-2017)

Hozzászólás Szerző: Pgyuri » 2017.01.15. 13:17

Üdv Minden Kedves Fejtörőnek!

Köszönöm a lelkes figyelést, töprengést és külön köszönet a programozási megoldásokért, amelyek természetesen elfogadhatók, hiszen a kiírás szerinti feltételeket teljesítették, bár érezhető, hogy valahol máshol bújhatott meg a megoldás kulcsa.

A problémát mindenki azonnal érezhette, ki kicsit is jártas a Spectrum billentyűzetének használatában, hiszen a T betű meghibásodása pont (minő véletlen!) az RND függvény beírását tette lehetetlenné. Utána ott volt még a "2-3 perces" feltétel, amely előre vetítette, hogy itt nincs idő zseniális algoritmuson töprengeni és azt begépelni.

Mi lehetett akkor a megoldás ?

A Spectrum BASIC időnként megviccelheti rajongóit, de bocsássuk ezt meg neki. Nincs más teendő, mint grafikus módba váltani a kurzort (Caps shift és 9) majd a V lenyomására meg is jelenik az RND függvény, amellyel tényleg 2-3 perc alatt meg is írhatjuk a programunkat az új év köszöntésére!

A szakmai magyarázat annyi, hogy grafikus módban "A"-tól "U" karakterekig állnak rendelkezésre szabadon definiálható karakterek (UDG - erről részletesebben a következő TV BASIC különkiadásban lesz szó az SpV hamarosan megjelenő számában), tehát a fennmaradó néhány, teljesen érhetetlenül elvett karakter esetén meglepő módon néhány függvény jelenik meg, amit e fejtörő ki is használt.


Találkozzunk 2017-ben is!

Pgyuri

Kiki
Speccyalista
Hozzászólások: 34
Csatlakozott: 2012.01.09. 01:26

Re: Fejtörő (2016-2017)

Hozzászólás Szerző: Kiki » 2017.01.15. 18:54

Khmmm... szép. Bevallom őszintén, kicsit másra számítottam :oops: . Mondjuk azt nem tudom, hogy nekem erre a megoldásra hogyan kellett volna rájönnöm. Gondolom már régebben itt a fórumon valahol meg lett említve, én bevallom nem emlékszem rá, de mindig öröm látni ilyen érdekességeket a Speccyvel kapcsolatban, melyek létéről fogalmam sincs :o . Viszont nagyon tetszettek a alternatív megoldások, gratulálok hozzá mindenkinek! Neked is köszi Gyuri, megint tanultam valamit!

hpeter
Web Team
Hozzászólások: 34
Csatlakozott: 2012.01.07. 00:25

Re: Fejtörő (2016-2017)

Hozzászólás Szerző: hpeter » 2017.01.15. 20:36

Meglepő megoldás, mint várható volt! Én erről sajnos sose hallottam! :)

Avatar
csege
Speccyalista
Hozzászólások: 179
Csatlakozott: 2012.01.06. 15:15
Tartózkodási hely: Föld.Naprendszer.Tejút

Re: Fejtörő (2016-2017)

Hozzászólás Szerző: csege » 2017.01.15. 23:11

Jellegzetes Pgyuris rejtvény-fejtvény!
Gratula a rébusz kiötlőjének!

Viszont akkor egy kérdésem lenne a Sinclair gépek lelkivilágát ismerőkhöz:
Írtam anno, hogy talán meg lehetne hívni az rnd függvényt a romból direktben.
Láttam is ilyen értékadást, ami talán itt is használható lehetne:
LET A=USR [gépi kód cime]

Két problémát találtam a kérdéssel kapcsolatban:
Az egyik, hogy a rom rutinok között nem leltem az RND függvényt, csak a RAND szerepel a táblázatokban. (RND, vagy RANDOMISE?)
A másik, hogy én ilyen értékadást még nem láttam, és el nem tudom képzelni, hogy honnan tudja az interpreter, mit, és hol kapott vissza a gépi kódtól? Hogy lesz ebből 0 és 1 közötti szám?

Vagy teljesen beteg az ötlet?

csaba
Speccyalista
Hozzászólások: 142
Csatlakozott: 2012.01.09. 19:18
Rádióamatőr hívójel: HG5BMU
Tartózkodási hely: Surány
Kapcsolat:

Re: Fejtörő (2016-2017)

Hozzászólás Szerző: csaba » 2017.01.16. 10:05

Elismerésem! erre nem jöttem volna rá magamtól.
De legalább egy olyan rom hiba ami adott esetben előny lehet.

Avatar
makranc
Speccyalista
Hozzászólások: 226
Csatlakozott: 2012.01.11. 11:00
Tartózkodási hely: Budapest, III.

Re: Fejtörő (2016-2017)

Hozzászólás Szerző: makranc » 2017.01.16. 12:14

Amúgy RND kiváltható VAL CHR$ 165 -tel,
LET a = RND ugyanaz, mint LET a = VAL CHR$ 165

Avatar
Pgyuri
Speccyalista
Hozzászólások: 448
Csatlakozott: 2012.01.06. 13:34

Re: Fejtörő (2016-2017)

Hozzászólás Szerző: Pgyuri » 2017.01.16. 15:56

Üdv,

Az RND, mint függvény, nem hívható meg a ROM-ban közvetlenül (a $25F8 címen van belépés az értelmezőnek), mert nem lett felkészítve ilyen visszatérésre, mindenképpen elszállást ad, még ha a $25FD címen lépünk is be. Nem is lenne értelme, mert az USR függvényen át csak a BC regiszterpár értéke kapható vissza, ami egész szám 0-65535 között, míg az RND törtszámot generál.

Maga a véletlenképzés az alábbiak szerint történik (könyv alapján):

1; SEED rendszerváltozó (2 byte-os) lehívása
2; (SEED+1) érték * 75
3; eredmény mod 65537 kiszámítása
4; maradék-1
5; eredmény * 2
6; tárolás a SEED-ben
7 kitevő = 0, akkor kész kitevő = 1, akkor eredmény/65536

??? Makranc barátunk, ha ilyen jó megoldásod is volt, akkor miért nem osztottad meg velünk még a "verseny" alatt ???

Pgyuri

Avatar
Zozosoft
Speccyalista
Hozzászólások: 673
Csatlakozott: 2012.01.06. 14:03
Kapcsolat:

Re: Fejtörő (2016-2017)

Hozzászólás Szerző: Zozosoft » 2017.01.16. 16:09

Nekem ami még eszembe jutott: a billentyű mátrix jellegzetessége az, hogy ha egy négyszög három sarkán lévő gombokat lenyomjuk, akkor a negyedik sarkon lévő gomb is "lenyomódik". Tehát elvileg a például az E,M,B gombok hatására megjelenik a T is lenyomva. Gyakorlatban viszont nem tudom, hogy ilyen többszörös gombnyomás esetén érvényesülni tudna-e az fránya RND is.
Emulátoron még az is kérdéses, hogy ezt a jelenséget emulálják-e, ill. hogy a többszörös gomb lenyomást hogyan viseli el a PC billentyűzet.
(Anno EP-n billentyűzet tesztelő progival játszottam azt, hogyan lehet a legkevesebb valódi gomb lenyomásával elérni azt, hogy minden gombot lenyomottnak lásson a gép :-) )

Avatar
makranc
Speccyalista
Hozzászólások: 226
Csatlakozott: 2012.01.11. 11:00
Tartózkodási hely: Budapest, III.

Re: Fejtörő (2016-2017)

Hozzászólás Szerző: makranc » 2017.01.16. 16:50

Pgyuri írta:ha ilyen jó megoldásod is volt, akkor miért nem osztottad meg velünk még a "verseny" alatt ???
Most olvastam a Basic és gépi kódú programozás c. örökbecsű könyvben.
8-20. rész :)

Válasz küldése

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég