Terminología
Un número creciente es aquel en el que cada dígito es mayor o igual que todos los dígitos a la izquierda del mismo (ej. 12239)
Un número decreciente es aquel en el que cada dígito es menor o igual que todos los dígitos a la izquierda del mismo (por ejemplo, 95531)
Un número de rebote es cualquier número que no aumenta o disminuye. Como esto requiere al menos 3 dígitos, el primer número de rebote es 101
La tarea
Dado un número entero n mayor o igual a 1, encuentre la suma de los primeros n números hinchables
Reglas
- Este es el código de golf, por lo que gana la respuesta con la menor cantidad de bytes
- Si su idioma tiene límites en el tamaño del entero (ej. 2 ^ 32-1) n será lo suficientemente pequeño como para que la suma se ajuste al entero
- La entrada puede ser cualquier forma razonable (stdin, archivo, parámetro de línea de comando, entero, cadena, etc.)
- La salida puede tener cualquier forma razonable (stdout, archivo, elemento gráfico de usuario que muestre el número, etc.)
Casos de prueba
1 > 101
10 > 1065
44701 > 1096472981
sort
los números y verificar si son iguales al número original? Eso está usando un incorporado (sort
), pero no es estrictamente un incorporado para verificar si está aumentando. Echa un vistazo a los requisitos del programa no observables y haz X sin Y en nuestra publicación Meta "Cosas para evitar".Respuestas:
Jalea ,
108 bytesPruébalo en línea!
Cómo funciona
fuente
ṚƬ
es extremadamente ordenado ...Pyth , 10 bytes
Pruébalo aquí!
¿Cómo funciona?
fuente
K (ngn / k) , 37 bytes
Pruébalo en línea!
{
}
es una función con argumentox
x{
}\0
aplica los tiempos de{}
encendido0
x
, preservando los resultados intermedios(1+)
es la función sucesora{
}(1+)/x+1
aplica la función sucesora a partir dex+1
hasta que el{}
retorno sea verdadero10\x
son los dígitos decimales dex
a:
asignar aa
|\
es la exploración máxima (máximos parciales) dea
&\
análogamente, es el escaneo mínimoa~|\a
noa
igualar su máximo de escaneo?|
oa~&\a
su escaneo min?+/
sumafuente
JavaScript (ES6), 77 bytes
Pruébalo en línea!
Comentado
fuente
Python 2,
1109289 bytesPruébalo en línea
Esta función determina si un número es hinchable:
fuente
set(map(cmp,`x`[:-1],`x`[1:]))
.map
esa manera.x=s=0\nwhile n:b={-1,1}<=set(map(cmp,`x`[:-1],`x`[1:]));s+=x*b;n-=b;x+=1
ahorra 3 bytesPython 2 , 84 bytes
Pruébalo en línea! O ver un conjunto de pruebas .
fuente
Retina , 93 bytes
Pruébalo en línea! Explicación:
Inicializar
s=i=0
. (s
es el número de#
s antes del:
,i
el número de#
s después).Repite
n
veces.Repita mientras
i
no sea hinchable.Incrementar
i
y hacer una copia en decimal.Convierta los dígitos de la copia a unario. La prueba de rebote utiliza la copia unaria, por lo que solo funciona una vez que
i
se ha incrementado al menos una vez.Añadir
i
as
y borrar la copia de los dígitos unarios, de manera que para la siguiente pasada del bucle interno de la prueba bounciness falla yi
se incrementa al menos una vez.Convierte
s
a decimal.La versión de 121 bytes se calcula en decimal, por lo que podría funcionar para valores mayores de
n
:Pruébalo en línea! Explicación:
Inicializar
s=i=0
.Repite
n
veces.Repita mientras
i
no sea hinchable.Incrementar
i
y hacer una copia.Convierta los dígitos de la copia a unario. La prueba de rebote utiliza la copia unaria, por lo que solo funciona una vez que
i
se ha incrementado al menos una vez.Añadir
i
as
y borrar la copia de los dígitos unarios, de manera que para la siguiente pasada del bucle interno de la prueba bounciness falla yi
se incrementa al menos una vez.Eliminar
i
.fuente
05AB1E , 12 bytes
Pruébalo en línea!
Explicación
fuente
Java 8,
114112 bytesUtiliza una expresión regular para verificar si el número aumenta o disminuye. Pruébelo en línea aquí .
Sin golf:
fuente
Python 2, 250 bytes
fuente
;
para poner tantas declaraciones en una sola línea como sea posible, eliminar espacios en blanco y definir una función para las 2 líneas largas que son muy similares, para que pueda reutilizar parte del código. Además, puedes hacera=b=s=0
ylen(g)!=h-1!=len(d)
.Stax , 14 bytes
Ejecutar y depurarlo
fuente
Rojo , 108 bytes
Pruébalo en línea!
Más legible:
Una buena oportunidad de uso
form
:form i
es 5 bytes más corto queto-string i
fuente
MATL ,
3130 bytesPruébalo en línea!
fuente
R , 96 bytes
Pruébalo en línea!
Explicacion:
fuente
Rubí (123 bytes)
Me parece bastante feo. Bounciness se define en este bloque
x.sort!=x&&x.sort!=x.reverse
fuente
Ruby , 76 bytes
Pruébalo en línea!
fuente
C (gcc), 104 bytes
Pruébelo en línea aquí .
Sin golf:
fuente
u+=!y?--b,o:0,++o
lugar deu+=y?0:o+0*--b,++o
, en;y&=(c-=n%10)<0?:c?2:y)c=n%10,n/=10;
lugar de;)c=n%10,n/=10,y&=(c-=n%10)<0?:c?2:y;