Kleine BASIC-Knobelei

Es gibt 117 Antworten in diesem Thema, welches 18.773 mal aufgerufen wurde. Der letzte Beitrag (18. Mai 2023 um 20:36) ist von Endurion.

  • Da ich das Prinzip aus alten Magazinen und BBS kenne und hier noch nichts dazu gefunden habe (wenn es sowas denn doch gibt, bitte Link posten und Thread schließen), hier mal ein Thread mit kleinen BASIC-Knobeleien.

    Das Spielprinzip ist folgendes:

    - jemand veröffentlicht ein kleines (LISTbares!) BASIC-Programm < 20 Zeilen.

    - alle, die mitspielen möchten, versuchen herauszufinden, was dieses BASIC-Programm macht (-> OHNE ES ZU STARTEN!)

    - derjenige, der es korrekt herausfindet, postet sein prognostiziertes Ergebnis und darf nach Bestägigung durch den Rätselersteller die nächste Knobelei posten oder an jemanden seiner Wahl abgeben

    - damit es nicht zu einfach wird, sollte man sein Programm natürlich obfuskieren, d.h. die tatsächlichen Abläufe verschleiern. Da alles in BASIC erfolgt und für jedermann per LIST einsehbar ist, muss man da kreativ werden.

    - mein erstes Beispiel ist sehr simpel und leicht zu lösen, aber ich bin mir sicher, dass da noch wesentlich kreativere Entwürfe möglich sind!

    - Regeländerungen, die das Spiel verbessern, sind jederzeit gerne gesehen.

    - Es geht darum, Spaß zu haben und was zu daraus zu lernen! Also bitte auf (abgesehen vom Obfuskären) lesbaren Code achten! ;)

    Also nun, die erste Knobelei zum Lösen:

    Code
    100 a$="150040":l=len(a$)
    105 dim a(l)
    110 for il=1tol
    120 a(il)=val(mid$(a$,il,1))*8^(l-il)
    125 p1=p1+a(il)
    130 next il
    140 x=x+1:x=xand255:y=255-x
    160 pokep1,x
    170 pokep1+1,x
    180 goto140

    Wer weiß es? Was macht das PRG?

  • Das Y in Zeile 140 macht keinen Sinn (wird nicht verwendet, löst nichts aus). Sehe ich das richtig?

    Arndt

    GoDot C64 Image Processing
    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.

  • Das Y in Zeile 140 macht keinen Sinn (wird nicht verwendet, löst nichts aus). Sehe ich das richtig?

    Arndt

    Seh ich genau so. Vielleicht gehört es eigentlich in Zeile 170?

  • Es färbt den Bildschirmrand schwarz

    Gruß & Kuss zum Wochenschluss,
    Holy Moses/Role

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um dieses Medienelement zu sehen.

  • Es kommt ein ?ILLEGAL QUANTITY ERROR IN 160, weil bereits in Schleife 2 für p1 ein Wert von >65535 erreicht wird.

    Früher waren 64k unglaublich viel, heute reicht es nicht mal mehr für "Hello, world!".

  • Es kommt ein ?ILLEGAL QUANTITY ERROR IN 160, weil bereits in Schleife 2 für p1 ein Wert von >65535 erreicht wird.

    Wow. Und das hast du im Kopf durchgerechnet?

  • Es kommt ein ?ILLEGAL QUANTITY ERROR IN 160, weil bereits in Schleife 2 für p1 ein Wert von >65535 erreicht wird.

    Wow. Und das hast du im Kopf durchgerechnet?

    Naja, Taschenrechner benutzt :wink: Aber das geht sogar im Kopf, denn in Schleife 2 passiert in Zeile 120 das:

    Code
    120 a(2)=VAL("5")*8^4
    130 p1=p1+a(2)

    Früher waren 64k unglaublich viel, heute reicht es nicht mal mehr für "Hello, world!".

  • Ich finde die Idee an sich ganz gut und bestimmt auch unterhaltsam.

    Allerdings würde ich bei einem BASIC-Listing POKE und PEEK ausschließen. Das "lenkt" eher vom reinen Knobeln ab. Dafür muss man nämlich wissen, was welche Adresse im System macht. Das hat für mich dann nichts mehr mit BASIC-Knobeln zu tun. ;)

  • Ich finde die Idee an sich ganz gut ud bestimmt auch unterhaltsam.

    Allerdings würde ich bei einem BASIC-Listing POKE und PEEK ausschließen. Das "lenkt" eher von reinen Knobeln ab. Dafür muss man nämlich wissen, was welche Adresse im System macht. Das hat für mich dann nichts mehr mit BASIC-Knobeln zu tun. ;)

    Das stimmt. Man braucht sehr spezifisches C64-Wissen, um darauf zu kommen, was hier passiert. Das konnte ich auch nur durch ausprobieren ermitteln.

    Das ist mehr C64-Hardware-Knobeln als BASIC-Knobeln.

    Das sollte man dann vielleicht im Titel anpassen. Dann wissen die Basic-Programmierer anderer Rechner, dass sie hier raus sind.

  • Ich finde die Idee an sich ganz gut und bestimmt auch unterhaltsam.

    Allerdings würde ich bei einem BASIC-Listing POKE und PEEK ausschließen. Das "lenkt" eher vom reinen Knobeln ab. Dafür muss man nämlich wissen, was welche Adresse im System macht. Das hat für mich dann nichts mehr mit BASIC-Knobeln zu tun. ;)

    Und ich dachte ich bin einfach zu blöd für sowas. Und alle anderen wissen wieder mal was wo im Rechner steht nur ich nicht.:schande:

  • Ich finde die Idee an sich ganz gut und bestimmt auch unterhaltsam.

    Allerdings würde ich bei einem BASIC-Listing POKE und PEEK ausschließen. Das "lenkt" eher vom reinen Knobeln ab. Dafür muss man nämlich wissen, was welche Adresse im System macht. Das hat für mich dann nichts mehr mit BASIC-Knobeln zu tun. ;)

    Da geb ich Dir recht. Also gerne ohne POKE/PEEK.

    Ich geb mal ab an den nächsten, der will. Muss überraschend für einige Tage verreisen und werde keine Zeit fürs Internet haben.

    Lösung:

    Spoiler anzeigen

    A$ ist oktal, wird umgerechnet in 53280/53281 und damit per Schleife die Bildschirmfarben durchgepokt.

  • Ich finde die Idee an sich ganz gut und bestimmt auch unterhaltsam.

    Allerdings würde ich bei einem BASIC-Listing POKE und PEEK ausschließen. Das "lenkt" eher vom reinen Knobeln ab. Dafür muss man nämlich wissen, was welche Adresse im System macht. Das hat für mich dann nichts mehr mit BASIC-Knobeln zu tun. ;)

    Da geb ich Dir recht. Also gerne ohne POKE/PEEK.

    Ich geb mal ab an den nächsten, der will. Muss überraschend für einige Tage verreisen.

    War denn die Lösung jetzt schon dabei :?::nixwiss:

    "Was heute noch wie ein Märchen klingt,kann morgen Wirklichkeit sein.Hier ist ein Märchen von übermorgen.Es gibt keine Kupferka­bel mehr,es gibt nur noch die Glasfaser und Terminals in jedem Raum.Man siedelt auf fernen Rech­nern.Die Mailboxen sind als Wohnraum erschlossen.Mit heute noch unvorstellbaren Geschwindigkeiten durcheilen Computerclubs unser Da­tenverbundsystem.Einer dieser Com­puterclubs ist der CCC.Gigantischer Teil eines winzigen Sicher­heitssystems,das die Erde vor Bedrohungen durch den Gilb schützt.Begleiten wir den CCC und seine Mitglieder bei ihrem Patrouillendienst am Rande der Unkenntlich­keit. CCC'84 nach ORION'64"

  • Es ist ein Timer (die ganze Zuweisung). Es sorgt für die "richtige" Flackerei. :smile:

    Cool! Noch so eins! :wink:

    Arndt

    Edit: Also doch Obfuskation!

    GoDot C64 Image Processing
    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.

  • Das x in Zeile 170 müsste dann eigentlich das y sein, damit der Rahmen und der Hintergrund nicht Zeitgleich die selbe Farbe bekommen.

  • Es färbt den Bildschirmrand schwarz

    Ach Menno, aber ich war schon dicht dran.

    Gruß & Kuss zum Wochenschluss,
    Holy Moses/Role

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um dieses Medienelement zu sehen.

  • Es ist ein Timer (die ganze Zuweisung). Es sorgt für die "richtige" Flackerei. :smile:

    Cool! Noch so eins! :wink:

    Arndt

    Edit: Also doch Obfuskation!

    Habe doch kurz Zeit gefunden, mal reinzuschauen.

    Hiermit bist Du dran GoDot, weil korrekt.

    Was das ganze Programm eigentlich tut, also nix weiter als die Bildschirmfarben durchzuflackern, hat glaube ich noch keiner genau benannt.

    Den ?ILLEGAL QUANTITY ERROR von muffi hab ich auf die Schnelle im Vice nicht gesehen. Das lief hier einige Runden durch. War aber auch ein Schnellschuß, das muß ich zugeben.

    Also GoDot: bitte ein neues Rätsel (das Prinzip sollte ja nun klar sein. Möglichst viel komplizierten Code für ein möglichst kleines einfaches Problem! Es kommt nicht auf das Problem an sich an, sondern auf das Rätsel im Code zuvor. :) )

    Ich passe den Thread-Titel nochmal Jahreszeit-unabhängig an. edit: sofern mir jemand sagt, wie ich nach etlichen Posts den Titel noch ändern kann, finde da nix... :(

  • Es färbt den Bildschirmrand schwarz

    Ach Menno, aber ich war schon dicht dran.

    Des is nicht so ganz korrekt, aber klasse, dass Ihr offensichtlich versucht habt, das Programm ohne es auszuführen zu lösen!