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 nes 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,
trueofalse,1o0): 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-2que aún es más grande de lo que un doble puede manejar con seguridad, al menos en JavaScript18014398509481982 > 9007199254740991
2**54-2en una consola JS y compare con lo que obtiene 18014398509481982(el valor exacto). JS genera el valor exacto, por 2**54-2lo 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íansqrtfallar.