Desafío
Entonces, um, parece que, si bien tenemos muchos desafíos que funcionan con números cuadrados o números de otras formas, no tenemos uno que simplemente pregunte:
Dado un entero n
(donde n>=0
) como entrada, devuelve un valor verdadero si n
es un cuadrado perfecto o un valor falsey si no.
Reglas
- Usted puede tomar la entrada por cualquier medio razonable, conveniente, siempre y cuando se permita la normativa de E / S estándar .
- No necesita manejar entradas mayores de lo que su idioma elegido puede manejar de forma nativa ni lo que conduciría a imprecisiones de coma flotante.
- La salida debe ser uno de los dos valores consistentes de verdad / falsey (por ejemplo,
true
ofalse
,1
o0
): verdad si la entrada es un cuadrado perfecto, falsey si no lo es. - Este es el código de golf, por lo que gana el conteo de bytes más bajo.
Casos de prueba
Input: 0
Output: true
Input: 1
Output: true
Input: 64
Output: true
Input: 88
Output: false
Input: 2147483647
Output: false
2**54-2
que aún es más grande de lo que un doble puede manejar con seguridad, al menos en JavaScript18014398509481982 > 9007199254740991
2**54-2
en una consola JS y compare con lo que obtiene 18014398509481982
(el valor exacto). JS genera el valor exacto, por 2**54-2
lo tanto, es representable con un doble. Si eso aún no lo convence, tome los datos binarios 0100001101001111111111111111111111111111111111111111111111111111
, inténtelos como un flotador de doble precisión IEEE-754 y vea qué valor obtiene.
18014398509481982
(2**54-2
), que es representable con un doble, y hace que las respuestas que solíansqrt
fallar.