Учитывая число n
, напишите функцию, которая находит наименьшую базу, b ≥ 2
такую n
как палиндром в базе b
. Например, вход 28
должен возвращать основание, 3
поскольку троичное представление 28 равно 1001. Хотя 93
это палиндром как в основании 2, так и в основании 5, результат должен быть равен 2
2 <5.
вход
Целое положительное число n < 2^31
.
Выход
Верните наименьшую базу b ≥ 2
, так чтобы базовое b
представление n
было палиндромом. Не предполагайте никаких ведущих нулей.
Образцы (вход = выход):
11 => 10
32 => 7
59 => 4
111 => 6
правила
Самый короткий код выигрывает.
code-golf
palindrome
base-conversion
ntomlin1996
источник
источник
n
может быть 1 и 2 не является палиндромом базы 1. Однако каждый позитивn
является базовымn + 1
палиндромом.Ответы:
CJam , 19 байтов / GolfScript, 23 байта
или
Попробуйте онлайн:
Примеры
Как это устроено
Для GolfScript
q~
есть~
,_
есть.
,b
естьbase
,W
есть-1
иg
естьdo
.источник
GolfScript, 20 символов
Другой подход с GolfScript, кроме Денниса . Это позволяет избежать дорогостоящего явного цикла в пользу оператора поиска . Попробуйте онлайн .
источник
x = 1
илиx = 2
. Оба являются однозначными, базовымиx + 1
палиндромами, поэтомуx))
следует это исправить.Mathematica,
6766 байтНе может реально конкурировать с GolfScript здесь с точки зрения размера кода, но результат для 2 32 в основном возвращается мгновенно.
источник
PalindromeQ
для обратной проверки?)Джапт ,
129 байтЕсли я не пропустил трюк (уже поздно!), Это должно работать для всех номеров, включая, по крайней мере,
2**53-1
.В моем (по общему признанию ограниченном и совершенно случайном) тестировании я до сих пор доводил результаты до базового (!). Не так уж и плохо, если учесть, что JavaScript поддерживает только базовые возможности .
11601
310,515
2
36
Попытайся
объяснение
Неявный ввод целого числа
U
.Начиная с
2
, верните первое число, которое возвращает true, когда передано через следующую функцию, сX
текущим числомПреобразовать
U
в массив базовыхX
цифр.Проверьте, является ли этот массив палиндромом.
источник
N.ì(n)
может обрабатывать базы больше, чем36
. Спасибо за это.N.ì(n)
так как мы используем сырые целые числа ;-)Python 2 (83)
Я не уверен, какой формат ввода / вывода хотел вопрос. Я написал функцию. Код использует дополнительный вход
b
для отслеживания текущей базы, которую он тестирует.while
Петли преобразует число в список цифр в базеb
.Последняя строка возвращает
b
if, еслиl
это палиндром, и рекурсивно пытается выполнить следующее вb
противном случае. Трюк с индексированием по логическим значениям здесь не работает, потому что он приведет к тому, что обе опции будут оценены независимо от логического значения, а рекурсия никогда не достигнет дна.источник
JavaScript, 88 байт
Ungolfed:
источник
Javascript, 105 байт
JSFiddle: http://jsfiddle.net/wR4Wf/1/
Обратите внимание, что эта реализация также работает правильно для больших баз. Например,
f(10014)
возвращает 1668 (10014 равно 66 в базе 1668).источник
s/var b=2,c,d/b=d=2/
получить еще 6 байтов;)Bash + coreutils, 100 байт
Использует
dc
сделать базовое форматирование. Хитрость в том, чтоdc
формат отличается при n> 16.Testcases:
источник
J - 28 символов
Разъяснение:
#.inv~
- Разверните левый аргумент до основания в правом аргументе.(-.@-:|.@)
- Вернуть 0, если расширение палиндромно, и 1 в противном случае.(1+]^:)
- Увеличить правильный аргумент на единицу, если мы вернули 1, иначе не предпринимать никаких действий.^:_
- Повторяйте вышеуказанное приращение, пока оно не предпримет никаких действий.&2
- Подготовьте правильный аргумент как 2, сделав это функцией одного аргумента.Примеры:
источник
2+1 i.~[#.inv"*(-:|.@)~2+i.
для 27 байтов. (Не хочу публиковать это отдельно. Я просто оставлю это здесь.)R,
12295 байтТрехлетнее решение на 122 байта:
С некоторыми объяснениями:
источник
Шелуха ,
119 байтСпасибо @Zgarb за -2!
Попробуйте онлайн!
объяснение
источник
Примечание: Pyth новее, чем этот вопрос, поэтому этот ответ не имеет права на победу.
Pyth, 10 байт
Попробуй это здесь.
источник
Скала, 83 байта
источник
05AB1E , 8 байтов
Попробуйте онлайн!
источник
Perl 5 , 84 + 1 (-p) = 85 байт
Попробуйте онлайн!
источник
JavaScript 72 байта
источник
Mathematica 42 байта
Вариант записи Мартина Эндера. Использует
IntegerReverse
(доступно в версии 10.3), без которогоIntegerDigits
.источник
Java 8, 103 байта
Объяснение:
Попробуй это здесь.
источник