Herausforderung:
Ihre Herausforderung (sollten Sie sich dafür entscheiden, dies zu akzeptieren) besteht darin, die 5 MB großen " Complete Works of William Shakespeare " zu komprimieren und zu dekomprimieren, die Sie hier finden: http://www.gutenberg.org/cache/epub/100/pg100.txt
(MD5: a810f89e9f8e213aebd06b9f8c5157d8
)
Regeln:
- Sie müssen Eingabe über
STDIN
und Ausgabe überSTDOUT
... - ... und Sie müssen ein identisches dekomprimiertes Ergebnis für die Eingabe bereitstellen.
- (Das heißt , Sie müssen fähig sein,
cat inpt.txt | ./cmprss | ./dcmpress | md5
und erhalten die gleiche MD5 wie oben.) - (Alles über
STDERR
ist zu verwerfen.)
- (Das heißt , Sie müssen fähig sein,
Sie müssen weniger als 2048 Zeichen für Ihren gesamten Quellcode verwenden.- (Dies ist nicht Code-Golf. Sie sind nicht auf die Dauer des Source-Code erzielt werden. Dies
istwar nur eine Regel endlichen Dinge zu halten.) (Nehmen Sie die verkettete Länge des gesamten Quellcodes, wenn Sie ihn aufgeteilt haben.)
- (Dies ist nicht Code-Golf. Sie sind nicht auf die Dauer des Source-Code erzielt werden. Dies
- Sie müssen ähnliche Klartexteingaben (theoretisch) auch verarbeiten können.
- (z. B. ist die harte Codierung eines Mechanismus, der nur die bereitgestellten Shakespeare- Eingaben ausgeben kann, nicht akzeptabel.)
- (Die komprimierte Größe anderer Dokumente spielt keine Rolle - vorausgesetzt, das dekomprimierte Ergebnis stimmt mit der alternativen Eingabe überein.)
- Sie können eine oder mehrere Sprachen auswählen.
- (z. B. können Sie mit komprimieren
awk
und mit dekomprimierenjava
)
- (z. B. können Sie mit komprimieren
- Sie können zwei separate Programme schreiben oder sie mit einer Art "Schalter" kombinieren, wie Sie möchten.
- (Es muss klare Demonstrationen geben, wie sowohl der Komprimierungs- als auch der Dekomprimierungsmodus aufgerufen werden können.)
- Sie können nicht alle externen Befehle (zB durch Verwendung
exec()
).- (Wenn Sie eine Shell-Sprache verwenden - Entschuldigung. Sie müssen sich mit den integrierten Funktionen begnügen. Sie können gerne eine "inakzeptable" Antwort posten, um sie weiterzugeben und Spaß zu haben - dies wird jedoch nicht beurteilt!) )
- Sie können nicht alle eingebauten oder Bibliothek bereitgestellten Funktionen verwenden , die zuvor benannten Zweck einverstanden ist , ist zu komprimieren Daten (wie
gz
, usw.)- (Eine Änderung der Codierung wird in diesem Zusammenhang nicht als Komprimierung betrachtet. Hier kann ein gewisses Maß an Diskretion angewendet werden. Sie können die Akzeptanz Ihrer Lösung auch in der Einreichung diskutieren.)
- Bitte versuchen Sie Spaß zu haben, wenn Sie teilnehmen möchten!
Alle guten Wettbewerbe haben eine objektive Definition des Gewinnens; ergo:
- Sofern alle Regeln eingehalten werden, gewinnt die kleinste komprimierte Ausgabe (in
STDOUT
Bytes).- (Melden Sie Ihre Ausgabe bitte per
./cmprss | wc -c
)
- (Melden Sie Ihre Ausgabe bitte per
- Bei einem Unentschieden (identische Ausgabegrößen) gewinnt die Community mit den meisten Stimmen.
- Im Falle einer zweiten Auslosung (identische Community-Upstimmen) wähle ich einen Gewinner, der auf einer völlig subjektiven Prüfung der Eleganz und des reinen Genies basiert.
;-)
Wie einreichen:
Bitte formatieren Sie Ihren Eintrag mit dieser Vorlage:
<language>, <compressed_size>
-----------------------------
<description> (Detail is encouraged!)
<CODE...
...>
<run instructions>
Ich möchte Leser und Einsender ermutigen, sich durch Kommentare zu unterhalten - ich glaube, es gibt eine echte Chance für die Menschen, durch codegolf.stack zu lernen und bessere Programmierer zu werden.
Gewinnen:
Ich bin bald in den Ferien: Vielleicht (oder auch nicht) werde ich in den nächsten Wochen die Einreichungen überwachen und die Herausforderung am 19. September abschließen. Ich hoffe, dies bietet eine gute Gelegenheit zum Nachdenken und Einreichen - und zum positiven Austausch von Techniken und Ideen.
Wenn Sie durch Ihre Teilnahme (als Leser oder Einsender) etwas Neues gelernt haben, hinterlassen Sie bitte einen Kommentar zur Ermutigung.
code-challenge
.