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

sortlos 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?
sf! SI # _B` - Programa completo. Toma un entero Q de STDIN y sale a STDOUT. .f - Encuentra los primeros Q enteros positivos que satisfacen una determinada condición. ! SI # _B - La condición. Devuelve verdadero solo para números hinchables. _B` - Emite el número a una cadena y bifurca (empareja) con su reverso. # - Filtrar-guardar esos ... I - Que son invariables bajo ... S - Clasificación. - Para aclarar, I (invariante) es un operador Pyth que toma dos entradas, una función y un valor y comprueba si function (value) == value, entonces Esto técnicamente no es una función incorporada. ! - Lógico no. La lista vacía se asigna a verdadero, otros valores a falso. s - Suma.fuente
K (ngn / k) , 37 bytes
Pruébalo en línea!
{}es una función con argumentoxx{}\0aplica los tiempos de{}encendido0x, preservando los resultados intermedios(1+)es la función sucesora{}(1+)/x+1aplica la función sucesora a partir dex+1hasta que el{}retorno sea verdadero10\xson los dígitos decimales dexa:asignar aa|\es la exploración máxima (máximos parciales) dea&\análogamente, es el escaneo mínimoa~|\anoaigualar su máximo de escaneo?|oa~&\asu 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:])).mapesa manera.x=s=0\nwhile n:b={-1,1}<=set(map(cmp,`x`[:-1],`x`[1:]));s+=x*b;n-=b;x+=1ahorra 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. (ses el número de#s antes del:,iel número de#s después).Repite
nveces.Repita mientras
ino sea hinchable.Incrementar
iy 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
ise ha incrementado al menos una vez.Añadir
iasy borrar la copia de los dígitos unarios, de manera que para la siguiente pasada del bucle interno de la prueba bounciness falla yise incrementa al menos una vez.Convierte
sa 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
nveces.Repita mientras
ino sea hinchable.Incrementar
iy 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
ise ha incrementado al menos una vez.Añadir
iasy borrar la copia de los dígitos unarios, de manera que para la siguiente pasada del bucle interno de la prueba bounciness falla yise 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=0ylen(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 ies 5 bytes más corto queto-string ifuente
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.reversefuente
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,++olugar 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;