Sfida:
La tua sfida (se dovessi scegliere di accettarla) è quella di comprimere e decomprimere le " Complete Works of William Shakespeare " da 5 MB come trovate qui: http://www.gutenberg.org/cache/epub/100/pg100.txt
(MD5: a810f89e9f8e213aebd06b9f8c5157d8
)
Regole:
- È necessario prendere l'input via
STDIN
e l'uscita viaSTDOUT
... - ... e devi fornire un risultato decompresso identico all'input.
- (Questo per dire che devi essere in grado di
cat inpt.txt | ./cmprss | ./dcmpress | md5
ottenere lo stesso MD5 di cui sopra.) - (Qualunque via
STDERR
deve essere scartata.)
- (Questo per dire che devi essere in grado di
È necessario utilizzare meno di 2048 caratteri per il codice sorgente totale.- (Questo è non è il codice-golf. Stai non essere segnato base alla durata del codice sorgente. Questo
èstato solo una regola per mantenere le cose finite.) (Prendi la lunghezza concatenata di tutto il codice sorgente se lo hai diviso.)
- (Questo è non è il codice-golf. Stai non essere segnato base alla durata del codice sorgente. Questo
- È necessario essere in grado di ingressi solo testo (in teoria) di processo simile anche.
- (ad esempio disco codifica un meccanismo che è solo in grado di emettere la condizione Shakespeare ingresso è inaccettabile.)
- (La dimensione compressa di altri documenti è irrilevante, a condizione che il risultato decompresso sia identico all'input alternativo.)
- È possibile utilizzare qualsiasi lingua o lingue.
- (es. sentiti libero di comprimere usando
awk
e decomprimere usandojava
)
- (es. sentiti libero di comprimere usando
- Si può scrivere due programmi separati o combinarli con una qualche forma di "switch" come ti pare.
- (Devono esserci chiare dimostrazioni su come invocare le modalità di compressione e decompressione)
- Si può non utilizzare i comandi esterni (ad esempio attraverso
exec()
).- (Se stai usando un linguaggio shell - scusa. Dovrai accontentarti dei built-in. Ti invitiamo a pubblicare una risposta "inaccettabile" per motivi di condivisione e divertimento, ma non sarà giudicato! )
- Si può non utilizzare alcuna funzione built-in o libreria fornita che ha dichiarato scopo è quello di comprimere i dati (come
gz
, ecc)- (Modificare la codifica non è considerato compressione in questo contesto. In questo caso può essere applicata una certa discrezione. Sentiti libero di sostenere l'accettabilità della tua soluzione nella presentazione.)
- Prova a divertirti se scegli di partecipare!
Tutte le buone competizioni hanno una definizione obiettiva di vincita; quindi:
- A condizione che tutte le regole vengano rispettate, l' output compresso più piccolo (in
STDOUT
byte) vince.- (Segnala il tuo output per favore tramite
./cmprss | wc -c
)
- (Segnala il tuo output per favore tramite
- In caso di pareggio (dimensioni identiche dell'output), vince il maggior numero di voti positivi della community.
- In caso di una seconda estrazione (voti identici della community), sceglierò un vincitore basato su un esame completamente soggettivo di eleganza e genio puro.
;-)
Come inviare:
Si prega di formattare la voce utilizzando questo modello:
<language>, <compressed_size>
-----------------------------
<description> (Detail is encouraged!)
<CODE...
...>
<run instructions>
Incoraggerei i lettori e i presentatori a conversare attraverso i commenti - credo che ci sia una reale opportunità per le persone di imparare e diventare programmatori migliori attraverso codegolf.stack.
Vincente:
Presto sarò in vacanza: potrei (o no) monitorare le presentazioni nelle prossime settimane e concluderà la sfida il 19 settembre. Spero che ciò offra una buona opportunità per le persone di pensare e presentare - e per una condivisione positiva di tecniche e idee.
Se hai imparato qualcosa di nuovo dalla partecipazione (come lettore o mittente), lascia un commento di incoraggiamento.
code-challenge
.