Es gibt 50 Antworten in diesem Thema, welches 4.990 mal aufgerufen wurde. Der letzte Beitrag (8. September 2024 um 16:05) ist von goloMAK.

  • Wer schafft es, das Programm so zu ändern, dass auch der Ausgangswert 98 zum korrekten Palindrom führt? :)

    Also ich würde das Programm als allererstes in ein Maschinensprachprogramm ändern und dann mit BCD-Zahlen 8o arbeiten. Damit kann man Zahlen mit bis zu etwa 60000 Dezimalstellen speichern und in brauchbarer Geschwindigkeit berechnen.

    Ich denke, man könnte sogar 120000 Dezimalstellen hinbekommen, wenn man invertieren und addieren in Place durchführt, also dabei die Originalzahl überschreibt. Man muss dann allerdings Performance-Einbußen in Kauf nehmen, weil man in der linken Hälfte der Zahl mehrfach Überträge weiterschieben muss.

    PS: Es gibt ja dumme Leute. Manchmal werden diese auch als Toren bezeichnet. Ein solcher Tor hatte mal einen Retsinakanister, der deswegen als Torretsinakanister bezeichnet wurde. Und dieser Kanister hatte eine unbeschreibliche Farbe, einen bis dahin nicht gekannten Rot-Ton, der so ungewöhnlich war, das man ihn nach dem Kanister benannt hat. So ist das Torretsinakanisterrot entstanden und damit die Wikipedia widerlegt!

    Doppelt gepoked hält besser.

    Einmal editiert, zuletzt von berni (18. August 2024 um 21:10) aus folgendem Grund: SCNR

  • Ich denke, man könnte sogar 120000 Dezimalstellen hinbekommen,[...]

    Dann reicht es nicht. In dem von mir verlinkten Wikipediaartikel steht:

    "Die letzte Ergebniszahl hatte 300.000.000 Stellen und war immer noch kein Palindrom."

  • Ich denke, man könnte sogar 120000 Dezimalstellen hinbekommen,[...]

    Dann reicht es nicht. In dem von mir verlinkten Wikipediaartikel steht:

    "Die letzte Ergebniszahl hatte 300.000.000 Stellen und war immer noch kein Palindrom."

    Naja, für die 196 reicht es nicht, aber die 98 müsste damit doch gehen, oder?

  • Damit kann man Zahlen mit bis zu etwa 60000 Dezimalstellen speichern

    Mit z.B. einer REU sogar deutlich mehr, allerdings gibt es eventuell einfachere und speichersparendere Wege, Zahlenpalindrome zu "berechnen". ;)

    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.

  • Der PC vor ~20 Jahren war bestimmt relativ gut optimiert und hat "nur" 5 Jahre dran gerechnet. Dann kann man es für den C64 grob überschlagen :smile:

  • Ich denke, man könnte sogar 120000 Dezimalstellen hinbekommen,[...]

    Dann reicht es nicht. In dem von mir verlinkten Wikipediaartikel steht:

    "Die letzte Ergebniszahl hatte 300.000.000 Stellen und war immer noch kein Palindrom."

    Naja, für die 196 reicht es nicht, aber die 98 müsste damit doch gehen, oder?

    Mir war das V2 Basic zu kompliziert, drum habe ich mal aus Neugier das in meinem PABasic (Version 0.9.13, noch nicht released mittlerweile released, inkl. Palimdrome Programm) programmiert und siehe da, es scheint zu funktionieren.

    Für die Zahl 10911 brauchte es 17.8 Sekunden und 55 Schritte

    Bitte melde dich an, um diesen Anhang zu sehen.

    Die Zahl 98 benötigt 4.21 Sekunden und 24 Schritte

    Bitte melde dich an, um diesen Anhang zu sehen.


    Für reines Basic gar nicht mal schlecht.

    Gerechnet wird dabei alles als String, Zeichen für Zeichen addiert :smile:

    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.

    Einmal editiert, zuletzt von TD1334 (18. August 2024 um 23:42)

  • Hallo Leute,

    ich habe mich auch mal an den Zahlenpalindromen versucht.

    Hier das Ergebnis:

    Gruß,

    Neptun

  • Mir war das V2 Basic zu kompliziert, drum habe ich mal aus Neugier das in meinem PABasic [...] programmiert und siehe da, es scheint zu funktionieren.

    Super! 8o Gefällt mir sehr gut und ist natürlich viel besser als mein Krückstock aus Posting Bitte melde dich an, um diesen Link zu sehen.. Nicht so sehr wegen dem BASIC-Dialekt, sondern wegen der verwendeten Logik. Dein BASIC ist natürlich auch hübsch! :*

    Ich habe das jetzt mal ebenfalls aus Neugier auf BASIC V2 "rückportiert" (mit ein paar Anpassungen) und siehe da, es löppt! Auch die 98 kommt jetzt zu Potte! :bia

    Bitte melde dich an, um diesen Anhang zu sehen.

    Dateien

    Bitte melde dich an, um diesen Link zu sehen. - Ratespiel • Bitte melde dich an, um diesen Link zu sehen. - BASIC-Erweiterung • Bitte melde dich an, um diesen Link zu sehen. - Sprite-Editor • Bitte melde dich an, um diesen Link zu sehen. - Zeichensatz-Editor Bitte melde dich an, um diesen Link zu sehen. - 2048 Blöcke

  • Ich habe das jetzt mal ebenfalls aus Neugier auf BASIC V2 "rückportiert" (mit ein paar Anpassungen) und siehe da, es löppt! Auch die 98 kommt jetzt zu Potte! :bia

    Ich habe mal einen Vergleich angestgellt. Neptun s Version ist um ein paar Sekündchen schneller.

    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.
  • Ich habe mal einen Vergleich angestgellt. Neptun s Version ist um ein paar Sekündchen schneller.

    Die gucke ich mir auch noch an! Allerdings muss ich sagen, dass "tv2pali" jetzt auch nicht gerade auf Schnelligkeit getrimmt war.

    Bitte melde dich an, um diesen Link zu sehen. - Ratespiel • Bitte melde dich an, um diesen Link zu sehen. - BASIC-Erweiterung • Bitte melde dich an, um diesen Link zu sehen. - Sprite-Editor • Bitte melde dich an, um diesen Link zu sehen. - Zeichensatz-Editor Bitte melde dich an, um diesen Link zu sehen. - 2048 Blöcke

  • In PABasic ist es bisher am schnellsten: unter 5 Sekunden (ab F5 bis zur Ausgabe).

    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.
  • wenn man die Geschwindigkeit messen wollte, sollte man auf die "prints" zwischendurch verzichten.

    Ich habe das originale V2 Basic von Fritz gar nicht wirklich verstanden, dafür mache ich zu wenig in V2.

    Deshalb war es für mich interessant zu sehen ob ich die Beschreibung aus dem Posting umsetzen konnte und da bot sich mir mein Basic an, da ich dort gerade heftig am werkeln bin.

    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.

  • Ich habe das originale V2 Basic von Fritz gar nicht wirklich verstanden, dafür mache ich zu wenig in V2.

    Meinst das Ding in Posting Bitte melde dich an, um diesen Link zu sehen.? Das war von mir. :)

    Grundsätzlich habe ich einfach den Algorithmus 1:1 umgesetzt. Für wenige Iterationen hat das auch hübsch geklappt. Die Probleme fingen an, als bei größeren Zahlen Zehnerpotenzen kamen. Deswegen gibt es das Unterprogramm "stretch", das z.B. aus 2.3156E+09 den String "2315600000" macht. Nur bringt das auch nix, wenn die Zahl dann nur ungefähr stimmt. Und damit war der Ansatz letztlich für die Katz'.

    Deshalb war es für mich interessant zu sehen ob ich die Beschreibung aus dem Posting umsetzen konnte und da bot sich mir mein Basic an, da ich dort gerade heftig am werkeln bin.

    Ja, in einem BASIC mit Strukturbefehlen ist das natürlich gleich viel schöner! Aber irgendwie hat BASIC V2 auch so einen maroden Charme, der mich immer wieder fasziniert.

    Bitte melde dich an, um diesen Link zu sehen. - Ratespiel • Bitte melde dich an, um diesen Link zu sehen. - BASIC-Erweiterung • Bitte melde dich an, um diesen Link zu sehen. - Sprite-Editor • Bitte melde dich an, um diesen Link zu sehen. - Zeichensatz-Editor Bitte melde dich an, um diesen Link zu sehen. - 2048 Blöcke

  • Aber irgendwie hat BASIC V2 auch so einen maroden Charme, der mich immer wieder fasziniert.

    Für dich bestimmt. Das einzige an was ich mich noch erinnere war das ich auf dem VC20 angefangen hatte in Basic was zu machen, aber mit dem C64 kam dann nur noch Assembler. Das einzige an das ich mich noch erinnere war, das ich in Basic V2 Sinus Tabellen erzeugt habe die ich dann später in Assembler benutzt habe :smile:

    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.

  • So, ich habe meine Version noch ein bisschen verbessert. Aus der laufenden FOR-NEXT-Schleife (beim Palindrome-Check) einfach herauszuhüpfen hätte nochmal etwas Speed gebracht, aber das habe ich nicht übers Herz gebracht. :emojiSmiley-174:

    Anyway, hier die etwas optimierte Version. Natürlich könnte man noch Spaces, REMs usw. weglassen, aber das wollte ich auch nicht. Interessant wäre, ob man noch an der Logik selbst etwas verbessern könnte... aber ich glaube nicht.

    Dateien

    Bitte melde dich an, um diesen Link zu sehen. - Ratespiel • Bitte melde dich an, um diesen Link zu sehen. - BASIC-Erweiterung • Bitte melde dich an, um diesen Link zu sehen. - Sprite-Editor • Bitte melde dich an, um diesen Link zu sehen. - Zeichensatz-Editor Bitte melde dich an, um diesen Link zu sehen. - 2048 Blöcke

  • Es wird Zeit für etwas Flottes, Stimmung.... gute Laune!

    Hier einfach mal die schnellsten Palindrom-Programme, soweit bisher eingereicht! :)

    Als Benchmark diente der Startwert "98".

    PlatzAutorProgrammierspracheZeit (in Sekunden)
    Bitte melde dich an, um diesen Link zu sehen. goloMAK BASIC V212,9
    Bitte melde dich an, um diesen Link zu sehen. Neptun BASIC V29,4
    Bitte melde dich an, um diesen Link zu sehen. TD1334 PABasic4,2

    Meine Damen und Herren, hier ist: PABasic mit "palindrome" - Ihre Nummer 1!

    Bitte melde dich an, um diesen Link zu sehen. - Ratespiel • Bitte melde dich an, um diesen Link zu sehen. - BASIC-Erweiterung • Bitte melde dich an, um diesen Link zu sehen. - Sprite-Editor • Bitte melde dich an, um diesen Link zu sehen. - Zeichensatz-Editor Bitte melde dich an, um diesen Link zu sehen. - 2048 Blöcke

  • Ich habe mal nur aus Spass in PABasic den Befehl Palindrome erstellt. Er kann theoretisch Palindrome bis zu einer Länge von 126 Zeichen erkennen.

    Ein Palindrome("98") braucht dann nur noch 0.012s, die Zahl "1186060307891929990" braucht 261 Iterationen und liefert mir am ende eine 119-stellige Zahl zurück.

    Aber der Befehl wird es nicht ins Basic schaffen, da ich dafür keine Verwendung sehe.

    Aber Hut ab was ihr aus dem V2 rausholt :smile:

    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.

  • Aber der Befehl wird es nicht ins Basic schaffen, da ich dafür keine Verwendung sehe.

    Du kannst es ja forken. Als Palindrom Basic. Der Name kann bleiben. :)

    Bitte melde dich an, um diesen Link zu sehen. - Ratespiel • Bitte melde dich an, um diesen Link zu sehen. - BASIC-Erweiterung • Bitte melde dich an, um diesen Link zu sehen. - Sprite-Editor • Bitte melde dich an, um diesen Link zu sehen. - Zeichensatz-Editor Bitte melde dich an, um diesen Link zu sehen. - 2048 Blöcke

  • Aber der Befehl wird es nicht ins Basic schaffen, da ich dafür keine Verwendung sehe.

    Du kannst es ja forken. Als Palindrom Basic. Der Name kann bleiben. :)

    Und Palindrome ist der einzige Befehl den es gibt :wink:

    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.

  • Hallo Leute,

    ich habe mein Programm nochmal überarbeitet und die Strings

    durch ein Fließkomma-Array ersetzt. Die Berechnung ist jetzt

    schneller, aber die Ausgabe dafür langsamer. Unterm Strich ist es

    aber schneller.

    Hier das Ergebnis:

    Gruß,

    Neptun