Учитывая положительное целое число N
, выведите наименьшее положительное целое число так, чтобы это число было палиндромом (то есть его собственным обратным) и делилось на N
.
Палиндрому (то есть результату) не нужно, чтобы начальный ноль был палиндромом, например 080
, не является правильным ответом 16
.
Ввод никогда не будет кратным 10, по предыдущей причине.
Ваша программа может занять столько времени, сколько необходимо, даже если на практике вывод ответа будет слишком долгим.
Входы и выходы
- Вы можете принять ввод через
STDIN
аргумент функции или что-то подобное. - Вы можете распечатать вывод
STDOUT
, вернуть его из функции или чего-либо подобного. - Входы и выходы должны быть в десятичной основе.
Контрольные примеры
N Output
1 1
2 2
16 272
17 272
42 252
111 111
302 87278
1234 28382
счет
Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
N
Ответы:
2sable / 05AB1E , 6/7 байтов
2sable
объяснение
Попробуйте онлайн
05AB1E
Отличие от кода 2sable заключается в том, что ввод неявным образом вводится только в 05AB1E, поэтому здесь нам нужно
¹
снова получить первый ввод.Попробуйте онлайн
Сохранено 1 байт с 2sable, как это было предложено Аднаном
источник
[DÂQ#+
.Haskell,
453734 байтаисточник
Pyth, 7 байт
Попробуйте онлайн: демонстрация
объяснение
источник
Java,
16415912610894 байтаГольф версия:
Безголовая версия:
Привет Эмигне и Кевину Круйссену за внесение улучшений и сокращение байтов почти вдвое :)
источник
x % a == 0
избыточно, когда вы инициализируете x как a и увеличиваете его только на a? Кроме того, можно ли сделать сравнение с обращением строки в условном выражении while?import org.apache.commons.lang.StringUtils;
и использоватьorg.apache.commons.lang.StringUtils.reverse
напрямую.for(;;)
короче чемwhile(1>0)
. Нет необходимости в полноценной программе, простоint c(int a){...}
действительный ответ, так как у вопроса есть следующее правило: « Вы можете принимать входные данные в качестве аргумента функции. Вы можете возвращать выходные данные из функции». @Emigna действительно прав, что проверка по модулю не требуется.x += a
). Мне не нужно проверять делимость :) и спасибо за советы по игре в гольф!C #,
10380 байтUngolfed
источник
x.ToString()
на 'x + "" `спасет кучу символов.Python 2, 46 байт
Идео это!
Рекурсивное решение со
c
счетчиком.Случай для
0
интересен, потому что, хотяc=0
удовлетворяет условию палиндрома, он не будет возвращен, потому чтоccc and 0 or xxx
всегда возвращаетсяxxx
.источник
c*(`c`[::-1]==`c`)or
.PHP, 39 байт
;
через некоторое время ничего не делатьstrrev
вернуть строку назадОдинаковой длины с петлей
источник
Брахилог , 8 байт
Попробуйте онлайн! (около 5 секунд
1234
)Проверьте все тестовые случаи. (около 20 секунд)
источник
Javascript (ES6),
5551 байт4 байта благодаря Нейлу.
источник
+
кажется ненужным.(x,c=x)
вам избежать&&c
?c^[...c+""].reverse().join``?f(x,x+c):c
чтобы сохранить еще один байт.c-
будет работать для немного больших чисел, чемc^
при необходимости.Пайк,
119 байтПопробуй это здесь!
источник
C
217189 байтАвтономная версия:
Вызов версии функции:
Ungolfed:
Вызов функции ungolfed:
Я включил автономную версию для историчности.
Это мой первый Codegolf, любые комментарии приветствуются!
источник
main()
независимо от ваших предпочтений. Вы бы не играли в бейсбол, если бы сначала запустили двенадцать петель, прежде чем ставить метку «потому что я предпочитаю», вы никогда не достигнете безопасной цели. Это соревнование, и основным правилом является использование любых необходимых и законных средств для уменьшения количества байтов.int f(int a)
->f(a)
2) если вам нужно объявить некоторыеint
s, вы можете использовать параметры функции:int f(int a){int b;
->f(a,b){
3)sprintf
никогда не вернет 0, поэтому вы можете использовать вwhile
:while(1){sprintf(c,"%d",b);
->while(sprintf(c,"%d",b)){
4 ) используйте K & R C для определения функции, чтобы вы могли комбинировать с моим вторым намеком:int s(char*a){int b=strlen(a);for(int i=0
->s(a,b,i)char*a;{b=strlen(a);for(i=0;
R
117113109101 байтUngolfed
all(charToRaw(a)==rev(charToRaw(a)))
проверяет, являются ли в каждой позицииa
значенияa
и их обратные одинаковыми (то есть,a
является ли палиндромным).Может быть возможно сыграть в гольф несколько байтов, возиться с
types
.источник
На самом деле ,
1514 байтНа вопрос ответила Лики Монахиня. Предложения по игре в гольф приветствуются. Попробуйте онлайн!
Ungolfing
источник
Haskell,
64 6356 байтПозвонить
(1!)16
или просто1!16
. Попробуйте это на Ideone.источник
VBSCRIPT, 47 байтов
ungolfed
источник
Perl, 25 байт
Включает +2 для
-ap
Запустите с помощью ввода на STDIN:
palidiv.pl
:источник
СИЛОС , 109 байт
Попробуйте онлайн!
источник
Japt , 14 байт
Попробуйте онлайн!
Спасибо ETHproductions за помощь! :)
источник
MATL , 10 байт
Попробуйте онлайн!
источник
PowerShell v2 +, 72 байта
Долго из-за того, как реверсирование обрабатывается в PowerShell - не очень хорошо. ;-)
Принимает ввод
$args[0]
, сохраняет в$i
(наша переменная цикла) и$n
(наш ввод). Циклы бесконечно увеличиваются$i
с$n
каждым разом (чтобы гарантировать делимость).Каждую итерацию мы проверяем,
$i
является ли палиндром. Здесь происходит какая-то хитрость, поэтому позвольте мне объяснить. Сначала мы возьмем$i
и зачеркнем его"$i"
. Затем он индексируется массивом в обратном порядке,["$i".length..0]
а затем-join
возвращается в строку. Он подается в правую часть-eq
оператора uality, который неявно переводит строку обратно в[int]
, поскольку это левый операнд. Примечание: это приведение приводит к удалению любых начальных нулей с палиндрома, но, поскольку мы уверены, что ввод не делится на10
, это нормально.Тогда,
if
это палиндром, мы просто$i
помещаем на трубопровод иexit
. Вывод неявный в конце выполнения.Тестовые случаи
источник
MATLAB, 76 байт
Формат вызова -
p(302)
результат - строка.Ничего умного здесь. Это делает линейный поиск, используя
num2str()
иfliplr()
функцию.Это уродливое расположение на ощупь короче, чем использование
while(1) ... if ... break end
рисунка.Ungolfed
источник
Mathematica, 49 байтов
Начинает поиск с
c = N
и увеличивает,c
если не палиндром и не делится наN
. Когда условия выполнены, выходыc
.источник
Желе, 12 байт
Попробуйте онлайн!
Объяснение:
Эта ссылка принимает 1 аргумент. С
µ
разбить его на 4 части. Начиная с последнего и двигаясь влево:источник
Эликсир , 75 байт
источник
Python 2,
6665 байтi
вход иx
(в конечном итоге) выходнымПролистав другие ответы, я нашел более короткий ответ на Python 2, но приложил усилия к своему решению, так что я мог бы выбросить его сюда. ¯ \ _ (ツ) _ / ¯
источник
[::-1] else
.return x if x%i==0&&
х==
х[::-1]else f(i,x+1)
, что означает, что вы можете сделать его лямбда, а гольф больше байтов?REXX, 46 байт
источник
Python 2 , 44 байта
Попробуйте онлайн!
Я знаю, что вопрос был опубликован более шести месяцев назад, но это было короче, чем любое другое представление Python.
источник
QBIC , 29 байт
Объяснение:
источник
Perl 6 , 35 байт
Объяснение:
источник
Perl 6, 39 байт
(33 не включая
my &f=
)источник