Ich erinnere mich, dass Leute sagten, dass die Codegröße in Bytes und nicht in Zeichen gemessen werden sollte, weil es möglich ist, Informationen mit seltsamen Unicode-Zeichen zu speichern, die keine visuelle Bedeutung haben.
Wie schlimm kann es sein?
In dieser Challenge solltest du den folgenden Lorem Ipsum-Text aus Wikipedia ausgeben :
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Bitte geben Sie die Anzahl der Zeichen (nicht Bytes) in Ihrem Code an. Code mit der minimalen Anzahl von Zeichen gewinnt.
Ihr Code sollte nur gültige Unicode-Zeichen enthalten, wie hier beschrieben :
- Codepunkte bis U + 10FFFF
- Keine Ersatzzeichen (der Bereich D800 – DBFF ist verboten)
- Keine Zeichen FFFE und FFFF
- Keine Nullzeichen (Code 0)
Wenn Ihr Code nicht angezeigt werden kann, geben Sie eine Version mit redigierten beleidigenden Zeichen und einem Hexdump an.
Einige Notizen:
- Die Ausgabe muss aus einer langen Zeile (445 Zeichen) bestehen. Wenn Ihr System dies nicht kann (z. B. wenn Sie es auf Papier drucken), geben Sie eine möglichst genaue Näherung aus. Nachgestellte Zeilenumbrüche spielen keine Rolle.
- Integrierte Funktionen, die Lorem Ipsum-Text generieren, sind nicht zulässig
- Bitte geben Sie gegebenenfalls eine gültige Textkodierung für Ihren Code an
code-golf
kolmogorov-complexity
unicode
anatolyg
quelle
quelle
=lorem()
in MS Word nicht die richtige VersionAntworten:
Dyalog APL , 123 Zeichen
Alle außer der letzten Periode sind in 111 32-Bit-Zeichen (UTF-32) gepackt.
'.',⍨
Zeitraum angehängt an80⎕DR
die 8-Bit (8
) Zeichen (0
) D ata R ePresentation von'
...'
die 111 Unicode-Zeichen U + 26F4C 9206D D7573 C6F64 32072 12074 C7465 E6F63 46365 27574 96461 37369 10676E 4696C 57320 F6420 56965 46F6D D6574 10726F 9636E 56469 52074 16C20 5726F 107465 F6C616616665 46174 106E6F 16C6C 106F63 F6261 107.369 97369 107475 1696C 107069 52078 F6320 46F6D F6320 16573 E7461 97544 56120 92065 57275 C6F64 92072 57220 86572 5646E 107469 6206E 10756C 57461 C6576 52074 106573 C6C69 4206D 26F6C 56520 77566 107.461 C6C75 17020 46169 102E72 56378 56574 97320 F2074 56163 107461 97075 17461 F6E20 27020 56469 102C74 46E75 106E69 106C75 57120 66F20 96369 56420 57265 D2074 96C6C E6120 9206D 36520 16C20 5726FDiese liegen alle im Bereich von 12074–10756C und damit im zulässigen Bereich des OP von 10000–10FFFF.quelle
JavaScript (ES7),
326283273249243242 ZeichenWie es funktioniert
Der erste Schritt meiner Komprimierungstechnik besteht darin, die gesamte Zeichenfolge in Kleinbuchstaben umzuwandeln (nicht obligatorisch, sieht aber besser aus) und jedes Zeichenpaar
, exum.
(sowie das nachfolgende Leerzeichen für sich) durch den Index in der Zeichenfolge plus 2 zu ersetzen . Dies macht den Text zu einer gültigen Basis-32-Zahl:Der nächste Schritt besteht darin, jeden 4-Zeichen-Lauf in ein Dezimalzeichen umzuwandeln und dann das Zeichen an diesem Codepunkt abzurufen. Dies kann mit folgender Funktion erfolgen:
( Hinweis: Da alle Ziffern 2 oder mehr sind, beträgt der minimal mögliche Wert von vier Ziffern 2222₃₂. Dies entspricht 95978₁₀ oder 176EA₁₆; daher liegen die Codepunkte niemals im eingeschränkten Bereich.)
Und jetzt haben wir unsere komprimierte Zeichenfolge:
Das sind 445 Zeichen, komprimiert zu 106 Zeichen. Die Dekomprimierung kehrt diesen Vorgang einfach um:
n
durch" , exum. ".substr(n,2)
.Die einzige verwendete ES7-Funktion ist
**
. Ersetzen Sie4**8
durch65536
, um in einem Browser ausgeführt zu werden, der ES7 noch nicht unterstützt.quelle
4**8
anstelle von verwenden65536
.Bash + Coreutils + Gzip + Recode, 191 Zeichen
Die Zeichenfolge ist der gzip des Textes, der als UTF-16BE interpretiert wird, plus ein paar zusätzliche Bytes zum Koppeln mit den ungepaarten Ersatzhälften. Die tr streift die zusätzlichen Ersatzhälften ab.
Diese Skriptdatei (oder die Shell, in die dieser Befehl eingegeben wird) sollte Text als UTF-8 interpretieren, weshalb die Neukodierung erforderlich ist.
quelle
Javascript (ES6),
261255254 ZeichenDank ETHproductions 1 Byte gespart
Nervenzusammenbruch
Nutzlast: 148 Unicode-Zeichen
Code: 107 Bytes
Wie es funktioniert
Wir entfernen zuerst den Zeilenanfang
'L'
aus der Originalnachricht, sodass wir 444 = 148 * 3 Zeichen haben.Ohne das Anführungszeichen
'L'
besteht der Zeichensatz aus den 27 folgenden Zeichen:Jede Gruppe von 3 Zeichen ist wie folgt codiert:
Dabei sind a, b und c die Indizes der Zeichen im obigen Zeichensatz.
Dies führt zu einem Unicode-Codepunkt im Bereich von U + 0020 bis U + 801F, der irgendwo in den "CJK Unified Ideographs" endet.
quelle
05AB1E , 319 Bytes
Verwendet die CP-1252-Codierung.
Interpretieren Sie die folgende Zeichenfolge als Zahl zur Basis 36 und codieren Sie sie in Basis 214
Nachdem wir
Aus irgendeinem Grund funktionierte die Kodierung mit einer 0 am Ende nicht, weshalb ein Sonderfall für das letzte "." Benötigt wird.
Probieren Sie es online!
quelle
Y
undZ
durch1
und2
und ein paar Bytes sparen. Vielleicht auch die 0, 1 und 2 neu anordnen, um den mysteriösen Sonderfall loszuwerden?PHP, 247 Zeichen
Kombination der 2 Vorgängerversionen
PHP, 261 Zeichen
Das Kodieren von $ s enthält den String
Alte Version PHP, 386 Bytes | Zeichen
quelle
C #,
337333331 Zeichen-4 Zeichen durch Ersetzen des
.
s nach "pariatur" und "laborum" durch!
vor dem Kombinieren der Zeichen zu breiten Zeichen und Hinzufügen einer abschließenden neuen Zeile.-2 Zeichen, indem Sie die Ausgabevariable neu zuweisen, anstatt sie anzufügen
+=
.Wie es funktioniert:
Die lorem ipsum Zeichenfolge wurde durch Ersetzen in diesem Durcheinander umgewandelt
.
mit!
,mit
_
so , wenn die ASCII - Zeichen nebeneinander angeordnet sind , eine breite char jedes breiten char ein einzelnes Zeichen ist , zu machen.quelle
ISOLADOS, 44016 Bytes
http://pastebin.com/raw/Y2aAhdpi
Geben Sie den ASCII-Code für jedes Zeichen in der Lorem Ipsum-Zeichenfolge ein, verketten Sie alles und geben Sie ihn aus.
quelle
MATL , 354 Zeichen
Dies dekodiert von Base-94 (unter Verwendung der druckbaren ASCII-Zeichen mit Ausnahme von einfachen Anführungszeichen; daher werden nur Unicode-Zeichen bis zu 126 verwendet) bis zum Alphabet der erforderlichen Zeichen, die aus den meisten Kleinbuchstaben, einigen Großbuchstaben, Leerzeichen, Kommas und Punkten bestehen.
Im Online-Compiler dauert es einige Sekunden.
Probieren Sie es online!
quelle
JavaScript (ES5), 342 Zeichen
Ziemlich unkompliziert, daher bin ich mir sicher, dass es Raum für Verbesserungen gibt. Ich habe jedes Paar von Ausgabezeichen als einzelnes Unicode-Zeichen codiert.
quelle
var
?join('')
durchjoin``
. Wenn nicht, ändern Sie Ihre Sprache zuJavaScript (ES5)
y/27|0
anstatt~~(y/27)
zwei Bytes zu sparen. Sie können auch das Entfernen0
inx.charCodeAt(0)
..split('').map(function).join('')
kann.replace(/./g,function)
Gelee , 300 Zeichen (nicht konkurrierend?)
Probieren Sie es online!
Die Kodierung ist Jelly .
Dank komprimierter Strings konnte ich es um 3 Bytes komprimieren.
quelle