Introdução
Esse desafio consiste em encontrar o maior número removendo dígitos y do número original n que possui x dígitos.
Assumindo y=2 n=5263 x=4
, os possíveis números que removem y = 2 dígitos são:
[52, 56, 53, 26, 23, 63]
Portanto, o maior número é 63
qual deve ser a saída para este exemplo.
Outra lógica seria: para cada y, pesquise da esquerda para a direita o dígito que é o próximo dígito maior e remova-o; caso contrário, remova os ú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 os métodos explicados acima funcionam .. é claro, você também pode usar outro método :)
Desafio
O número n não terá mais de 8 dígitos e y sempre será maior que zero e menor que x .
Para evitar um formato estrito de entrada, você pode usar os valores: y n x
da maneira que preferir: como parâmetros em função, entrada bruta ou qualquer outra maneira válida. Só não se esqueça de dizer como você fez isso na sua resposta.
A saída deve ser o número do resultado.
Isso é código-golfe , a resposta mais curta em bytes vence.
Exemplo de entrada e saída
Novamente: você não precisa ser muito rigoroso :)
4 1789823 7 -> 983
1 54132 5 -> 5432
3 69314 5 -> 94
2 51794 5 -> 794
Editar
Alterei a ordem de entrada para refletir o fato de que alguns de vocês podem não precisar do valor x para resolver o problema. x agora é um valor opcional.
fonte
x
é uma informação inútil.x
como entrada pode diminuir o código. (Caso em questão: a minha resposta Julia.)Respostas:
A-Ray ,
97 bytesMinha nova lingua! Segundo a meta, isso é permitido, mas se isso não for aceito, eu o removerei.
Explicação:
Exemplo de entrada (número, x, y):
Saída:
Você pode testar isso com o arquivo .jar fornecido no link do github.
fonte
MATL , 10 bytes
Isso usa versão (9.2.1) do idioma / compilador, anterior a esse desafio.
São necessárias três entradas do stdin nesta ordem: comprimento da string, número de caracteres removidos, string.
Exemplo
EDIT : Experimente online! (o código no link tem
XN
, em vez deXn
se conformar com as mudanças no idioma após este desafio, também,o
não é mais necessário)Explicação
(Isso ainda custa 2 bytes a mais do que deveria devido à função de Octave e Matlab
nchoosek
se comportando de maneira diferente. Corrigido na próxima versão do compilador.)Resposta ao desafio original (requisitos de entrada mais rigorosos): 16 bytes
Usa a versão atual (9.2.1) do idioma / compilador.
Exemplo
Explicação
(Isso deveria ter sido 4 bytes a menos, mas eu preciso disso
wow...c
porque anchoosek
função do Octave , ao contrário do Matlab, não funciona com a entrada de caracteres. Será corrigida para a próxima versão do compilador.)fonte
wow
Seu código é espantado com a sua própria falta;)Pitão -
1198 bytesConjunto de Teste .
fonte
2 5263 4
.Japonês, 19 bytes
Experimente online!
Como funciona
fonte
Braquilog , 30 bytes
Como o OP diminuiu as restrições de IO, isso espera
[Number, NumberOfDigitsRemoved]
como entrada e retorna a resposta como saída, por exemplobrachylog_main([1789823,4], Z).
.Explicação
fonte
Python 3, 69 bytes
Isso define uma função anônima que aceita todos os três argumentos. Aproveitando ao máximo a regra de que "você pode usar os valores:
y n x
da maneira que preferir", escolhi aceitary
ex
como números inteiros en
como uma string. O valor de retorno é uma sequência.Caso alguém ache que isso está estendendo as regras muito longe, esta versão aceita todas as entradas como números inteiros e tem 74 bytes.
E só para começar, também escrevi uma versão de dois argumentos, pegando
y
en
na linha de comando e imprimindo o resultado emSTDOUT
. São 92 bytes.fonte
ES6, 70 bytes
Retorna um resultado numérico, a menos que
y
seja falso en
seja uma sequência. Eu me convenci de que fazer a recursão da maneira errada ainda funciona (minha solução não é aplicável a fazer a recursão correta).Também meu primeiro código de golfe, onde eu uso todos os três sinais de aspas (embora nem todos como aspas), o que me impediu de calcular trivialmente o comprimento.
fonte
Julia,
12895 bytesEsta é uma função que aceita os três valores como parâmetros e retorna um número inteiro.
Ungolfed:
fonte
Haskell, 64 bytes
Exemplo de uso:
(4#7)"1789823"
->"983"
.O número original
n
é usado como uma string. (Não tenho certeza se estou sobrecarregando a regra "nenhum formato de entrada estrita", mas a entrada de string foi necessária (!) Na primeira versão).Como funciona: faça uma lista de todas as subsequências de
n
, mantenha aquelas com comprimentox-y
e escolha o máximo.fonte
Ruby, 40 bytes
Esta é uma função anônima que usa
y
ex
como números inteiros en
como uma string, e retorna uma string. Você pode chamá-lo, por exemplo, como estee ele retornará
"63"
.fonte
MATLAB 40 bytes
Teste:
fonte
Pitão, 45 bytes
tente aqui
fonte
JavaScript (ES6), 78
Uma função recursiva com 2 argumentos ye ed.
y
pode ser numérico ou sequência,d
deve ser uma sequência.Antes que o desafio mudasse, era 107 - ... com todas as esquisitices de entrada / saída ...
Teste
fonte
n-1
deve sery-1
.