Dado un número cuadrado positivo como entrada. Muestra el número de valores entre la entrada y el siguiente cuadrado más alto.
Ejemplo
Entrada: 1
Salida: 2
Motivo: los números 2 y 3 están entre 1 y 4, el siguiente cuadrado más alto
Entrada: 4
Salida: 4
Motivo: los números 5, 6, 7, 8 están entre 4 y 9
Respuestas:
Jalea , 2 bytes
Pruébalo en línea!
Puerto de mi respuesta de Mathematica (sacar raíz cuadrada, luego doble). Esto se limita a las entradas que se pueden representar exactamente como un número de punto flotante. Si eso es un problema, la solución de tres bytes
ƽḤ
funciona para cuadrados arbitrarios (que Dennis publicó primero pero luego eliminó).fuente
Brain-Flak ,
38, 22 bytesPruébalo en línea!
Estoy muy orgulloso de esta respuesta. OMI, uno de mis mejores campos de golf.
¿Como funciona?
Como muchos otros usuarios han señalado, la respuesta es simplemente sqrt (n) * 2 . Sin embargo, calcular la raíz cuadrada en el ataque cerebral no es muy trivial. Como sabemos que la entrada siempre será un cuadrado, podemos optimizar. Entonces escribimos un ciclo que resta
desde la entrada y realizar un seguimiento de cuántas veces se ejecuta. Una vez que llega a 0, la respuesta es simplemente el último número que restamos menos uno.
Originalmente, había empujado un contador a la otra pila. Sin embargo, podemos usar la pila principal en sí misma como contador, aumentando la altura de la pila.
En el seudocódigo python-y, este es básicamente el siguiente algoritmo:
fuente
Mathematica, 8 bytes
Pruébalo en línea! (Usando matemáticas).
La diferencia entre n 2 y (n + 1) 2 siempre es 2n + 1, pero solo queremos que los valores entre ellos excluyan ambos extremos, que es 2n .
Potencialmente, esto puede acortarse
2#^.5&
según los requisitos de precisión.fuente
Julia 0.5 , 8 bytes
Pruébalo en línea!
fuente
dc, 5
Pruébalo en línea .
Anteriormente leí mal la pregunta. Esta versión funciona para cualquier entrada entera positiva, no solo para cuadrados perfectos:
dc, 12
Pruébalo en línea .
fuente
Gelatina ,
76 bytesMe perdí la advertencia de "la entrada será cuadrada", pero esto funcionará para todos los enteros no negativos ... Martin Ender ya dio la solución de 2 bytes .
Un enlace monádico que devuelve el recuento.
Pruébalo en línea!
fuente
Japt ,
53 bytesPruébalo en línea!
Raíz cuadrada de la entrada, luego multiplique por 2.
fuente
Brain-Flak , 20 bytes
Grita a la increíble respuesta de DJMcMayhem (aunque un poco más de tiempo) aquí
Pruébalo en línea!
Explicación
Este código funciona contando desde el número cuadrado en incrementos impares. Como cada cuadrado es la suma de números impares consecutivos, alcanzará 0 en n 1/2 pasos. El truco aquí es que realmente hacemos un seguimiento de nuestros pasos en un número par y usamos una estática
()
para compensarlo al número impar apropiado. Como la respuesta es 2n 1/2 , este número par será nuestra respuesta. Entonces, cuando llegamos a 0, eliminamos el cero y nuestra respuesta está allí en la pila.fuente
Mathematica, 17 bytes
Pruébalo en línea!
fuente
Octava ,
2510 bytesPruébalo en línea!
Ahorró 15 bytes utilizando el enfoque mucho mejor de Martin. La gama consta de
2*sqrt(n)
elementos. La función hace exactamente eso: se multiplica2
con la raíz de la entrada.fuente
Jalea , 7 bytes
Pruébalo en línea!
Explicación:
fuente
Python 3 , 16 bytes
Pruébalo en línea!
fuente
Ohm , 2 bytes
Pruébalo en línea!
fuente
JavaScript ES6, 10 bytes
Pruébalo en línea!
Math.sqrt
es bastante largo, por eso usamos**.5
fuente
TI-Basic, 3 bytes
Enfoque más simple ...
fuente
05AB1E , 2 bytes
Pruébalo en línea!
Otro puerto de la presentación de Martin Ender ...
fuente
Agregar ++ ,
2220 bytesPruébalo en línea!
¿Quieres saber cómo funciona? Bueno, no temas! ¡Estoy aquí para educarte!
fuente
MATL (
87 bytes)Estoy seguro de que esto se puede reducir significativamente (editar: gracias Luis), pero una solución ingenua es:
Pruébalo en línea!
Explicación:
fuente
2^
porU
(y esto funcionó en la versión 20.1.1 , que era la más reciente en el momento del desafío, por lo que la respuesta sería elegible incluso según nuestro estándar anterior)Pari / GP , 9 bytes
Pruébalo en línea!
fuente
PHP , 44 bytes
Pruébalo en línea!
fuente
Alice , 10 bytes
Pruébalo en línea!
Explicación
De nuevo, calcula 2 sqrt (n) . El diseño ahorra dos bytes sobre la solución estándar:
Desglose del código, excluyendo la redirección de la IP:
fuente
Go , 56 bytes
Pruébalo en línea!
fuente
QBIC ,
199 bytesAhorré un montón copiando el enfoque de @ MartinEnder.
No hay enlace TIO para QBIC, desafortunadamente.
Explicación
fuente
En realidad , 3 bytes
Pruébalo en línea!
fuente
05AB1E ,
43 bytesTachado 4 sigue siendo 4: c
Pruébalo en línea!
fuente
Retina , 21 bytes
Pruébalo en línea! Explicación: Funciona tomando la raíz cuadrada del número basado en el solucionador de números triangulares de @ MartinEnder. Después de hacer coincidir el número cuadrado,
$1
es la diferencia entre el número cuadrado y el número cuadrado anterior, en unario. Queremos la próxima diferencia, pero exclusiva, que es solo 1 más. Para lograr esto, contamos el número de cadenas nulas$1
.fuente
T-SQL, 22 bytes
La entrada es a través de una tabla preexistente, según nuestros estándares .
fuente
Java (OpenJDK 9) / JShell, 17 bytes
Pruébalo en línea!
Nota: Esto requeriría
import java.util.function.*;
obtenerIntFunction<T>
Java 8 o Java 9, pero eljava.util.function
paquete se importa por defecto en JShell.fuente
Haskell, 9 bytes
Pruébalo en línea
La entrada y la salida se tratarán como valores flotantes.
fuente
Noether, 7 bytes
Pruébalo aquí!
Igual que cualquier otra respuesta: genera dos veces la raíz cuadrada.
fuente