เขียนโปรแกรม / ฟังก์ชั่นที่รับจำนวนเต็มสองจำนวนในช่วงถึงและส่งคืนว่ารูปแบบไบนารีของตัวเลขนั้นแตกต่างกันเพียงหนึ่งบิตหรือไม่
ตัวอย่างเช่นและมีรูปแบบไบนารี00000001
และ00000000
ซึ่งอยู่ห่างกันหนึ่งบิต ในทำนองเดียวกันและคือ010011000
และ000011000
ดังนั้นพวกเขาจึงกลับมาจริง
อย่างไรก็ตามรหัสของคุณต้องเก่าแก่เช่นถ้าหนึ่งบิตในโปรแกรมของคุณพลิกมันควรจะเกิดข้อผิดพลาด ตัวอย่างเช่นหากโปรแกรมของคุณเป็นไบต์เดียวa
(01100001
) ดังนั้น 8 โปรแกรมที่ปรับเปลี่ยนได้ทั้งหมด:
á ! A q i e c `
จะต้องโยนข้อผิดพลาด ตรวจสอบให้แน่ใจว่าคุณกำลังแก้ไขด้วยไบต์ (เช่นด้านá
บนนั่นหมายถึงไบต์ไม่ใช่อักขระสองไบต์จริงá
)
กรณีทดสอบ:
0,1 => Truthy
1,0 => Truthy
152,24 => Truthy
10,10 => Falsey
10,11 => Truthy
11,12 => Falsey
255,0 => Falsey
กฎ:
- จัดเตรียมเฟรมเวิร์กการทดสอบที่สามารถตรวจสอบว่าโปรแกรมของคุณนั้นมีความถูกต้องอย่างแท้จริงเนื่องจากจะมีโปรแกรมที่เป็นไปได้จำนวนมาก (จำนวนไบต์ * 8) หรือการพิสูจน์ความสมบูรณ์แบบอื่น ๆ
- โปรดตรวจสอบว่าโปรแกรมของคุณใช้ได้ก่อนโพสต์
- ผลลัพธ์จะต้องเป็นจริง / เท็จ (อย่างใดอย่างหนึ่งเป็นเรื่องปกติ) หรืออื่น ๆ สองค่าที่ไม่ใช่ข้อผิดพลาดที่แตกต่างกัน
- ข้อผิดพลาดอาจเป็น runtime, คอมไพเลอร์, ล่าม ฯลฯ
+1
มากกว่าโซลูชันล่าสุดของฉันส่วนใหญ่! : \