Sua tarefa - se você a aceitar - é escrever um programa que ajude a entender minha proposta no meta , calculando o vencedor de uma competição invertida com código de golfe . Obviamente, as respostas a essa pergunta serão tratadas como propostas, para que seu programa (se correto) possa calcular se sua resposta se tornará a resposta aceita.
Regras
- O programa lê um arquivo com várias linhas do seguinte formato (veja o exemplo abaixo): TAB [Language] [TAB] [NumberOfCharacters] TAB [LinkToAnswer]
- O nome do arquivo é passado como argumento para o seu programa ou o arquivo é redirecionado para a entrada padrão do seu programa. A escolha é sua, por favor mencione o método ao dar a resposta
- É esperado que o formato de entrada esteja correto. Não há necessidade de tratamento de erros.
- O número de caracteres é positivo. Seu programa deve lidar com comprimentos de até 65535. 64k deve ser suficiente para todos :-)
- O programa gera as linhas na saída padrão que atendem à idéia da meta proposta, ou seja,
- o código mais curto de uma linguagem de programação específica vence (fase de redução)
- o código mais longo de todas as linguagens de programação vence (fase de classificação)
- em caso de empate, todas as respostas com o mesmo comprimento devem ser impressas
- A ordem da saída não é importante
- Embora o código mais longo ganhe, esse não é o código do boliche . Seu código deve ser o mais curto possível para sua linguagem de programação.
- As respostas sobre raramente as linguagens de programação que não estão tentando reduzir o código merecem um voto negativo, porque tentam ignorar a intenção desse tipo de pergunta. Se houver apenas uma resposta para uma linguagem de programação específica, ela será considerada uma candidata vencedora, para que você possa começar a soprar seu código.
Arquivo de entrada de exemplo (separado por guias únicas, se houver um problema com a formatação):
GolfScript 34 http://short.url/answer/ags
GolfScript 42 http://short.url/answer/gsq
C# 210 http://short.url/answer/cs2
Java 208 http://short.url/answer/jav
C# 208 http://short.url/answer/poi
J 23 http://short.url/answer/jsh
Ruby 67 http://short.url/answer/rub
C# 208 http://short.url/answer/yac
GolfScript 210 http://short.url/answer/210
Saída esperada (a ordem não é importante):
C# 208 http://short.url/answer/poi
C# 208 http://short.url/answer/yac
Java 208 http://short.url/answer/jav
Atualizar
Alguns programas se baseiam no fato de que há um único máximo (como o programa de caracteres C # 210). Derivado da realidade, alguém também pode escrever um programa GolfScript com 210 caracteres. A saída permaneceria a mesma. Eu adicionei um GolfScript à entrada.
Atualização 2
Como sugerido, retirei novamente (ainda código-golfe também) e o prazo é 06/03/2014 (que parece uma data arbitrária, mas voltarei para a Alemanha depois de viajar).
Resultados finais
Decidi votar da seguinte forma:
- As respostas em que o número de caracteres não pode ser confirmado recebem um comentário para explicar a contagem.
- As respostas que podem ser facilmente reduzidas recebem um comentário, uma sugestão de edição e entram no resultado com o menor valor de contagem. (Espero ter visto isso com antecedência).
- Respostas que não são compiladas recebem um voto negativo. (Bastante uma tarefa difícil, como se vê).
- As respostas que não são jogadas no golfe recebem um voto negativo (conforme descrito nas regras já).
- As respostas que produzem o resultado esperado recebem um voto positivo. Devido a algumas respostas que não funcionam conforme o esperado, eu uso 4 arquivos de entrada diferentes e verifico o resultado esperado.
Finalmente, o vencedor é determinado fornecendo a tabela de respostas qualificadas como entrada para o meu programa de referência (além de verificar o resultado manualmente). Se minha resposta fosse a vencedora, eu a excluiria da lista. No caso de vários vencedores, eu teria que escolher apenas um. Portanto, alguns bônus podem ser ganhos:
- respostas que aceitam mais informações do que o esperado (por exemplo, fora dos intervalos definidos)
- respostas que usam uma idéia inteligente de torná-lo curto
Tirei um instantâneo das respostas em 6 de março de 2014, 19:45 UTC + 1. A análise está em andamento. Verificar todas as respostas é mais difícil do que o esperado ...