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
trueveyafalse,1ya0girdi 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-2hala bir çiftin güvenle kullanabileceğinden daha büyük, en azından JavaScript'te18014398509481982 > 9007199254740991
2**54-2Bir 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-2bir ç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-2ki) olduğu bir çift ile gösterilebilen ve kullanımı bu cevapları nedensqrtbaşarısız.