Fejtörő (2012-2013)

Mókás, de direkt dögnehéz programozási feladványok Spectrumra...
Avatar
stp
Hozzászólások: 32
Csatlakozott: 2012.01.06. 13:39
Tartózkodási hely: Debrecen

Re: Fejtörő (2012-2013)

Hozzászólás Szerző: stp »

Csipetke írta:Nekem nagyon tetszik a bináris számlálás, de valamiért nem áll meg 2013 kiírása után, hanem azonnal előről kezdi. Benne van a határ, de mégsem áll meg, nem lesz az INK visszaállítva feketére. Mi ennek az oka?
Nem tudom, nekem jól működik. A mellékelt TZX-et próbáltad?
Csipetke írta: Nincs benne szó számlálóról! Csak számlálásról, és meddig? 2013-ig, azaz 28 percen keresztül. Nincs megadva még a számlálás sebessége sem, és ez azt jelenti, hogy történhet akár 5 percenként is a következő szám megjelenítése. Vajon miért adta meg az időpontot?
Ha a ! jel helyett csak vesszőt írt volna, azonnal kidrül a turpisság, de kicsit bezavart engem az "elszámol", mert a csak "számol" pontosabb lett volna. Ez egyben könnyítette volna a megfejtést. Ez a kis "el" igekötő zavart meg, mert automatikusan feltételezi a határt, a 2013-at. Arra viszont még az első olvasáskor nem gondoltam, mert alább írta csak a "23:32" őt, hogy ezt időben érti!
Szerintem pont az "elszámol" szó használata miatt kell 0-2013-ig pörgő számlálóra gondolni, aminek 2013.01.01 00:00:00 előtt le kell futnia.
Csipetke írta: --- Nagyon rafinááált! Minden apróságra nagyon kell figyelni Pgyuri feladványaiban! Már nagyon kíváncsi vagyok arra, hogy pontosan mire gondolt?!
Én is attól tartok, hogy sokkal egyszerűbb lesz a megoldás, mint gondoltuk. Valahogy egyik megoldás se passzol Pgyuri feladatainak szellemiségéhez. :)
Bár ez a feladat egy kicsit másabb is talán mint az eddigiek. Éppen ezért nem is gondolkodom olyanban mint pl. PRINT USR használatával a ROM szubrutinjainak felhasználása. Bár nincs kizárva, hogy lenne olyan rész, ami felhasználható ilyen célra.
A hozzászólást 1 alkalommal szerkesztették, utoljára stp 2013.01.03. 14:23-kor.
Avatar
Zozosoft
Speccyalista
Hozzászólások: 805
Csatlakozott: 2012.01.06. 13:03
Kapcsolat:

Re: Fejtörő (2012-2013)

Hozzászólás Szerző: Zozosoft »

Ha minden apróságra figyelünk, akkor megjegyzem, hogy ilyen fólia hiba nem is lehetséges, mert a billentyű mátrixban nem egy sorban/oszlopban vannak a hibás gombok :-)
Ha ezek nem működnek, akkor egy csomó másik se.
Avatar
stp
Hozzászólások: 32
Csatlakozott: 2012.01.06. 13:39
Tartózkodási hely: Debrecen

Re: Fejtörő (2012-2013)

Hozzászólás Szerző: stp »

Zozosoft írta:Ha minden apróságra figyelünk, akkor megjegyzem, hogy ilyen fólia hiba nem is lehetséges, mert a billentyű mátrixban nem egy sorban/oszlopban vannak a hibás gombok :-)
Ha ezek nem működnek, akkor egy csomó másik se.
Lehet, hogy nem a vezetéknél szakadt meg, csak a gombok alatt törött/oxidálódott a vezető réteg. Én jártam így, nekem a folyamatos QAOPM használat miatt az M billentyű nem működött.
Mondjuk az esély ennyi billentyű hasonló meghibásodására valóban csekély. :)
Avatar
Csipetke
Tiszteletbeli tag
Hozzászólások: 29
Csatlakozott: 2012.10.25. 03:19
Tartózkodási hely: Budapest, Széna tér

Re: Fejtörő (2012-2013)

Hozzászólás Szerző: Csipetke »

Ez volt a legelső, még 2012-ben kitalált megoldásom. Akkor még én is azt gondoltam, hogy számlálót kell készíteni, de aztán elbizonytalanodtam, és okkal. A határ nem a számlálásra vonatkozott, mint számra, hanem szerintem időre, tehát 2013-ig, azaz még 28 percig számoljon egyesével. Utólag gondoltam ezt, amikor a 23:32 időt is írta. Vajon miért elsőnek írja ki a BUEK -ot, és miért nem a 2013 bekövetkeztekor? Szrintem azért, mert ki tudja, hogy mely gyakorisággal fog a számok kiíratása megtörténni. Ha tovább számol a program az nem baj, de futnia kell 28 percig, azaz 2013-ig.

Első nekifutásra sikerült is egy számlálót megalkotni, de utólag írta ki a BUEK-ot. Gondoltam, hogy így elegánsabb. A feladat szerint viszont elsőnek köszönt. Ezt vajon miért kell így tenni? .... Hát mert a számlálás határa nem számra, hanem időre vonatkozik! Ez időzített számkiírással valósítható meg, akár egyetlen parancs-sorban. Sajnos kicsit elbonyolítottuk a megoldást, de ha már így lett, akkor talán érdemes megmutatnom az első, és legkorábban működő változatot. Az 500-as sorral időzítem, hogy jobban követhető legyen a számok kiírása. Ez volt az a 4 soros változat, amiről írtam. Az 5. sort és a hívását is utólag tettem bele.

Még annyit, hogy a PRINT AT paraméterezése kezdetben átlós kiíráshoz készült, hogy lássam, lehet-e egy sorba íróra alakítani. Nem lehet egyszerűen, és azért nem is javítottam ki, ha úgysem számít! Üdv. Csipetke

Kód: Egész kijelölése

10 CLS : PRINT AT 6,6: PRINT 0: GO SUB 300: PRINT AT 6,6: PRINT 1: GO SUB 300: PRINT AT 6,6: PRINT 2: PRINT AT 7,7: PRINT 0: GO SUB 100: PRINT AT 8,8: PRINT 1: PRINT AT 9,9: PRINT 0: GO SUB 500: PRINT AT 9,9: PRINT 1: GO SUB 500: PRINT AT 9,9: PRINT 2: GO SUB 500: PRINT AT 9,9: PRINT 3: PRINT AT 5,5: PRINT "BUEK": PAUSE 0: RUN

100: PRINT AT 9,9: PRINT 0: GO SUB 500: PRINT AT 9,9: PRINT 1: GO SUB 500: PRINT AT 9,9: PRINT 2: GO SUB 500: PRINT AT 9,9: PRINT 3: GO SUB 500: PRINT AT 9,9: PRINT (2+2): GO SUB 500: PRINT AT 9,9: PRINT 5: GO SUB 500: PRINT AT 9,9: PRINT 6: GO SUB 500: PRINT AT 9,9: PRINT 7: GO SUB 500: PRINT AT 9,9: PRINT 8: GO SUB 500: PRINT AT 9,9: PRINT 9: GO SUB 500: RETURN

200: PRINT AT 8,8: PRINT 0: GO SUB 100: PRINT AT 8,8: PRINT 1: GO SUB 100: PRINT AT 8,8: PRINT 2: GO SUB 100: PRINT AT 8,8: PRINT 3: GO SUB 100: PRINT AT 8,8: PRINT (2+2): GO SUB 100: PRINT AT 8,8: PRINT 5: GO SUB 100: PRINT AT 8,8: PRINT 6: GO SUB 100: PRINT AT 8,8: PRINT 7: GO SUB 100: PRINT AT 8,8: PRINT 8: GO SUB 100: PRINT AT 8,8: PRINT 9: GO SUB 100: RETURN

300: PRINT AT 7,7: PRINT 0: GO SUB 200: PRINT AT 7,7: PRINT 1: GO SUB 200: PRINT AT 7,7: PRINT 2: GO SUB 200: PRINT AT 7,7: PRINT 3: GO SUB 200: PRINT AT 7,7: PRINT (2+2): GO SUB 200: PRINT AT 7,7: PRINT 5: GO SUB 200: PRINT AT 7,7: PRINT 6: GO SUB 200: PRINT AT 7,7: PRINT 7: GO SUB 200: PRINT AT 7,7: PRINT 8: GO SUB 200: PRINT AT 7,7: PRINT 9: GO SUB 200: RETURN

500: PAUSE 1: RETURN
A hozzászólást 1 alkalommal szerkesztették, utoljára Csipetke 2013.01.05. 21:26-kor.
Avatar
Csipetke
Tiszteletbeli tag
Hozzászólások: 29
Csatlakozott: 2012.10.25. 03:19
Tartózkodási hely: Budapest, Széna tér

Re: Fejtörő (2012-2013)

Hozzászólás Szerző: Csipetke »

Éppen ezért nem is gondolkodom olyanban mint pl. PRINT USR használatával a ROM szubrutinjainak felhasználása. --- Már azért se, mert nem lehet beírni! --- Szerintem már jöjjön Pgyuri!
Avatar
Csipetke
Tiszteletbeli tag
Hozzászólások: 29
Csatlakozott: 2012.10.25. 03:19
Tartózkodási hely: Budapest, Széna tér

Re: Fejtörő (2012-2013)

Hozzászólás Szerző: Csipetke »

Zozosoft írta:Ha minden apróságra figyelünk, akkor megjegyzem, hogy ilyen fólia hiba nem is lehetséges, mert a billentyű mátrixban nem egy sorban/oszlopban vannak a hibás gombok :-)
Ha ezek nem működnek, akkor egy csomó másik se.
Ez igaz, de egy feladványban bármilyen hiba "előírható". Attól izgalmas a dolog! Az, hogy egy ilyen hibának valószínűsége gyakorlatilag 0, az is igaz.
Avatar
stp
Hozzászólások: 32
Csatlakozott: 2012.01.06. 13:39
Tartózkodási hely: Debrecen

Re: Fejtörő (2012-2013)

Hozzászólás Szerző: stp »

Csipetke írta:Már azért se, mert nem lehet beírni!
Igaz is, ezt benéztem.
Csipetke írta:Szerintem már jöjjön Pgyuri!
Nekem sincs több ötletem, úgyhogy felőlem is jöhet. :)
hpeter
Alapító tag
Hozzászólások: 42
Csatlakozott: 2012.01.06. 23:25

Re: Fejtörő (2012-2013)

Hozzászólás Szerző: hpeter »

Sokat nem foglalkoztam vele, de érdeklődve várom a megoldást én is. :) Úgy látszik az idei feladvány picit elvontabbra sikerült, az eddigieket, ha jól emlékszem, többé-kevésbé sikerült megfejteni.
Avatar
Pgyuri
Alapító tag
Hozzászólások: 597
Csatlakozott: 2012.01.06. 12:34

Re: Fejtörő (2012-2013)

Hozzászólás Szerző: Pgyuri »

Üdv és boldog új évet mindenkinek!

Örömmel látom, hogy ez a fejtörő sokunkat megmozgatott és hamar működő megoldásokat tett le az újév asztalára.

Elsőként G.o.D.-nak gratulálok, aki már a megjelenés napján elküldte működő programját, így szerencsére megmentett minket a ..... :) Aztán Csipetke és stp megoldásai mellé is jár a kézfogás és meghajlás, nagyon jó és érdekes megoldásokat mutattak be, mindkettőjük lelkesedése külön dícséretet érdemel. Nagyon köszönöm :)

Ez volt az első olyan fejtörő, amelyet még magamnak is meg kellett fejtenem. A lényege az volt az alapötletnek, hogy legyen letiltva minden betöltési lehetőség, valamint, hogy ne legyen egyszerű a feladat, a FOR, READ, LET triumvirátus működésképtelensége gondoskodott a nehezítésről, a POKE elmaradása már csak a végső akadályt adta. A többi nehézségről maga a billentyűzet elrendezése és a Spectrum gondoskodott.

Innentől nyitott volt a feladat minden megoldásra, jómagam hamar megelégedtem a "hagyományosnak" mondható SCREEN$ használatával. (A Spectrum ROM programja hibás a SCREEN$ kezelésében, az eredményt kétszer tárolja a veremben egy hibás visszatérés miatt, ezért nem lehet többet összeszervezni egy kiértékelésen belül)

Tetszett a PLOT-POINT párosítás, a GOSUB szervezés, a

1 PRINT "BUEK"
2 PRINT "0000"
3 PRINT "0001"
4 PRINT "0002"
.
.
2015 PRINT "2013"

megoldás kizárásáért született az időkorlátozás a feladványban, azaz "alig 20 percünk maradt". Ennyi sort nem lehet beírni a Spectrumba ilyen rövid időn belül, ahogy Mópi rá is érzett. A memóriába épp befért volna, 2015*12 byte = 24180 byte, de már pozícionált kiírásra nemigen lett volna lehetőség.

A SPACE "elhalása" mindössze azért került be, hogy még izgalmasabb legyen a vége a történetnek, mert így -BREAK nélkül- tényleg csak egy lehetőségünk maradt a futtatásra éjfélig.

A végén kicsit túlgondolkodtátok a feladványt - ami persze nem baj, sőt ellenkezőleg! De nem volt benne más, csak az, amiről szólt. Ha megfigyeltétek, mindig olyan feladványt adok, hogy BASIC-ben kelljen megoldani, így bárki bátran gondolkozhasson. A Spectrum BASIC-je nagyon rugalmas és rendkívül sok finom megoldást kínál, nem árt néha eljátszani vele.

Az pedig, hogy ki állt a fényben és mi történt volna, ha nem születik megoldás, a fantáziánkra van bízva...

Pgyuri
Avatar
stp
Hozzászólások: 32
Csatlakozott: 2012.01.06. 13:39
Tartózkodási hely: Debrecen

Re: Fejtörő (2012-2013)

Hozzászólás Szerző: stp »

Szia!

Boldog új évet!

Köszönöm szépen, hogy pár napra ismét a Spectrum (emulátor) elé ragadtam. Már el is felejtettem, hogy milyen remek programokat lehet ezen a gépen BASIC-ben írni.
Lezárt

Vissza: “Feladványok, fejtörők”