场景
最近,您一直在使用自己喜欢的文本编辑器注意到一些奇怪的行为。最初,似乎在写入磁盘时会忽略代码中的随机字符。一段时间后,您注意到了一种模式。ASCII值奇数的字符将被忽略。经过进一步检查,您发现只有每八位为零时,才能正确写入文件。现在,您需要知道您的重要文件是否已受到此奇怪错误的影响。
任务
您必须编写一个完整的程序来确定文件是否包含奇数个字节(表明文件未损坏)。但是由于使用了文本编辑器,因此无法在源代码中写入任何奇数字节。您可以假定输入已经存在任何编码,但是您仍然必须检查每个字节,而不仅仅是字符。
输入项
您的程序将从stdin或命令行获取文件的内容或文件的路径。
输出量
如果给定文件包含一个奇数字节,则程序将向stdout输出一个真实值,而如果每八位为零,则该程序将向fsy输出一个stdout。
标准
这是代码高尔夫,是完成任务的最短程序。要成为有效提交,文件源代码中的每八位必须为零。我建议您在提交的文件中包含源代码二进制文件的副本。
测试用例
(以ASCII编码)输入:
"$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~
Output:
falsy
Input:
!#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{}
Output:
truthy
Input:
LOREMIPSVMDOLORSITAMETCONSECTETVRADIPISCINGELITSEDDOEIVSMODTEMPORINCIDIDVNTVTLABOREETDOLOREMAGNAALIQVA
VTENIMADMINIMVENIAMQVISNOSTRVDEXERCITATIONVLLAMCOLABORISNISIVTALIQVIPEXEACOMMODOCONSEQVAT
DVISAVTEIRVREDOLORINREPREHENDERITINVOLVPTATEVELITESSECILLVMDOLOREEVFVGIATNVLLAPARIATVR
EXCEPTEVRSINTOCCAECATCVPIDATATNONPROIDENTSVNTINCVLPAQVIOFFICIADESERVNTMOLLITANIMIDESTLABORVM
Output:
truthy
提示
明智地选择语言并非每种语言都可能会遇到这种挑战
Unix命令
xxd -b <file name>
会将文件的二进制文件打印到控制台(以及一些其他格式化内容)您可以使用ASCII以外的其他编码,例如UTF-8,只要遵守所有其他规则
!#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{}
是禁止的可打印ASCII字符,对于任何关心的人。允许的可打印ASCII字符为" $&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~
[CR]
具有奇数位。我希望WhiteSpace是安全的,但是可惜[TAB]
。如果您想上旧学校,EBCDIC会给您三个元音。