Dado un número decimal k
, encuentre el número entero más pequeño n
tal que la raíz cuadrada de n
esté dentro k
de un número entero. Sin embargo, la distancia no debe ser cero, n
no puede ser un cuadrado perfecto.
Dado k
, un número decimal o una fracción (lo que sea más fácil para usted), de tal manera que 0 < k < 1
genere el número entero positivo más pequeño de n
manera que la diferencia entre la raíz cuadrada de n
y el número entero más cercano a la raíz cuadrada de n
sea menor o igual a k
pero diferente de cero .
Si i
es el entero más cercano a la raíz cuadrada de n
, está buscando el primer n
lugar 0 < |i - sqrt(n)| <= k
.
Reglas
- No puede utilizar la implementación insuficiente de un idioma de números no enteros para trivializar el problema.
- De lo contrario, puede suponer que
k
eso no causará problemas con, por ejemplo, el redondeo de coma flotante.
Casos de prueba
.9 > 2
.5 > 2
.4 > 3
.3 > 3
.25 > 5
.2 > 8
.1 > 26
.05 > 101
.03 > 288
.01 > 2501
.005 > 10001
.003 > 27888
.001 > 250001
.0005 > 1000001
.0003 > 2778888
.0001 > 25000001
.0314159 > 255
.00314159 > 25599
.000314159 > 2534463
Entradas de caso de prueba separadas por comas:
0.9, 0.5, 0.4, 0.3, 0.25, 0.2, 0.1, 0.05, 0.03, 0.01, 0.005, 0.003, 0.001, 0.0005, 0.0003, 0.0001, 0.0314159, 0.00314159, 0.000314159
Este es el código de golf , por lo que la respuesta más corta en bytes gana.
JavaScript (ES7),
5150 bytesPruébalo en línea!
(falla para los casos de prueba que requieren demasiada recursividad)
Versión no recursiva,
5756 bytesPruébalo en línea!
O para 55 bytes :
Pruébalo en línea!
(pero este es significativamente más lento)
fuente
J ,
3929 bytesNÓTESE BIEN. Esta versión más corta simplemente usa la fórmula de @ alephalpha.
Pruébalo en línea!
39 bytes, fuerza bruta original
Pruébalo en línea!
Maneja todos los casos de prueba
fuente
Japt ,
1816 bytes-2 bytes de Shaggy
Pruébalo en línea!
fuente
%1 &&
es desagradable, no estoy seguro de si usar la solución de Arnauld sería más corto (tal vez no)Z¬u1
alZ
comienzo de la función.[1,-1]®*U²Ä /U/2 c ²-Z} rm
Pyth,
2221 bytesPruébelo en línea aquí , o verifique todos los casos de prueba a la vez aquí .
Excelente respuesta de otro puerto de alephalpha , ¡asegúrate de darles un voto positivo!
Editar: guardado un byte, gracias a Kevin Cruijssen
fuente
[-1,1]
en 3 bytes, o necesita un reverso adicional para que se convierta en 4 bytes? Si es posible en 3 bytes, puede hacer eso y luego cambiar el*_d
a*d
y el+d
a-d
. Además, ¿Pyth no tiene un mínimo incorporado, en lugar de ordenar y tomar primero?- ... d
embargo, un buen truco para cambiarlo a eso me ahorra un byte. Gracias[1,-1]
o[-1,1]
. Estaba comparando el*d
y-d
con mi respuesta 05AB1E, donde no uso un mapa, pero puedo restar / multiplicar una matriz 2D de / con otra matriz 2D, por lo que no necesito un mapa. Me alegro de poder ayudar a salvar un byte en ese caso. :) Y gracias por la inspiración para mi respuesta 05AB1E.Perl 6 ,
343329 bytes-1 byte gracias a Grimy
Pruébalo en línea!
fuente
>=
con>
. Las raíces cuadradas de los enteros son enteros o irracionales, por lo que el caso de igualdad no puede suceder.APL (Dyalog Unicode) , SBCS de 27 bytes
Pruébalo en línea!
Tren monádico tomando una discusión. Este es un puerto de la respuesta de alephalpha .
Cómo:
fuente
C # (compilador interactivo de Visual C #) ,
898571 bytesPruébalo en línea!
-4 bytes gracias a Kevin Cruijssen!
fuente
n++
bucle en el bucle, para que-1
se pueda eliminar de la devolución:k=>{double n=1,p;for(;Math.Abs(Math.Round(p=Math.Sqrt(0d+n))-p)>k|p%1==0;n++);return n;}
0d+
se puede eliminar, ¿no?n
ya era un dobleJava (JDK) ,
7370 bytesPruébalo en línea!
-3 bytes
gracias a @ceilingcatfuente
Java 8, 85 bytes
Respuesta de C # .NET de Port of EmbodimentOfIgnorance .
Pruébalo en línea.
El
Math.round
puede ser alternativamente esto, pero por desgracia, es el mismo byte-count:Pruébalo en línea.
fuente
MathGolf , 16 bytes
Pruébalo en línea!
No soy un gran fanático de esta solución. Es un puerto de la solución 05AB1E, que se basa en la misma fórmula que utilizan la mayoría de las respuestas.
Explicación
fuente
byte
código de golf? Porque algunos de tus personajes requieren más de un solo byte. No me refiero a molestar, realmente me pregunto :)'ԓ'
carácter es en realidad 2 bytes, pero el resto son caracteres de 1 byte.Adelante (gforth) , 76 bytes
Pruébalo en línea!
Explicación
Inicia un contador en 1 y lo incrementa en un bucle. Cada iteración comprueba si el valor absoluto de la raíz cuadrada del contador: el entero más cercano es menor que k
Explicación del código
fuente
Jalea , 13 bytes
No he logrado obtener nada más terser que el mismo enfoque que alephalpha
: ¡ vota tu respuesta de Mathematica !
Pruébalo en línea!
¿Cómo?
fuente
Japt , 14 bytes
Intentalo
fuente
Perl 5
-p
, 42 bytesPruébalo en línea!
fuente