Tantangan
Jadi, um, tampaknya, sementara kita memiliki banyak tantangan yang bekerja dengan bilangan kuadrat atau jumlah bentuk lainnya, kita tidak memiliki satu yang hanya bertanya:
Diberikan integer n(di mana n>=0) sebagai input mengembalikan nilai kebenaran jika nkuadrat sempurna atau nilai falsey jika tidak.
Aturan
- Anda dapat mengambil input dengan cara yang masuk akal, nyaman selama diizinkan oleh aturan I / O standar .
- Anda tidak perlu menangani input yang lebih besar dari apa yang dapat dipilih oleh bahasa pilihan Anda atau yang akan menyebabkan ketidakakuratan titik mengambang.
- Output harus menjadi salah satu dari dua nilai yang konsisten truthy / falsey (misalnya,
trueataufalse,1atau0) - truthy jika input adalah persegi sempurna, falsey jika tidak. - Ini adalah kode-golf sehingga jumlah byte terendah menang.
Uji Kasus
Input: 0
Output: true
Input: 1
Output: true
Input: 64
Output: true
Input: 88
Output: false
Input: 2147483647
Output: false
2**54-2masih lebih besar daripada yang bisa ditangani dengan aman, setidaknya di JavaScript18014398509481982 > 9007199254740991
2**54-2ke konsol JS, dan bandingkan dengan apa yang Anda dapatkan 18014398509481982(nilai persisnya). JS menampilkan nilai yang tepat, oleh karena 2**54-2itu direpresentasikan dengan ganda. Jika itu masih tidak meyakinkan Anda, ambil data biner 0100001101001111111111111111111111111111111111111111111111111111, tafsirkan sebagai pelampung presisi ganda IEEE-754, dan lihat nilai apa yang Anda dapatkan.
18014398509481982(2**54-2), yang dapat direpresentasikan dengan ganda, dan menyebabkan jawaban yang digunakansqrtgagal.