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=4los números posibles que eliminan y = 2 dígitos son:
[52, 56, 53, 26, 23, 63]
Entonces, el mayor número es el 63que 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=8para 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 xla 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

xes una especie de información inútil.xcomo 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
XNlugar deXnajustarse a los cambios en el idioma después de este desafío; también,oya 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
nchoosekcomporta 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...cporque lanchoosekfunció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
wowSu 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 xla forma que prefiera", he elegido aceptaryyxcomo enteros yncomo 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
yyndesde 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
ysea falso ynsea 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
nse 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-yy elija el máximo.fuente
Rubí, 40 bytes.
Esta es una función anónima que toma
yyxcomo enteros yncomo 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.
ypuede ser numérico o cadena,ddebe ser una cadena.Antes de que el desafío cambiara, era 107 - ... con todas las rarezas de entrada / salida ...
Prueba
fuente
n-1debería sery-1.