O cenário
Ultimamente você tem notado algum comportamento estranho com seu editor de texto favorito. A princípio, parecia que estava ignorando caracteres aleatórios no seu código ao gravar no disco. Depois de um tempo você notou um padrão; caracteres com valores ASCII ímpares estavam sendo ignorados. Sob uma inspeção mais aprofundada, você descobriu que só pode gravar arquivos corretamente se cada oitavo bit for zero. Agora você precisa saber se seus arquivos valiosos foram afetados por esse bug estranho.
A tarefa
Você deve escrever um programa completo que determine se um arquivo contém bytes ímpares (demonstrando que não está corrompido). Mas, devido ao seu editor de texto, você não pode escrever bytes ímpares no seu código-fonte. Você pode assumir qualquer codificação preexistente para entrada, mas ainda deve verificar cada byte individual, não apenas caracteres.
Entrada
Seu programa pegará o conteúdo ou o caminho para um arquivo a partir do stdin ou da linha de comando.
Resultado
Seu programa produzirá para stdout um valor verdadeiro se o arquivo fornecido contiver um byte ímpar ou um falso se cada oitavo bit for zero.
Critério
Este é o código golf, o programa mais curto que completa a tarefa ganha. Para ser um envio válido, cada oitavo bit no código-fonte dos arquivos deve ser zero. Eu recomendaria incluir uma cópia dos binários do seu código-fonte no seu envio.
Aplicam-se brechas padrão .
Casos de teste
(Na codificação ASCII) Entrada:
"$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~
Output:
falsy
Input:
!#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{}
Output:
truthy
Input:
LOREMIPSVMDOLORSITAMETCONSECTETVRADIPISCINGELITSEDDOEIVSMODTEMPORINCIDIDVNTVTLABOREETDOLOREMAGNAALIQVA
VTENIMADMINIMVENIAMQVISNOSTRVDEXERCITATIONVLLAMCOLABORISNISIVTALIQVIPEXEACOMMODOCONSEQVAT
DVISAVTEIRVREDOLORINREPREHENDERITINVOLVPTATEVELITESSECILLVMDOLOREEVFVGIATNVLLAPARIATVR
EXCEPTEVRSINTOCCAECATCVPIDATATNONPROIDENTSVNTINCVLPAQVIOFFICIADESERVNTMOLLITANIMIDESTLABORVM
Output:
truthy
Dicas
Escolha sabiamente o idioma. Esse desafio pode não ser possível em todos os idiomas.
O comando Unix
xxd -b <file name>
imprimirá os binários de um arquivo no console (junto com algumas coisas extras de formatação)Você pode usar outras codificações que não sejam ASCII, como UTF-8, desde que todas as outras regras sejam seguidas
!#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{}
são os caracteres ASCII imprimíveis proibidos, para quem se importa. Os caracteres ASCII imprimíveis permitidos são" $&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~
[CR]
bit será ímpar. Eu esperava que o WhiteSpace estivesse seguro, mas infelizmente [TAB]
. Se você quer ir para a velha escola, o EBCDIC oferece três vogais.