ท้าทาย
ดังนั้นอืมดูเหมือนว่าในขณะที่เรามีความท้าทายมากมายที่ทำงานกับรูปสี่เหลี่ยมจตุรัสหรือตัวเลขของรูปทรงอื่น ๆ เราไม่มีสิ่งที่ถาม:
รับจำนวนเต็มn
(ที่ไหนn>=0
) เป็นอินพุตส่งกลับค่าความจริงหากn
เป็นตารางที่สมบูรณ์แบบหรือค่าเท็จถ้าไม่
กฎระเบียบ
- คุณสามารถป้อนข้อมูลด้วยวิธีการที่เหมาะสมและสะดวกสบายใด ๆ ตราบเท่าที่มันได้รับอนุญาตตามกฎ I / Oมาตรฐาน
- คุณไม่จำเป็นต้องจัดการอินพุตมากกว่าภาษาที่คุณเลือกสามารถจัดการได้อย่างเป็นธรรมชาติและจะนำไปสู่ความไม่ถูกต้องของจุดลอยตัว
- เอาท์พุทควรจะเป็นหนึ่งในสอง truthy สอดคล้อง / ค่า falsey (เช่น
true
หรือfalse
,1
หรือ0
) - truthy ถ้าใส่เป็นตารางที่สมบูรณ์, falsey หากยังไม่ได้ - นี่คือcode-golfดังนั้นจำนวนไบต์ที่น้อยที่สุดจึงชนะ
กรณีทดสอบ
Input: 0
Output: true
Input: 1
Output: true
Input: 64
Output: true
Input: 88
Output: false
Input: 2147483647
Output: false
2**54-2
ยังมีขนาดใหญ่กว่าสองเท่าที่สามารถจัดการได้อย่างปลอดภัยอย่างน้อยใน JavaScript18014398509481982 > 9007199254740991
2**54-2
ลงในคอนโซล JS และเปรียบเทียบสิ่งที่คุณได้รับด้วย18014398509481982
(ค่าที่แน่นอน) JS เอาท์พุทค่าที่แน่นอนดังนั้นจึง2**54-2
เป็นตัวแทนกับคู่ หากยังไม่สามารถโน้มน้าวใจคุณได้ให้นำข้อมูลไบนารี่0100001101001111111111111111111111111111111111111111111111111111
มาตีความว่าเป็นความแม่นยำสองชั้นแบบลอยตัวของ IEEE-754 และดูว่าคุณได้รับคุณค่าอะไรบ้าง
18014398509481982
(2**54-2
) ซึ่งสามารถแทนได้ด้วย double และทำให้คำตอบที่ใช้sqrt
ล้มเหลว