สถานการณ์
เมื่อเร็ว ๆ นี้คุณสังเกตเห็นพฤติกรรมแปลก ๆ บางอย่างกับโปรแกรมแก้ไขข้อความที่คุณโปรดปราน ตอนแรกดูเหมือนว่ามันจะไม่สนใจตัวอักษรแบบสุ่มในรหัสของคุณเมื่อเขียนลงดิสก์ หลังจากที่ในขณะที่คุณสังเกตเห็นรูปแบบ; อักขระที่มีค่า ASCII แปลก ๆ กำลังถูกละเว้น ภายใต้การตรวจสอบเพิ่มเติมคุณพบว่าคุณสามารถเขียนไปยังไฟล์ได้อย่างถูกต้องหากทุกๆแปดบิตเป็นศูนย์ ตอนนี้คุณต้องรู้ว่าไฟล์ที่มีค่าของคุณได้รับผลกระทบจากข้อผิดพลาดแปลก ๆ นี้หรือไม่
งาน
คุณต้องเขียนโปรแกรมที่สมบูรณ์ที่กำหนดว่าไฟล์มีไบต์คี่ใด ๆ (แสดงให้เห็นว่าไม่มีการขัดจังหวะ) แต่เนื่องจากโปรแกรมแก้ไขข้อความของคุณคุณไม่สามารถเขียนไบต์แปลก ๆ ในซอร์สโค้ดของคุณได้ คุณอาจสันนิษฐานว่ามีการเข้ารหัสที่มีอยู่ล่วงหน้าสำหรับการป้อนข้อมูลอย่างไรก็ตามคุณยังต้องตรวจสอบทุกไบต์แต่ละตัวไม่ใช่เฉพาะอักขระ
อินพุต
โปรแกรมของคุณจะนำเนื้อหาหรือพา ธ ไปยังไฟล์จาก stdin หรือบรรทัดคำสั่ง
เอาท์พุต
โปรแกรมของคุณจะส่งออกไปยัง 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]
ว่าบิตนั้นแปลก ผมหวังว่าช่องว่างความปลอดภัย [TAB]
แต่อนิจจา หากคุณต้องการไปโรงเรียนเก่า EBCDIC ให้เสียงสระสามเสียง