Introducción
Este desafío consiste en encontrar el mayor número eliminando dígitos y del número original n que tiene x dígitos.
Suponiendo que y=2 n=5263 x=4
los números posibles que eliminan y = 2 dígitos son:
[52, 56, 53, 26, 23, 63]
Entonces, el mayor número es el 63
que debe ser la salida para este ejemplo.
Otra lógica sería: para cada y, busque de izquierda a derecha el dígito que el siguiente dígito derecho es mayor, luego elimínelo, de lo contrario, cuando no coincida, elimine los últimos dígitos y .
Usando y=3 n=76751432 x=8
para explicar:
y=3
76751432
-^------ remove 6 because right next 7 is greater
y=2
7751432
---^--- remove 1 because right next 4 is greater
y=1
775432
-----^ the search failed, then remove last y digits
result = 77543
Ambos métodos explicados anteriormente funcionan ... por supuesto, también puedes usar otro método :)
Reto
El número n no tendrá más de 8 dígitos, y y siempre será mayor que cero y menor que x .
Para evitar un formato de entrada estricto, puede usar los valores: y n x
la forma que prefiera: como parámetros en función, entrada sin formato o cualquier otra forma válida. Simplemente no olvides decir cómo lo hiciste en tu respuesta.
La salida debe ser el número del resultado.
Este es el código de golf , gana la respuesta más corta en bytes.
Ejemplo de entrada y salida
Nuevamente: no necesitas ser demasiado estricto :)
4 1789823 7 -> 983
1 54132 5 -> 5432
3 69314 5 -> 94
2 51794 5 -> 794
Editar
Cambié el orden de entrada para reflejar el hecho de que algunos de ustedes pueden no necesitar el valor x para resolver el problema. x es ahora un valor opcional.
fuente
x
es una especie de información inútil.x
como entrada puede acortar el código. (Caso en cuestión: mi respuesta de Julia.)Respuestas:
Rayos A ,
97 bytesMi nuevo idioma! Según el meta, esto está permitido, pero si no se acepta, lo eliminaré.
Explicación:
Entrada de ejemplo (número, x, y):
Salida:
Puede probar esto con el archivo .jar proporcionado en el enlace de github.
fuente
MATL , 10 bytes
Utiliza la versión (9.2.1) del lenguaje / compilador, que es anterior a este desafío.
Toma tres entradas de stdin en este orden: longitud de cadena, número de caracteres eliminados, cadena.
Ejemplo
EDITAR : ¡ Pruébelo en línea! (el código en el enlace tiene
XN
lugar deXn
ajustarse a los cambios en el idioma después de este desafío; también,o
ya no es necesario)Explicación
(Esto todavía cuesta 2 bytes más de lo que debería debido a que la función de Octave y Matlab se
nchoosek
comporta de manera diferente. Se corrigió en la próxima versión del compilador).Respuesta al desafío original (requisitos de entrada más estrictos): 16 bytes
Utiliza la versión actual (9.2.1) del idioma / compilador.
Ejemplo
Explicación
(Esto debería haber sido 4 bytes menos, pero lo necesito
wow...c
porque lanchoosek
función de Octave , a diferencia de la de Matlab, no funciona con la entrada de caracteres. Se solucionará para la próxima versión del compilador).fuente
wow
Su código se sorprende por su propia brevedad;)Pyth -
1198 bytesTest Suite .
fuente
2 5263 4
.Japt, 19 bytes
Pruébalo en línea!
Cómo funciona
fuente
Brachylog , 30 bytes
Dado que OP ha relajado las restricciones sobre IO, esto espera
[Number, NumberOfDigitsRemoved]
como entrada y devuelve la respuesta como salida, por ejemplobrachylog_main([1789823,4], Z).
.Explicación
fuente
Python 3, 69 bytes
Esto define una función anónima que acepta los tres argumentos. Aprovechando al máximo la regla de que "puede usar los valores:
y n x
la forma que prefiera", he elegido aceptary
yx
como enteros yn
como una cadena. El valor de retorno es una cadena.En caso de que alguien sienta que esto está estirando demasiado las reglas, esta versión toma todas las entradas como enteros y tiene 74 bytes.
Y solo por diversión, también escribí una versión de dos argumentos, tomando
y
yn
desde la línea de comandos e imprimiendo el resultado enSTDOUT
. Son 92 bytes.fuente
ES6, 70 bytes
Devuelve un resultado numérico a menos que
y
sea falso yn
sea una cadena. Me he convencido de que hacer la recursión al revés sigue funcionando (mi solución no es aplicable para hacer la recursión correcta).También mi primer código de golf donde uso los tres signos de comillas (aunque no todos como comillas), lo que me impidió calcular trivialmente la longitud.
fuente
Julia,
12895 bytesEsta es una función que acepta los tres valores como parámetros y devuelve un entero.
Sin golf:
fuente
Haskell, 64 bytes
Ejemplo de uso:
(4#7)"1789823"
->"983"
.El número original
n
se toma como una cadena. (No estoy seguro de si estoy haciendo demasiado hincapié en la regla "sin formato de entrada estricto", pero se requirió la entrada de cadena (!) En la primera versión).Cómo funciona: haga una lista de todas las subsecuencias de
n
, mantenga aquellas con longitudx-y
y elija el máximo.fuente
Rubí, 40 bytes.
Esta es una función anónima que toma
y
yx
como enteros yn
como una cadena, y devuelve una cadena. Puedes llamarlo por ejemplo asíy volverá
"63"
.fuente
MATLAB 40 bytes
Prueba:
fuente
Pyth, 45 bytes
pruébalo aquí
fuente
JavaScript (ES6), 78
Una función recursiva con 2 argumentos y y d.
y
puede ser numérico o cadena,d
debe ser una cadena.Antes de que el desafío cambiara, era 107 - ... con todas las rarezas de entrada / salida ...
Prueba
fuente
n-1
debería sery-1
.