Виклик
Так, гм, здається, що, хоча у нас є безліч проблем, які працюють з квадратними числами або числами інших фігур, у нас немає такої, яка просто запитує:
Враховуючи ціле число n
(де n>=0
) як вхід, повертайте триєдне значення, якщо n
це ідеальний квадрат або значення фальси, якщо ні.
Правила
- Ви можете брати інформацію будь-яким розумним, зручним способом, якщо це дозволено стандартними правилами вводу / виводу .
- Вам не потрібно обробляти введення більше, ніж те, що обрана вами вибрана мова, і це не призведе до неточностей з плаваючою комою.
- Вихід повинен бути одним із двох послідовних значень truthy / falsey (наприклад,
true
абоfalse
,1
або0
) - truthy, якщо вхід є ідеальним квадратом, фальси, якщо це не так. - Це код-гольф, тому виграє найменший байт.
Випробування
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
), який можна представити подвійним, і спричиняєsqrt
невдачу відповідей, які використовують .