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 n
kuadrat 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,
true
ataufalse
,1
atau0
) - 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-2
masih lebih besar daripada yang bisa ditangani dengan aman, setidaknya di JavaScript18014398509481982 > 9007199254740991
2**54-2
ke konsol JS, dan bandingkan dengan apa yang Anda dapatkan 18014398509481982
(nilai persisnya). JS menampilkan nilai yang tepat, oleh karena 2**54-2
itu 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 digunakansqrt
gagal.