Ihre heutige Mission ist es, einen Textkompressor zu erfinden.
Aufgabe
Sie werden zwei Funktionen schreiben:
Der Packer ist eine Funktion, die eine Zeichenfolge aus ASCII-Zeichen (U + 0000 bis U + 007F) akzeptiert und eine Unicode-Zeichenfolge (U + 0000 bis U + 10FFFF) mit möglichst wenigen Zeichen ausgibt.
Der Entpacker ist eine Funktion, die eine codierte Unicode-Zeichenfolge akzeptiert und genau die ursprüngliche ASCII-Zeichenfolge ausgibt.
Eingang
Die einzige autorisierte Eingabe ist die ASCII-Zeichenfolge (für den Packer) und die gepackte Unicode-Zeichenfolge (für den Entpacker). Keine Benutzereingabe, keine Internetverbindung, keine Verwendung des Dateisystems.
Ihre Funktionen können auf diese Liste englischer Wörter zugreifen . Sie können diese Liste als lokale TXT-Datei verwenden oder ihren Inhalt in Ihrem Quellcode als Zeichenfolge oder als Array von Zeichenfolgen kopieren .
Sie können die folgenden Ausschnitte in Ihren Funktionen nicht fest codieren.
Ausgabe
Die einzige autorisierte Ausgabe für beide Funktionen ist eine Zeichenfolge.
Die Ausgabe des Entpackers muss genau die gleichen Zeichen enthalten wie die Eingabe des Packers.
Ihre Ein- und Ausgänge können eine beliebige Zeichenkodierung verwenden, die alle Unicode-Zeichen unterstützt (UTF-8/16/32, GB18030, ...), da Ihre Punktzahl nur von der Anzahl der Unicode-Zeichen in der Ausgabe abhängt. Bitte geben Sie an, welche Codierung Sie verwenden.
Mit dem folgenden Tool können Sie die Anzahl der Unicode-Zeichen in Ihrer Ausgabe ermitteln: http://mothereff.in/byte-counter
Wertung
Ihr Eintrag muss in der Lage sein, die 10 folgenden Textausschnitte (die ich in diesem Forum aufgenommen habe) zu packen und zu entpacken.
Ihre Punktzahl ergibt sich aus der Summe der Größen Ihrer 10 gepackten Zeichenfolgen (in Unicode-Zeichen) und der Größe Ihrer beiden Funktionen (auch in Unicode-Zeichen).
Zählen Sie nicht die Größe des Wörterbuchs, wenn Sie es verwenden.
Bitte geben Sie in Ihren Einträgen die "Punktzahl" jedes Snippets und dessen gepackte Version an.
Die niedrigste Punktzahl gewinnt.
Daten
Hier sind die Codefragmente zur Berechnung Ihrer Punktzahl:
1: Rick Roll lyrics (1870b): Wir sind keine Fremden, um Golf zu kodieren, Sie kennen die Regeln und ich auch
Wir sind keine Fremden zu lieben Sie kennen die Regeln und ich auch Ein volles Engagement ist das, woran ich denke Sie würden das von keinem anderen Kerl bekommen Ich will dir nur sagen, wie ich mich fühle Muss dich verstehen lassen Gebe dich nie auf Ich werde dich nicht enttäuschen Ich werde niemals herumlaufen und dich im Stich lassen Ich werde dich niemals zum Weinen bringen Ich werde mich nie verabschieden Ich werde niemals lügen und dich verletzen Wir kennen uns schon so lange Dein Herz hat geschmerzt, aber Du bist zu schüchtern, um es zu sagen Drinnen wissen wir beide, was los ist Wir kennen das Spiel und werden es spielen Und wenn Sie mich fragen, wie ich mich fühle Sag mir nicht, dass du zu blind bist, um zu sehen Gebe dich nie auf Ich werde dich nicht enttäuschen Ich werde niemals herumlaufen und dich im Stich lassen Ich werde dich niemals zum Weinen bringen Ich werde mich nie verabschieden Ich werde niemals lügen und dich verletzen Gebe dich nie auf Ich werde dich nicht enttäuschen Ich werde niemals herumlaufen und dich im Stich lassen Ich werde dich niemals zum Weinen bringen Ich werde mich nie verabschieden Ich werde niemals lügen und dich verletzen (Oh, gib dich auf) (Oh, gib dich auf) (Oh) Niemals geben, niemals geben (Gib dich auf) (Oh) Niemals geben, niemals geben (Gib dich auf) Wir kennen uns schon so lange Dein Herz hat geschmerzt, aber Du bist zu schüchtern, um es zu sagen Drinnen wissen wir beide, was los ist Wir kennen das Spiel und werden es spielen Ich will dir nur sagen, wie ich mich fühle Muss dich verstehen lassen Gebe dich nie auf Ich werde dich nicht enttäuschen Ich werde niemals herumlaufen und dich im Stich lassen Ich werde dich niemals zum Weinen bringen Ich werde mich nie verabschieden Ich werde niemals lügen und dich verletzen Gebe dich nie auf Ich werde dich nicht enttäuschen Ich werde niemals herumlaufen und dich im Stich lassen Ich werde dich niemals zum Weinen bringen Ich werde mich nie verabschieden Ich werde niemals lügen und dich verletzen Gebe dich nie auf Ich werde dich nicht enttäuschen Ich werde niemals herumlaufen und dich im Stich lassen Ich werde dich niemals zum Weinen bringen Ich werde mich nie verabschieden Ich werde niemals lügen und dich verletzen
2: Der Golfer (412b): Golf ASCII-art
'\. . |> 18 >> \. '. | O >>. 'o | \. | / \. | / /. ' | jgs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^
3: die Zahl Diamant (233b): Drucken Sie diesen Diamanten
1 121 12321 1234321 123454321 12345654321 1234567654321 123456787654321 12345678987654321 123456787654321 1234567654321 12345654321 123454321 1234321 12321 121 1
4: Das Alphabet viermal (107b): Drucken Sie das Alphabet viermal aus
abcdefghijklmnopqrstuvwxyz qwertyuiopasdfghjklzxcvbnm pyfgcrlaoeuidhtnsqjkxbmwvz zyxwvutsrqponmlkjihgfedcba
5: Old McDonald's Lyrics (203b): Alte MacDonald-Funktion
Der alte MacDonald hatte eine Farm, EIEIO, Und auf dieser Farm hatte er eine Kuh, EIEIO, Mit einem Moo Moo hier und einem Moo Moo dort, Hier ein Moo, dort ein Moo, überall ein Moo Moo, Der alte MacDonald hatte eine Farm, EIEIO!
6: Rock Around the Clock lyrics (144b): Rock Around the Clock
1, 2, 3 Uhr, 4 Uhr Rock, 5, 6, 7 Uhr, 8 Uhr Rock, 9, 10, 11 Uhr, 12 Uhr Rock, Wir werden heute Abend rund um die Uhr rocken.
7: Hallo Welt (296b): Sagen Sie der Welt in ASCII-Kunst "Hallo"
_ _ _ _ _ _ _ | | | | ___ | | | ___ __ _____ _ __ | | __ | | | | | _ | | / _ \ | | / _ \ \ \ / \ / / _ \ | '__ | | / _` | | | _ | __ / | | (_) | \ VV / (_) | | | | (_ | | _ | | _ | | _ | \ ___ | _ | _ | \ ___ () \ _ / \ _ / \ ___ / _ | | _ | \ __, _ (_) | /
8: Irischer Segen (210b): Ein alter irischer Segen
Möge die Straße aufsteigen, um dich zu treffen Moege der Wind immer in deinem Ruecken sein Möge die Sonne warm auf dein Gesicht scheinen Der Regen fällt sanft auf deine Felder Und bis wir uns wiedersehen Möge Gott dich in seiner hohlen Hand halten
9: Es gab eine alte Dame Texte (1208b): Es gab eine alte Dame
Da war eine alte Dame, die eine Fliege verschluckt hat. Ich weiß nicht, warum sie diese Fliege verschluckt hat, Vielleicht stirbt sie. Es gab eine alte Dame, die eine Spinne verschluckt hat, Das zappelte und zappelte und zappelte in ihr. Sie schluckte die Spinne, um die Fliege zu fangen, Ich weiß nicht, warum sie diese Fliege verschluckt hat, Vielleicht stirbt sie. Es gab eine alte Dame, die einen Vogel verschluckt hat, Wie absurd, einen Vogel zu schlucken. Sie schluckte den Vogel, um die Spinne zu fangen, Sie schluckte die Spinne, um die Fliege zu fangen, Ich weiß nicht, warum sie diese Fliege verschluckt hat, Vielleicht stirbt sie. Es gab eine alte Dame, die eine Katze verschluckt hat, Stellen Sie sich vor, Sie schlucken eine Katze. Sie schluckte die Katze, um den Vogel zu fangen, Sie schluckte den Vogel, um die Spinne zu fangen, Sie schluckte die Spinne, um die Fliege zu fangen, Ich weiß nicht, warum sie diese Fliege verschluckt hat, Vielleicht stirbt sie. Es gab eine alte Dame, die einen Hund verschluckt hat, Was für ein Schwein, einen Hund zu schlucken. Sie schluckte den Hund, um die Katze zu fangen, Sie schluckte die Katze, um den Vogel zu fangen, Sie schluckte den Vogel, um die Spinne zu fangen, Sie schluckte die Spinne, um die Fliege zu fangen, Ich weiß nicht, warum sie diese Fliege verschluckt hat, Vielleicht stirbt sie. Es gab eine alte Dame, die ein Pferd verschluckt hat, Sie ist natürlich gestorben.
10: Gettysburg-Adresse (1452b): Wie zufällig ist die Gettysburg-Adresse
Vor vier Jahren und sieben Jahren brachten unsere Väter auf diesem Kontinent eine neue Nation hervor, die in Freiheit gezeugt wurde und der Aussage verpflichtet war, dass alle Menschen gleich geschaffen sind. Jetzt befinden wir uns in einem großen Bürgerkrieg und prüfen, ob diese Nation oder irgendeine Nation, die so konzipiert und so engagiert ist, lange Bestand haben kann. Wir sind auf einem großen Schlachtfeld dieses Krieges getroffen. Wir sind gekommen, um einen Teil dieses Feldes als letzte Ruhestätte für diejenigen, die hier ihr Leben gaben, zu widmen, damit diese Nation leben könnte. Es ist insgesamt passend und richtig, dass wir dies tun sollten. Aber im weiteren Sinne können wir nicht widmen, wir können nicht weihen, wir können diesen Boden nicht heiligen. Die tapferen Männer, lebend und tot, die hier gekämpft haben, haben es geweiht, weit über unsere arme Macht, hinzuzufügen oder abzulenken. Die Welt wird sich weder merken noch lange daran erinnern, was wir hier sagen. aber es kann nie vergessen, was sie hier getan haben. Es ist vielmehr für uns, die Lebenden hier der unvollendeten Arbeit zu widmen, die die Kämpfer hier bisher so edel vorangetrieben haben. Es ist vielmehr unsere Aufgabe, uns hier der großen Aufgabe zu widmen, die vor uns liegt - dass wir uns von diesen geehrten Toten verstärkt der Sache widmen, für die sie das letzte volle Maß an Hingabe geleistet haben -, dass wir uns hier entschieden haben, dass diese Toten es nicht tun sollen umsonst gestorben, dass diese Nation unter Gott eine neue Geburt der Freiheit haben wird, und dass die Regierung des Volkes durch das Volk für das Volk nicht von der Erde zugrunde geht.
Insgesamt (unkomprimiert): 6135 Zeichen / Byte.
Habe Spaß!
private static final String RICK_ROLL_RETURN = "We're no strangers to love...