Sehr geehrter Herr Schnoor, ich eröffne einen neuen Diskussionsstrang, erstens, weil ich es leid bin, für die Antwort immer so weit runter zu scrollen, und zweitens, weil es tatsächlich, wie von Ihnen versprochen, neue Ergebnisse bzw. neue Entwicklungen in der Konzeption des 4096-Zahlensystems gibt. Ich weiß zwar nicht, die wievielte Ihrer Erstversionen der <ziffern>String ist, den Sie uns kürzlich hier vertrauensvoll zur Kenntnis gebracht haben. Denn Sie pflegen Ihre Programmversionen (jedenfalls die mir bekannten) nicht zu nummerieren -- wie das Unicode-Konsortium seine verdammten Unicode- bzw. die UTF8-Zeichen. Doch nun zur Sache: In der mir heute per Mail zugeschickten zip-Datei findet sich tatsächlich ein ziffern-String, der keine Mehrfachzeichen enthält -- jedenfalls keine druckbaren. Wohl die beiden alten Verbrecher NewLine und Space (mit den Ordnungszahl 10 und 32. Sind zwar olle Dezies, aber sie erfüllen ihren Zweck, genauso wie die Hexies): [ 1] > < 10 Cc [ 2] > < 32 SPACE Cc : 1 SPACE : 1 Darum lüfte ich hier das Geheimnis, wie man bei einem mit diesen Übeltätern verseuchten Mehrzeilenstring MZS = '''Zeile1 Zeile2 Zeile3''' diese white-space-Zeichen los werden kann: (1) Man hängt einfach ans Ende des MZS die String-Methode str.replace() dran: MZS = '''Zeile1 Zeile2 Zeile3'''.replace('\n', '').replace(' ', '') Info: https://docs.python.org/3/library/stdtypes.html#string-methods str.replace(old, new[, count]) Return a copy of the string with all occurrences of substring old replaced by new. If the optional argument count is given, only the first count occurrences are replaced. Es gibt allerdings WIEDER das alte Problem: Durch die Tilgung dieser Bösewichte ist der Ziffernstring geschrumpft, er hat jetzt nur noch 4038 Zeichen. basis = len(ziffern) print("Basis : %s" % basis) ziffern = ziffern.replace('\n', '').replace(' ', '') basis = len(ziffern) # bloß 4038 Zeichen print("Basis : %s" % basis) Basis : 4096 Basis : 4038 Also Hausaufgabe: Nachbessern (2) Herr Schnoor, Sie haben jahrelang eine andere Methode verwendet, um Ihre überlangen Strings zu erschaffen, nämlich diese: t1 = "Stück1" t2 = "Stück2" usw. t66 = "Stück66" t = t1 + t2 + ... + t66 Wären Sie bei dieser Methode geblieben, könnten wir jetzt (fast) einen neuen Diskussionstrang Keyboard-Coding 3 eröffnen, denn dann hätte man einen allen Anforderungen an ein solches Gebilde genügendes Exemplar (sofern lang genug). Aber mit wenig Aufwand können Sie die alte, jahrelang verwendete und bewährte Methode anwenden, mit einem einzigen PRINT-Befehl (plus copy-paste): def ziffernBuild_as_Before(ziffern): z1 = ziffern.splitlines() print(z1) # ['123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ', ... ] for z in ziffern.splitlines(): print('t += "%s"' % z) Die dadurch entstehende Ausgabe sieht so aus: t += "123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ" t += "ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġ" usw. t += "千卄卅卆升午卉半卋卌卍华协卐卑卒卓協单卖南単卙博卛卜卝卞卟占卡卢卣卤卥卦卧卨卩ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓ" t += "ㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩㄪㄫꆰꆱꆲꆳꆴꆵꆶꆷꆸꆹꆺꆻꆼꆽꆾꆿꇀꇁꇂꇃꇄꇅꇆꇇꇈꇉꇊꇋꇌꇍꇎꇏꇐꇑꇒꇓꇔꇕꇖꇗꇘꇙꇚꇛꇜꇝꇞꇟꇠꇡꇢꇣꇤ" t += "ꇥꇦꇧꇨꇩꇪꇫꇬꇭꇮꇯꇰꇱꇲꇳꇴꇵꇶꇷꇸꇹꇺꇻꇼꇽꇾꇿꈀꈁꈂꈃꈄꈅꈆꈇꈈꈉꈊꈋꈌꈍꈎꈏꈐꈑ" Das ist fehlerfreier und eleganter Python-Code (er kommt ohne eine endlos lange "Addition von Strings" aus). Den kann man unverändert in sein Prog kopieren. Der String t ist allerdings ebenfalls zu kurz für's 4096er System. Also Hausaufgaben : Nachbessern In der Zwischenzeit könnten Sie die Fragen beantworten, die die Mit-Foristen, Herr Baier und Herr Grellert, gestellt haben. Ich fasse sie hier kurz zusammen (plus einige weitere): (1) Was ist der ZWECK Ihres Programms? Bloß ein bombastischer Ersatz für die Nummerierung der UTF8-Zeichen -- Oder mehr? (2) Wie kommen "krumme" Bitzahlen-Werte (11, 12, 17,...) bei Ihrem Programm zustande? (3) Wie werden die dann von heutigen Computern verarbeitet? Bits treten doch HEUTE nur in Bytes, also in 8-er Gruppen auf -- dummerweise sogar in UTF8-Zeichen, die Sie in Ihren <ziffern>String einbauen. (3) Wie sind Sie auf das 4096er-System gestoßen? Wie fing alles an? Das haben Sie seinerzeit, bei Ihrem Erstlings-Programm Crypto-Matrix, sehr ausführlich beschrieben (ausgedruckt 40+ Seiten). (4) In Ihrem Programm kann man zudem verschiedene Basen wählen: 2048, 1024, 512, ... Einmal heißt es sogar: Alle Basen von 2 bis 4096. Wann und wofür verwendet man welche Basis? (5) Können Sie das hier besprochene Programm leichter zugänglich machen? Früher hatten Sie eine Homepage, auf der man alles einfach herunterladen konnte. Auf knappe, präzise, verständliche Antworten auf diese (und weitere Fragen) warte ich schon etwas länger. Liefern Sie uns, bitte, keine Output-Schnipsel Ihres Programms. Lösen Sie doch einfach Ihr großzügiges Versprechen am Ende (fast) jeder Ihrer Mails in diesem Forum, also HIER, ein: "Für weitere Erläuterungen steht der Author jederzeit gern zur Verfügung." Oder volkstümlich formuliert: Butter bei die Fische. W. Buechel
participants (1)
-
Wolli Buechel