ท้าทาย
รับรายการของจำนวนเต็มบวกหาว่ามีการเรียงสับเปลี่ยนที่ใช้เวลาถึงหนึ่งบิตจากแต่ละจำนวนเต็มเป็นเลขฐานสองซึ่งประกอบด้วย1
s ทั้งหมดสามารถสร้างขึ้นได้
จำนวนบิตในเลขฐานสองที่ได้นั้นเท่ากับMSBสูงสุดในรายการจำนวนเต็ม
เอาท์พุต
รหัสของคุณจะต้องส่งออกหรือส่งกลับค่าความจริง / เท็จที่ระบุว่าการเปลี่ยนแปลงดังกล่าวมีอยู่
ตัวอย่าง
Truthy:
ด้วยรายการ[4, 5, 2]
และการแทนค่าไบนารี่[100, 101, 10]
เราสามารถใช้บิตที่สามหนึ่งและสองตามลำดับเพื่อสร้าง111
:
4 -> 100 -> 100 -> 1
5 -> 101 -> 101 -> 1
2 -> 010 -> 010 -> 1
Result 111
ด้วยรายการ[3, 3, 3]
ตัวเลขทั้งหมดมีการตั้งค่าเป็นบิตแรกและบิตที่สอง1
ดังนั้นเราจึงสามารถเลือกหมายเลขของเราเพื่อสำรอง:
3 -> 11 -> 11 -> 1
3 -> 11 -> 11 -> 1
3 -> 11 -> 11 ->
Result 11
Falsey:
ด้วยรายการ[4, 6, 2]
ตัวเลขจะไม่มีการตั้งค่าบิตแรกเป็น1
ดังนั้นจึงไม่สามารถสร้างเลขฐานสองได้:
4 -> 100
6 -> 110
2 -> 010
ด้วยรายการ[1, 7, 1]
มีเพียงหนึ่งในตัวเลขเท่านั้นที่มีการตั้งค่าบิตที่สองและสาม1
และไม่สามารถสร้างตัวเลขได้:
1 -> 001
7 -> 111
1 -> 001
เห็นได้ชัดว่าถ้าจำนวนบิตสูงสุดที่ตั้งไว้มีจำนวนเกินกว่าจำนวนเต็มจะไม่สามารถสร้างหมายเลขผลลัพธ์ได้
กรณีทดสอบ
Truthy:
[1]
[1, 2]
[3, 3]
[3, 3, 3]
[4, 5, 2]
[1, 1, 1, 1]
[15, 15, 15, 15]
[52, 114, 61, 19, 73, 54, 83, 29]
[231, 92, 39, 210, 187, 101, 78, 39]
Falsey:
[2]
[2, 2]
[4, 6, 2]
[1, 7, 1]
[15, 15, 15]
[1, 15, 3, 1]
[13, 83, 86, 29, 8, 87, 26, 21]
[154, 19, 141, 28, 27, 6, 18, 137]
กฎระเบียบ
ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม เช่นนี้เป็นรหัสกอล์ฟรายการที่สั้นที่สุดชนะ!