Hallo liebe Pythonier, Python 3.12 macht’s möglich: Mit dem neu generierten Zahlensystem zur Basis 4096 und einer angepassten Tastatur können alle Unicode-Zeichen von <point> 1 bis <point>65305 mit 2 Byte kodiert werden. Da Posting des Programms in der Mailingliste zu umfangreich ist und auch den Regeln widerspricht, kann jeder die neuen Erkenntnisse (keyboard-coding) bei mir anfordern! eschnoor@multi-matrix.de Den Programmcode habe ich selbst entwickelt und ist deshalb frei von irgendwechem Schadcode. Mit internetten Grüßen Ernst Erich Schnoor eschnoor@multi-matrix.de
Am 06.07.24 um 14:56 schrieb Erich Schnoor:
Hallo liebe Pythonier, Python 3.12 macht’s möglich:
Mit dem neu generierten Zahlensystem zur Basis 4096 und einer angepassten Tastatur können alle Unicode-Zeichen von <point> 1 bis <point>65305 mit 2 Byte kodiert werden.
Da Posting des Programms in der Mailingliste zu umfangreich ist und auch den Regeln widerspricht, kann jeder die neuen Erkenntnisse (keyboard-coding) bei mir anfordern! eschnoor@multi-matrix.de Den Programmcode habe ich selbst entwickelt und ist deshalb frei von irgendwechem Schadcode.
Mit internetten Grüßen Ernst Erich Schnoor eschnoor@multi-matrix.de
Für 👎 reichen eine 2 byte. -- <http://www.hermann-riemann.de>
Der Einwand mit dem Daumen-Runter-Zeichen (U+1F44E = 128078) zieht nicht, das liegt außerhalb des Bereichs 1..65535. Nur in dem kann man mit dem angekündigten Programm (die dezimalen Ordnungsnummern) der UTF8-Zeichen mithilfe des 4096-Zahlensystems (=4KZS) mit (höchstens) 2 Byte codieren. Aber diese Behauptung ist nicht haltbar. Das 4KZS arbeitet (im günstigsten Fall) mit den ersten 4097 Unicode-Zeichen (ohne das NULL-Byte) als Ziffern, z.B.: ziffern4096 = ''.join([ chr(x) for x in range(1,4097) ]) Die Zahlen des 4KZS sind nichts anderes als die dezimalen Ordnungszahlen ord(z) eines UTF8-Zeichens z, umgewandelt in Zahlzeichen des 4KZS. Das Programm macht also im Wesentlichen eine simple Basistransformation, wie die Python-Funktionen bin(), oct() oder hex(). Das 4KZS ist lediglich eine Erweiterung des Hexadezimalsystems auf die Basis 4096 mit 4096 Ziffern. Gesucht: Anzahl der mit diesen Ziffern notierbaren Zahlzeichen, die höchstens 2 Byte erfordern. Lösung: Das UTF8-System besteht aus 1/2/3/4-Byte-Zeichen (Oktetten) aus den 4 Bereichen A,B,C,D: Bereich A: 1-Byte-Zeichen in range(0,2**7); Anzahl: 128 Bereich B: 2-Byte-Zeichen in range(2**7, 2**11); Anzahl: 1.920 Bereich C: 3-Byte-Zeichen in range(2**11, 2**16); Anzahl: 63.488 (minus 2.024 surrogates) = 61.440 Bereich D: 4-Byte-Zeichen in range(2**16, 1114112); Anzahl: 1.048.575 Die gesuchten Zahlzeichen mit höchstens 2 Byte sind folglich ein- oder zweiziffrig. (a) 1-Byte-Zahlzeichen sind die UTF8-Zeichen aus dem Bereich A. Dies sind 127 Stück. (b) 2-Byte-Zahlzeichen gibt es einziffrig oder zweiziffrig. Die Einziffrigen bestehen aus einer Ziffer des Bereichs B. Davon gibt es 1920 Stück. Die zweiziffrigen bestehen aus Ziffernpaaren (X,Y) des Bereichs A. Davon gibt es 127**2 = 16.129 Stück. Von diesen liegen jedoch nur 1920 im Intervall 1..65535. Folglich beträgt die Anzahl der 4KZS Zahlzeichen mit höchstens 2 Byte 127 +2*1920 = 3.967 Stück. Das sind prozentual 3.967/63.487 = 6.25% der Zahlen im Intervall 1..65535, also gerade einmal ein Sechzehntel der fraglichen Zahlen. Damit ist die Behauptung , ALLE Zahlzeichen in diesem Intervall ließen sich mit höchstens 2 Byte aus dem 4KZS darstellen, widerlegt.
participants (3)
-
Erich Schnoor
-
Hermann Riemann
-
Wolli Buechel