Введение
Эта задача состоит в том, чтобы найти наибольшее число, удалив y цифр из исходного числа n, которое имеет x цифр.
Предполагая y=2 n=5263 x=4
, что возможные числа, удаляющие y = 2 цифры:
[52, 56, 53, 26, 23, 63]
Таким образом, наибольшее число 63
должно быть выходом для этого примера.
Другая логика была бы следующей: для каждого y ищите слева направо цифру, следующая справа от которой больше цифры, затем удаляйте ее, в противном случае, если нет совпадения, удаляйте последние цифры y .
Используя, y=3 n=76751432 x=8
чтобы объяснить:
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
Оба метода, описанные выше, работают .. конечно, вы можете использовать и другой метод :)
Вызов
Число n не будет иметь более 8 цифр, а у всегда будет больше нуля и меньше х .
Чтобы избежать строгого формата ввода, вы можете использовать значения: y n x
по своему усмотрению: в качестве параметров в функции, необработанного ввода или любым другим допустимым способом. Только не забудьте сказать, как вы это сделали в своем ответе.
На выходе должен быть номер результата.
Это код-гольф , выигрывает самый короткий ответ в байтах.
Пример ввода и вывода
Опять же: не нужно быть слишком строгим :)
4 1789823 7 -> 983
1 54132 5 -> 5432
3 69314 5 -> 94
2 51794 5 -> 794
редактировать
Я изменил порядок ввода, чтобы отразить тот факт, что некоторым из вас может не понадобиться значение x для решения проблемы. х теперь является необязательным значением.
источник
x
это какая-то бесполезная информация.x
вход в качестве кода может сократить код. (Показательный пример: мой ответ Юлии.)Ответы:
A-Ray ,
97 байтовМой новый язык! Согласно мета, это разрешено, но если это не принято, то я его удалю.
Объяснение:
Пример ввода (число, х, у):
Выход:
Вы можете проверить это с помощью файла .jar, указанного в ссылке на github.
источник
MATL , 10 байт
При этом используется версия (9.2.1) языка / компилятора, которая является более ранней, чем эта проблема.
Он принимает три входа из stdin в следующем порядке: длина строки, количество удаленных символов, строка.
пример
РЕДАКТИРОВАТЬ : попробуйте это онлайн! (код в ссылке
XN
вместо того,Xn
чтобы соответствовать изменениям в языке после этого вызова; такжеo
больше не нужен)объяснение
(Это по-прежнему стоит на 2 байта больше, чем следовало бы из-за
nchoosek
различий в функциях Octave и Matlab . Исправлено в следующей версии компилятора.)Ответ на оригинальный запрос (более строгие требования к вводу): 16 байт
Использует текущую версию (9.2.1) языка / компилятора.
пример
объяснение
(Это должно было быть на 4 байта меньше, но мне это нужно,
wow...c
потому чтоnchoosek
функция Octave , в отличие от функции Matlab, не работает с вводом символов. Будет исправлена в следующем выпуске компилятора.)источник
wow
Ваш код поражен своей собственной короткостью;)Pyth -
1198 байтТестовый пакет .
источник
2 5263 4
.Japt, 19 байт
Попробуйте онлайн!
Как это работает
источник
Брахилог , 30 байт
Так как OP ослабил ограничения на IO, он ожидает
[Number, NumberOfDigitsRemoved]
ввода и возвращает ответ в качестве вывода, напримерbrachylog_main([1789823,4], Z).
.объяснение
источник
Python 3, 69 байт
Это определяет анонимную функцию, принимающую все три аргумента. Воспользовавшись в полной мере правилом «вы можете использовать значения:
y n x
так, как вы предпочитаете», я решил приниматьy
иx
как целые числа, иn
как строку. Возвращаемое значение является строкой.На всякий случай, если кто-то считает, что это слишком сильно расширяет правила, эта версия принимает все входные данные как целые числа и составляет 74 байта.
И просто для удовольствия, я также написал версию с двумя аргументами, взяв
y
иn
из командной строки и напечатав результат вSTDOUT
. Это 92 байта.источник
ES6, 70 байт
Возвращает числовой результат, если
y
не ложно и неn
является строкой. Я убедил себя, что выполнение рекурсии неправильным способом все еще работает (мое решение не применимо к выполнению правильной рекурсии).Также мой первый кодовый гольф, где я использую все три знака кавычек (хотя не все как кавычки), что помешало мне тривиально вычислить длину.
источник
Юлия,
12895 байтовЭто функция, которая принимает три значения в качестве параметров и возвращает целое число.
Ungolfed:
источник
Haskell, 64 байта
Пример использования:
(4#7)"1789823"
->"983"
.Оригинальный номер
n
принимает в качестве строки. (Не уверен, что я переусердствую в правиле «без строгого формата ввода», но в первой версии требовался ввод строки (!)).Как это работает: составьте список всех подпоследовательностей
n
, сохраните их с длинойx-y
и выберите максимум.источник
Рубин, 40 байт
Это анонимная функция, которая принимает
y
иx
как целые числа, иn
как строку, и возвращает строку. Вы можете назвать это, например, таки он вернется
"63"
.источник
MATLAB 40 байтов
Тест:
источник
Pyth, 45 байт
попробуйте здесь
источник
JavaScript (ES6), 78
Рекурсивная функция с 2 аргументами y и d.
y
может быть числовым или строковым,d
должно быть строковымДо изменения задачи было 107 - ... со всеми странностями ввода / вывода ...
Тест
источник
n-1
должно бытьy-1
.