Desafio:
Seu desafio (se você optar por aceitá-lo) é compactar e descompactar as " Obras Completas de William Shakespeare ", de 5 MB, como encontradas aqui: http://www.gutenberg.org/cache/epub/100/pg100.txt
(MD5: a810f89e9f8e213aebd06b9f8c5157d8
)
Regras:
- Você deve receber entrada via
STDIN
e saída viaSTDOUT
... - ... e você deve fornecer um resultado descompactado idêntico à entrada.
- (Isso significa que você deve ser capaz de
cat inpt.txt | ./cmprss | ./dcmpress | md5
obter o mesmo MD5 acima.) - (Qualquer coisa via
STDERR
deve ser descartada.)
- (Isso significa que você deve ser capaz de
Você deve usar menos de 2048 caracteres para o seu código-fonte total.- (Isso não é código-golfe. Você não está sendo pontuado com base no tamanho do código-fonte. Essa
éapenas uma regra para manter as coisas finitas.) (Pegue o comprimento concatenado de todo o código-fonte, se você o tiver dividido.)
- (Isso não é código-golfe. Você não está sendo pontuado com base no tamanho do código-fonte. Essa
- Você também deve (teoricamente) processar entradas de texto simples semelhantes.
- (por exemplo, codificação embutida de um mecanismo que é capaz apenas de produzir a entrada fornecida por Shakespeare é inaceitável.)
- (O tamanho compactado de outros documentos é irrelevante - desde que o resultado descompactado seja idêntico à entrada alternativa.)
- Você pode usar qualquer opção de idioma (s).
- (por exemplo, sinta-se livre para comprimir
awk
e descomprimir usandojava
)
- (por exemplo, sinta-se livre para comprimir
- Você pode escrever dois programas separados ou combiná-los com algum tipo de "opção", como desejar.
- (Deve haver demonstrações claras de como chamar os modos de compactação e descompactação)
- Você não pode usar nenhum comando externo (por exemplo, através
exec()
).- (Se você estiver usando uma linguagem shell - desculpe. Você terá que se contentar com os built-ins. Você pode postar uma resposta "inaceitável" para compartilhar e divertir - mas isso não será julgado! )
- Você não pode usar nenhuma função interna ou fornecida pela biblioteca que tenha o objetivo declarado de compactar dados (como
gz
, etc.)- (Alterar a codificação não é considerado compactação nesse contexto. Pode ser aplicada alguma discrição aqui. Sinta-se à vontade para argumentar sobre a aceitabilidade da sua solução no envio.)
- Por favor, tente se divertir se optar por participar!
Todas as boas competições têm uma definição objetiva de vitória; ergo:
- Desde que todas as regras sejam respeitadas, a menor saída compactada (em
STDOUT
bytes) vence.- (Relate sua saída por favor
./cmprss | wc -c
)
- (Relate sua saída por favor
- Em caso de empate (tamanhos de saída idênticos), o maior número de votados na comunidade vence.
- No caso de um segundo sorteio (votos idênticos da comunidade), escolherei um vencedor com base em um exame completamente subjetivo de elegância e pura genialidade.
;-)
Como enviar:
Formate sua entrada usando este modelo:
<language>, <compressed_size>
-----------------------------
<description> (Detail is encouraged!)
<CODE...
...>
<run instructions>
Eu encorajaria leitores e apresentadores a conversar através de comentários - acredito que há uma oportunidade real para as pessoas aprenderem e se tornarem melhores programadores através do codegolf.stack.
Ganhando:
Estou de férias em breve: posso (ou não) monitorar os envios nas próximas semanas e encerrarei o desafio no dia 19 de setembro. Espero que isso ofereça uma boa oportunidade para as pessoas pensarem e se submeterem - e para um compartilhamento positivo de técnicas e idéias.
Se você aprendeu algo novo ao participar (como leitor ou remetente), deixe um comentário de incentivo.
code-challenge
.