Azt csinálom, csak elfedem az INK 7-tel.csaba írta:Plot-tal kipöttyözni a képernyőre a számokat binárisan?
Fejtörő (2012-2013)
Re: Fejtörő (2012-2013)
Re: Fejtörő (2012-2013)
Szerintem ezek a megoldások 20 perc alatt nem kivitelezhetőek, viszont bámulatos, ahogyan leküzditek a felmerülő akadályokat.
Az elmúlt évek tapasztalati alapján sokkal egyszerűbb, agyafúrt dologra kellene gondolnunk!
Az elmúlt évek tapasztalati alapján sokkal egyszerűbb, agyafúrt dologra kellene gondolnunk!
- 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)
Hát van egy ötletem, de ahhoz nincs sok programírásra szükség. Az idő 23:32, tehát 28 perc van 2013-ig. Egy időzítővel szépen beállítom az egyes kiírások közti időt 2 percre, és szépen egyesével számol a gép még 28 percig. Utána koccintunk, mert már 2013-lesz, és ezzel teljesül is a kívánság! Az egész gyakorlatilag elfér egy parancs-sorban.
PRINT "BUEK" : PRINT 0: PAUSE 6000: PRINT 1: PAUSE 6000: PRINT 2: PAUSE 6000: PRINT 3: PAUSE 6000 : PRINT 2+2: PAUSE 6000: PRINT 5: ....
és így tovább, legalább 14-ig. 1 perc alatt beírható! Üdv. Csipetke
PRINT "BUEK" : PRINT 0: PAUSE 6000: PRINT 1: PAUSE 6000: PRINT 2: PAUSE 6000: PRINT 3: PAUSE 6000 : PRINT 2+2: PAUSE 6000: PRINT 5: ....
és így tovább, legalább 14-ig. 1 perc alatt beírható! Üdv. Csipetke
- 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)
Ha már megírtam, akkor beteszem a második változatomat is, amely vízszintesen írja ki a számokat nullákkal együtt. Space helyett a chr§ 32 használható, a 4 helyett str§ (2+2) vagy a chr§ 52. Az egyes, majd a tízes, százas és ezres helyiértéknek megfelelően írja a soron következő számot. Itt a gépelés tovább tartott, mint kitalálni a megoldást. OVER 1 használatával lehet törölni a régi számot, majd kiírni az újat.
Kód: Egész kijelölése
10 CLS : PRINT AT 5,0: PRINT "BUEK": PRINT AT 7,0: OVER 0: PRINT 0: GO SUB 300: GO SUB 900: OVER 0: PRINT 1: GO SUB 300: GO SUB 900: OVER 0: PRINT 200: GO SUB 100: GO SUB 900: OVER 0: PRINT 2010: GO SUB 900: OVER 0: PRINT 2011: GO SUB 900: OVER 0: PRINT 2012: GO SUB 900: OVER 0: PRINT 2013: PAUSE 0: GO TO 9999
100 GO SUB 900: GO SUB 1001: GO SUB 900: GO SUB 1001: GO SUB 900: GO SUB 1003: GO SUB 900: GO SUB 1003: GO SUB 900: GO SUB 1005: GO SUB 900: GO SUB 1005: GO SUB 900: GO SUB 1007: GO SUB 900: GO SUB 1007: GO SUB 900: GO SUB 1009: GO SUB 900: GO SUB 1009: GO SUB 900: GO SUB 1011: GO SUB 900: GO SUB 1011: GO SUB 900: GO SUB 1013: GO SUB 900: GO SUB 1013: GO SUB 900: GO SUB 1015: GO SUB 900: GO SUB 1015: GO SUB 900: GO SUB 1017: GO SUB 900: GO SUB 1017: GO SUB 900: GO SUB 1019: GO SUB 900: GO SUB 1019: RETURN
200 GO SUB 900: GO SUB 1101: GO SUB 100: GO SUB 900: GO SUB 1101: GO SUB 900: GO SUB 1103: GO SUB 100: GO SUB 900: GO SUB 1103: GO SUB 900: GO SUB 1105: GO SUB 100: GO SUB 900: GO SUB 1105: GO SUB 900: GO SUB 1107: GO SUB 100: GO SUB 900: GO SUB 1107: GO SUB 900: GO SUB 1109: GO SUB 100: GO SUB 900: GO SUB 1109: GO SUB 900: GO SUB 1111: GO SUB 100: GO SUB 900: GO SUB 1111: GO SUB 900: GO SUB 1113: GO SUB 100: GO SUB 900: GO SUB 1113: GO SUB 900: GO SUB 1115: GO SUB 100: GO SUB 900: GO SUB 1115: GO SUB 900: GO SUB 1117: GO SUB 100: GO SUB 900: GO SUB 1117: GO SUB 900: GO SUB 1119: GO SUB 100: GO SUB 900: GO SUB 1119: RETURN
300 GO SUB 900: GO SUB 1201: GO SUB 200: GO SUB 900: GO SUB 1201: GO SUB 900: GO SUB 1203: GO SUB 200: GO SUB 900: GO SUB 1203: GO SUB 900: GO SUB 1205: GO SUB 200: GO SUB 900: GO SUB 1205: GO SUB 900: GO SUB 1207: GO SUB 200: GO SUB 900: GO SUB 1207: GO SUB 900: GO SUB 1209: GO SUB 200: GO SUB 900: GO SUB 1209: GO SUB 900: GO SUB 1211: GO SUB 200: GO SUB 900: GO SUB 1211: GO SUB 900: GO SUB 1213: GO SUB 200: GO SUB 900: GO SUB 1213: GO SUB 900: GO SUB 1215: GO SUB 200: GO SUB 900: GO SUB 1215: GO SUB 900: GO SUB 1217: GO SUB 200: GO SUB 900: GO SUB 1217: GO SUB 900: GO SUB 1219: GO SUB 200: GO SUB 900: GO SUB 1219: RETURN
900 PRINT AT 7,0: OVER 1: RETURN
999 GO TO 9999
1000 REM egyesek kiiratasa
1001 PRINT CHR$ 32+CHR$ 32+CHR$ 32+"0": RETURN
1003 PRINT CHR$ 32+CHR$ 32+CHR$ 32+"1": RETURN
1005 PRINT CHR$ 32+CHR$ 32+CHR$ 32+"2": RETURN
1007 PRINT CHR$ 32+CHR$ 32+CHR$ 32+"3": RETURN
1009 PRINT CHR$ 32+CHR$ 32+CHR$ 32+STR$ (2+2): RETURN
1011 PRINT CHR$ 32+CHR$ 32+CHR$ 32+"5": RETURN
1013 PRINT CHR$ 32+CHR$ 32+CHR$ 32+"6": RETURN
1015 PRINT CHR$ 32+CHR$ 32+CHR$ 32+"7": RETURN
1017 PRINT CHR$ 32+CHR$ 32+CHR$ 32+"8": RETURN
1019 PRINT CHR$ 32+CHR$ 32+CHR$ 32+"9": RETURN
1100 REM tizesek kiiratasa
1101 PRINT CHR$ 32+CHR$ 32+"0": RETURN
1103 PRINT CHR$ 32+CHR$ 32+"1": RETURN
1105 PRINT CHR$ 32+CHR$ 32+"2": RETURN
1107 PRINT CHR$ 32+CHR$ 32+"3": RETURN
1109 PRINT CHR$ 32+CHR$ 32+STR$ (2+2): RETURN
1111 PRINT CHR$ 32+CHR$ 32+"5": RETURN
1113 PRINT CHR$ 32+CHR$ 32+"6": RETURN
1115 PRINT CHR$ 32+CHR$ 32+"7": RETURN
1117 PRINT CHR$ 32+CHR$ 32+"8": RETURN
1119 PRINT CHR$ 32+CHR$ 32+"9": RETURN
1200 REM szazasok kiiratasa
1201 PRINT CHR$ 32+"0": RETURN
1203 PRINT CHR$ 32+"1": RETURN
1205 PRINT CHR$ 32+"2": RETURN
1207 PRINT CHR$ 32+"3": RETURN
1209 PRINT CHR$ 32+STR$ (2+2): RETURN
1211 PRINT CHR$ 32+"5": RETURN
1213 PRINT CHR$ 32+"6": RETURN
1215 PRINT CHR$ 32+"7": RETURN
1217 PRINT CHR$ 32+"8": RETURN
1219 PRINT CHR$ 32+"9": RETURN
9999 :::::::::
A hozzászólást 1 alkalommal szerkesztették, utoljára Csipetke 2013.01.05. 21:28-kor.
- G.o.D.
- Speccyalista
- Hozzászólások: 82
- Csatlakozott: 2012.01.06. 13:37
- Tartózkodási hely: Budapest
- Kapcsolat:
Re: Fejtörő (2012-2013)
A SCREEN$-os megoldás is megy vízszintesen, mert vessző van, csak pontosvessző nincs. Igaz úgy nem bal oldalon kezdődik.
Kód: Egész kijelölése
PRINT AT x,y-1: PRINT OVER 1," é"
PRINT AT x,y-1: PRINT OVER 1," é"
stb.
G.o.D. / AbaddoN
Re: Fejtörő (2012-2013)
Ezzel csak az a bajom, mint az összes korábbi esetben, hogy amint agod írta:A SCREEN$-os megoldás is megy vízszintesen, mert vessző van, csak pontosvessző nincs. Igaz úgy nem bal oldalon kezdődik.
Kód: Egész kijelölése
PRINT AT x,y-1: PRINT OVER 1," é" PRINT AT x,y-1: PRINT OVER 1," é" stb.
Kód: Egész kijelölése
PRINT OVER 1," A"
Kód: Egész kijelölése
PRINT OVER 1," "+SCREEN$(y,x)
kerül, nem fog működni (egy karakter helyett kettőt ír ki, sőt az előtte lévő space-eket is felülírja). Esetleg valami ROM guru megvilágíthatná a jelenség hátterét.

Sőt, az OVER 1-et lehetne akár CHR$ 21+CHR$ 1-gyel is helyettesíteni, akkor nem kellene vesszővel a képernyő közepére ugrasztani az írási pozíciót:
Kód: Egész kijelölése
PRINT CHR$ 21+CHR$ 1+" "+CHR$ 21+CHR$ 0+"A"
De akkor már szebb megoldás lenne a CHR$ 22+CHR$ y+CHR$ x+"SZÖVEG" ami ekvivalens az AT y,x;"SZÖVEG"-gel. De ez is csak addig, amíg nem teszel a szöveg helyére SCREEN$-t...

Ugyanúgy nem nem lehet egy kifejezésben felszorozgatni a képernyőn lévő számjegyeket és így megkapni az aktuális számot (hasonlóan a bináris pöttyözős megoldáshoz), mert ez elméletileg jó:
Kód: Egész kijelölése
PRINT (CODE(SCREEN$(1,0))+COS PI*48)*1000+(CODE(SCREEN$(1,1))+COS PI*48)*100+(CODE(SCREEN$(1,2))+COS PI*48)*10+(CODE(SCREEN$(1,3))+COS PI*48)
Azt hiszem ennek a kulcsa az lesz, hogy megértjük, hogy a SCREEN$ miért így működik.
Re: Fejtörő (2012-2013)
Itt: viewtopic.php?f=34&t=110#p601stp írta: Gyakorlatban azonban csak egy SCREEN$-ig működik, ha egynél többet teszel a kifejezésbe, az hibás működést eredményez.
Azt hiszem ennek a kulcsa az lesz, hogy megértjük, hogy a SCREEN$ miért így működik.
írkáltam javított ROM-okról amit találtam, az egyiknek a leírásában szerepel ilyen: "The 'SCREEN$' error has been corrected by substituting the suggested RET instruction. (at $257D)"
- G.o.D.
- Speccyalista
- Hozzászólások: 82
- Csatlakozott: 2012.01.06. 13:37
- Tartózkodási hely: Budapest
- Kapcsolat:
Re: Fejtörő (2012-2013)
Elsőre a kilépési vizsgálatba egy sorban OR-okkal akartam megírni a kilépési feltételt, amiben az elemi logikai kifejezésekben egy-egy SCREEN$ volt, és ott sem működöt.Zozosoft írta:stp írta: Gyakorlatban azonban csak egy SCREEN$-ig működik, ha egynél többet teszel a kifejezésbe, az hibás működést eredményez.
Azt hiszem ennek a kulcsa az lesz, hogy megértjük, hogy a SCREEN$ miért így működik.
Amúgy van valaki, aki átlagos helyzetben erre használta valamikor is a SCREEN$-t?

G.o.D. / AbaddoN
Re: Fejtörő (2012-2013)
Szerintem ezzel ki is húzhatjuk a SCREEN$-es megoldásokat...Zozosoft írta:"The 'SCREEN$' error has been corrected by substituting the suggested RET instruction. (at $257D)"
Őszintén? Én eddig azt se tudtam, hogy mire való.god írta:Amúgy van valaki, aki átlagos helyzetben erre használta valamikor is a SCREEN$-t?

Na jó, azt hittem, hogy csak a LOAD/SAVE "xyz" SCREEN$-hez használatos.
Mondjuk utoljára olyan 12-13 évesen programoztam Spectrum-ot BASIC-ben...
- 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)
A SCREEN§ egyszer ad csak jó eredményt, de ha ugyan azzal paraméterezve szerepel kétszer, az is használható, hiszen az eredménye azonos, nem okoz hibát. A megoldásomban így használtam, működött. Összetett esetben természetsen már hibát fog eredményezni.
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?
Más:
Az eredeti szövegből idézem:
"BUEK"-kal köszönt, majd 0-tól folyamatosan, egyesével elszámol 2013-ig! Éjfélig le kell futnia számítógépeden, különben ..."
És miközben felénk int karjával, minden elhalványul, újra elcsendesül a szoba. Döbbenten nézünk körbe, egy pillantás az óránkra: "23:32"
Nem sok időnk maradt,... Eddig az idézet.
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! --- 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?!
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?
Más:
Az eredeti szövegből idézem:
"BUEK"-kal köszönt, majd 0-tól folyamatosan, egyesével elszámol 2013-ig! Éjfélig le kell futnia számítógépeden, különben ..."
És miközben felénk int karjával, minden elhalványul, újra elcsendesül a szoba. Döbbenten nézünk körbe, egy pillantás az óránkra: "23:32"
Nem sok időnk maradt,... Eddig az idézet.
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! --- 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?!