Desafío :
Compruebe si el número dado forma un number staircase
o no
Entrada:
Un entero (mayor que 0 y no decimal). NOTA: Puede tomar la entrada como cadena, matriz de dígitos.
Salida:
un valor verdadero / falso dependiendo de si el número forma una escalera o no
Escalera de número:
Una escalera numérica es un número entero que, cuando se lee de izquierda a derecha:
- Empieza con 1
- que puede ser seguido por 2
- que puede ser seguido por 3
- y así hasta
n
- entonces el número desciende comenzando en n - 1
- entonces n - 2
- entonces n - 3
- y así hasta que llegue a 1
Nota :
El puede ser parte se utiliza para indicar que si la longitud> es mayor que 1. Si se trata de la orden debe respetarse como es. es decir: 12321
Ejemplo:
12321 ---> true
12345654321 ---> true
9 ---> false
1 ---> true
2 ---> false
123421 ---> false
112312318901323 ---> false
123456789101110987654321 ---> true
Nota :
La entrada dada siempre será un número entero mayor que 0 y no será un decimal. Su salida debe ser un truthy or falsy
valor dependiendo de la entrada
Restricciones:
Este es el código de golf, por lo que gana el código más corto en bytes (para cada lenguaje de programación).
code-golf
math
number
decision-problem
Muhammad Salman
fuente
fuente
[1,2,3,4,5,6,7,8,9,1,0,1,1,1,0,9,8,7,6,5,4,3,2,1]
para123456789101110987654321
?Respuestas:
R , 97 bytes
Pruébalo en línea!
Toma
n
como unacharacter
o unainteger
; el usocharacter
dará resultados correctos para enteros que no se pueden mantener con precisión como 64 bitsdouble
.Genera números de escalera hasta que encuentra uno al menos el tiempo que
n
sea, luego prueba la igualdad.Equivalente a:
fuente
function(n)
porn=scan();
más corto? (para enteros, por supuesto)Jalea , 5 bytes
Pruébalo en línea!
Advertencia: muy lento (rápido para
1
y121
)! PrepárateDL
para hacerlo más rápido.fuente
JavaScript (ES6),
6257 bytesGuardado 2 bytes gracias a @ l4m2
Devuelve un booleano.
Pruébalo en línea!
¿Cómo?
Comenzando con k = 1 , buscamos k al principio y al final de la cadena, e iteramos recursivamente el proceso en la subcadena central restante con k + 1 . La recursión se detiene tan pronto como ya no hay coincidencia. La entrada es un número de escalera si la última subcadena es igual a k .
Ejemplo para s = "1234321":
fuente
m[0]==s&
lugar lo haría pasar todos los casos de prueba (pero aún fallaría en otros como"123217"
).f=(s,k=1)=>(m=s.match(`^${k}(.*)${k}$`))?f(m[1],k+1):s==k
?Haskell ,
5554 bytes-1 byte gracias a Laikoni !
Pruébalo en línea!
fuente
Pyth,
1312 bytesGuardado un byte gracias a RK.
Pruébalo aquí
Explicación
Si realmente desea la entrada como un entero, puede usarla
}Qmsjk+Sd_Std
en su lugar, pero esto es horriblemente lento.fuente
/
lugar de hacerlo}Q
para que se complete automáticamenteQ
al finalPython 2 , 69 bytes
Pruébalo en línea!
fuente
C # (Visual C # interactivo Compilador) ,
138107102 bytesPruébalo en línea!
Explicación:
fuente
Zip...Skip
método en mi comentario anterior falla[1,1]
, lo que debería volvertrue
si entiendo la especificación. Lo he eliminado05AB1E ,
98 bytesAdvertencia: ¡EXTREMADAMENTE LENTO! Agregue
g
al inicio para acelerarlo.Pruébalo en línea!
Explicación:
Vieja explicación:
Pruébalo en línea!
fuente
gLη€ûJså
es otro, donde puedes ver la vectorización de la palindromización usando€û
palindromizar cada una.gLη€ûJså
para un 8-byte que no explota TIO.Python 2 , 77 bytes
Pruébalo en línea!
fuente
Stax , 14 bytes
Ejecutar y depurarlo
Muy lento para números más grandes.
fuente
agregado ,
575546 bytesPruébalo en línea! Ah, eso es mucho más elegante.
Con
Generate
(49 bytes):Explicación
La función de generación simplemente crea el
N
número de escalera. Entonces, esta búsqueda termina una vez que`>=:`#&_
está satisfecha. Ampliado, esto es:Entonces, esto termina una vez que la longitud de la salida de la función de generación es al menos la de las entradas. Por lo tanto, esto genera el número de escalera más pequeño al menos tan largo como el número de entrada. Por lo tanto, si la entrada es un número de escalera, el resultado será el mismo número de escalera y, de lo contrario, el siguiente número de escalera más largo. Como tal, un simple chequeo con igualdad a la entrada original es suficiente para determinar si era o no un número de escalera.
Adjunto, 55 bytes
Pruébalo en línea! Con plan de recursión.
fuente
J , 40 bytes
Pruébalo en línea!
No estoy muy contento con esta solución, mucho
@
y boxeo<
.fuente
SNOBOL4 (CSNOBOL4) , 109 bytes
Pruébalo en línea!
Curiosamente, reemplazar
'1'
en la segunda línea1
hace que el programa falle en la entrada de1
.fuente
K , 36 bytes
Toma una cadena como "12321" como parámetro.
Esta función está escrita como una larga cadena de aplicaciones de funciones, como en
f g h x
, así que lea las versiones comentadas desde abajo, hacia arriba.{x+1}
es decirlambda x: x+1
, x es un nombre de parámetro predeterminado. Echa un vistazo a https://pastebin.com/cRwXJn7Z o la ayuda del intérprete para conocer los significados del operador.Generamos el número de escalera con
n
en el medio por{,/$(1+!x),1+1_|!x}
:Toda la función
{|/($x)~/:{,/$(1+!x),1+1_|!x}'1+!#x}
:fuente
Haskell ,
646058 bytes-6 gracias a @BMO!
Pruébalo en línea!
fuente
12345678910987654321
, si eres capaz de construir una lista con tantos elementos.Perl 5
-lp
, 49 bytesPruébalo en línea!
0
= verdad, cualquier otra cosa = falsedadfuente
Java 10, 142 bytes
Pruébalo en línea.
Explicación:
fuente
Japt, 11 bytes
Toma la entrada como una cadena.
Intentalo
Explicación
Alternativa,
109 bytesEsta solución, que puede tomar la entrada como una cadena o un entero, devolverá una serie de números para la verdad o, eventualmente, arrojará un error para falsey, si no paraliza su navegador antes de eso. Usar con precaución.
Intentalo
fuente
Retina ,
4543 bytesPruébalo en línea! El enlace incluye casos de prueba. Editar: Guardado 2 bytes gracias a @Leo. Explicación:
Inicializar
n
a1
.Mientras
s
comienza y termina conn
:Eliminar
n
de los extremos des
e incrementarn
.Prueba si
n
queda.fuente
\d
s pueden llegar a ser.
y AHORRARLE dos bytesRegex (PCRE) , 92 bytes
Pruébalo en línea!
Estoy abierto a cualquier sugerencia para mejorar esto.
fuente
Gracias a los siguientes usuarios:
Python 2 , 147 bytes
Pruébalo en línea!
fuente
true
y losfalse
valores verdaderos y falsos.1
y0
funcionaría por ejemplos[0]
lugar destartswith
? Se permiten errores, y puede decir 'salidas 1 para escalera, cualquier otra cosa (incluso nada) [ya que se ignora stderrr] para no escalera'.g
que nunca es 1. Probablemente debería probar estas soluciones antes de publicarlas ...