Meydan okuma
Öyleyse, görünen o ki, kare sayılarla veya başka şekillerle çalışan birçok zorluğumuz varken, basitçe şunu soran bir şeye sahip değiliz:
Girilen bir tamsayı n
(burada n>=0
) verilirse n
, eğer mükemmel bir kare ise gerçek bir değer, eğer değilse bir falsey değeri verir .
kurallar
- Standart G / Ç kurallarının izin verdiği sürece herhangi bir makul, uygun yoldan girdi alabilirsiniz .
- Seçtiğiniz dilin doğal olarak idare edebileceğinden veya kayan nokta yanlışlıklarına yol açacak olandan daha büyük girdilerle uğraşmanıza gerek yok.
- Çıktı iki tutarlı truthy / Falsey değerlerine (örneğin, biri olmalıdır
true
veyafalse
,1
ya0
girdi mükemmel bir kare eğer değilse Falsey, truthy -). - Bu kod golf yani en düşük bayt sayısı kazanır.
Test Kılıfları
Input: 0
Output: true
Input: 1
Output: true
Input: 64
Output: true
Input: 88
Output: false
Input: 2147483647
Output: false
2**54-2
hala bir çiftin güvenle kullanabileceğinden daha büyük, en azından JavaScript'te18014398509481982 > 9007199254740991
2**54-2
Bir JS konsoluna yazın ve ne ile karşılaştığınızı karşılaştırın 18014398509481982
(kesin değer). JS, tam değeri verir, bu nedenle 2**54-2
bir çift ile temsil edilebilir. Bu sizi hala ikna edemiyorsa, ikili verileri alın 0100001101001111111111111111111111111111111111111111111111111111
, bir IEEE-754 çift duyarlıklı şamandıra olarak yorumlayın ve hangi değeri aldığınızı görün.
18014398509481982
(2**54-2
ki) olduğu bir çift ile gösterilebilen ve kullanımı bu cevapları nedensqrt
başarısız.