У нас есть строго возрастающая последовательность неотрицательных целых чисел, например:
12 11 10
Подождите! Эта последовательность строго не увеличивается, не так ли? Ну, цифры написаны на разных базах. Наименьшая возможная база - 2, самая большая - 10.
Задача состоит в том, чтобы угадать основы, на которых написано каждое число, так что:
- последовательность строго увеличивается,
- сумма базисов максимальна.
Например, решение для образца будет:
6 8 10
потому что под этими основаниями последовательность становится 8 9 10
десятичной - строго возрастающая последовательность, и мы не в состоянии найти основания, для которых последовательность остается строго возрастающей и чья сумма больше чем 6+8+10
.
Из-за второго ограничения решение 3 5 7
не является удовлетворительным: несмотря на то, что последовательность становится 5 6 7
под эти основания - нам нужно максимизировать сумму оснований, и 3+5+7 < 6+8+10
.
Если нет оснований, 2<=b<=10
возможно, что ряд будет строго увеличиваться, например:
102 10000 10
не замужем
0
должен быть выведен.
Последовательность ввода может передаваться наиболее удобным для вашего решения способом (стандартные параметры ввода / параметры командной строки / аргументы функций ...).
источник
1 3 5
восходящая последовательность? Как насчет1 7 22
? (в базе 10)1 3 5
и1 7 22
оба растут под основанием 10. Таким образом, решение для обоих случаев заключается в том10 10 10
, что нам нужно максимизировать сумму базисов, гарантируя, что последовательность возрастает, когда n-е число интерпретируется как записываемое в базе, равной n срок решения.1 1 1
или3 3 4
не растут.Ответы:
Pyth,
313029 байт1 байт благодаря @Jakube.
Демонстрация. Тест Жгут.
Ввод дан на STDIN, пробел разделен. Если разрешен ввод с разделителями новой строки, я могу сократить программу на 2 байта.
Объяснение:
Включение
1
в список возможных баз безопасно, потому чтоi
, который используетint
встроенную1
функцию Python , не допускает в качестве базы и поэтому всегда выдает ошибку, которая перехватывается и отфильтровывается.источник
CJam, 43 байта
Читает аргументы командной строки и печатает массив.
Попробуйте онлайн в интерпретаторе CJam .
Примеры
Как это устроено
источник
Юлия,
1761561451181099997 байтUngolfed:
Используется с входом массива 1d. Если функция назначена
c
, то вы бы позвонили,c([12,11,10])
и она выдаст[6,8,10]
.Примечание: я использовал
dec(i)
внутри команды parseint, но посколькуi
это односимвольное имя переменной, и мне не нужен доступ к компоненту, я использовал"$i"
для получения того же результата.источник
c
, а затемc([12,11,10])
выводите данные[6,8,10]
, которые являются необходимыми базами.[12 11 10]
вместо,[12,11,10]
и это дало нежелательный эффект.Юлия,
259204183 байтаСохранил кучу с помощью Глена О.
Ungolfed + объяснение:
источник
for i=M(A[1]):10,j=M(A[2]):10,k=M(A[3]):10 <code here>end;
, сохраняя восемь для отброшенных двухend;
с и восемь для замены `для` на,
.s=map(parseint,x,[i,j,k])
, сэкономив 18 байт относительно вашего исходного решения и 10 по сравнению с моим предыдущим предложенным улучшением. И вместо тогоs==sort(unique(s))
, использоватьall(diff(s).>0)
для сохранения еще 3 байта.CJam (39 байт)
Это анонимная функция, которая принимает входные данные в виде массива десятичных целых чисел в стеке и оставляет выходные данные в виде массива или целого числа
0
в стеке. Демо онлайн .источник
19
не может быть числом 9 оснований).Python 2 (147 байт)
Вызовите функцию
x
со списком целых.Пример:
печать
источник