Напишите программу, которая читает из stdin два целых числа, каждый символ новой строки завершается, в дальнейшем называемые «number» и «radix», и:
- Печать любого фиксированного сообщение , которое вы хотите , если число палиндром в этой системе счисления (например
true
,t
,1
) - Печать любого другого фиксированного сообщение , которое вы хотите , если число не палиндром в этой системе счисления (например
false
,f
,0
и т.д.) - Эти сообщения должны быть одинаковыми для каждого пробега, но нет никаких правил относительно того, какими они должны быть (что лучше для игры в гольф).
- Вы можете предположить, что ввод действителен, два положительных целых числа. «число» не будет превышать
2147483647
, «основание» не будет превышать32767
. - Вы не можете использовать внешние ресурсы, но вы можете использовать любую математическую функцию, включенную по умолчанию на вашем языке.
Примечание: основание - это просто основание числа.
Образцы прогонов:
16
10
false
16
3
true
16
20
true
121
10
true
5
5
false
12346
12345
true
16781313
64
true
16781313
16
true
Ответы:
J (23 символа) и K (19) двойная функция
Эти два языка очень похожи, как в целом, так и в этом конкретном гольфе. Вот J:
,~1
- Добавьте число 1 к себе, составив массив1 1
.1!:1
- Чтение двух строк с клавиатуры (1!:1
означает чтение и1
является дескриптором файла / номером для ввода с клавиатуры).".
- Конвертировать каждую строку в число.#.^:_1~/
-F~/ x,y
значит найтиy F x
. НашеF
есть#.^:_1
, которое выполняет расширение базы.(-:|.)
Аргумент соответствует (-:
) его обратный (|.
)?1
да,0
нет.А вот и К:
0::'``
- Считать в (0::
) строку для каждой строки ('
) из консоли (`
это дескриптор файла для этого)..:'
- Преобразуйте (.:
) каждую ('
) строку в число._vs/|
- Переверните пару чисел так, чтобы основание было перед числом, и затем вставьте (/
) базовую функцию расширения_vs
(«вектор из скаляра») между ними.a~|a:
- Присвойте это результирующее расширениеa
, а затем проверьте, соответствует лиa
match (~
) его reverse (|
). Опять же,1
да,0
нет.источник
GolfScript, 10 символов
Это легко для GolfScript, если мы делаем это простым способом. Выход
0
/1
ложь / истина.источник
APL (20)
Выходы
0
или1
, например:Объяснение:
⎕{
...}⎕
: прочитать два числа, передать их функции.⍵
это первое число и⍺
второе число.⌊1+⍺⍟⍵
:floor(1+⍺ log ⍵)
, количество цифр, необходимое для представления⍵
в базе⍺
.⍺/⍨
: база для каждой цифры, поэтому⍺
повторяется число, которое мы только что рассчитали.⍵⊤⍨
: представлять⍵
в заданной базе (используя числа, поэтому она работает для всех значений⍺
).≡∘⌽⍨
: посмотреть, равен ли результат обратному.источник
Perl,
82777369 байтВходные числа ожидаются как входные строки STDIN, а результат записывается как
1
или0
, первое значение означает, что первое число является палиндромом в его представлении данной базы.Редактировать 1: Использование
$=
сохраняет некоторые байты из-за его внутреннего преобразования в int.Редактирование 2: оператор smartmatch
~~
сравнивает элементы массива напрямую, поэтому преобразование в строку не требуется.Редактировать 3: Оптимизация путем удаления ненужной переменной.
65 байт : если для вывода разрешена пустая строка
false
, последние четыре байта могут быть удалены.Неуправляемая версия
Алгоритм хранит цифры преобразованного числа в массиве
@a
. Затем строковое представление этого массива сравнивается с массивом в обратном порядке. Пробелы отделяют цифры.источник
$=
позволю вам сделатьint
шаг ... И вопрос означает,anything you want
что ничто не может быть тем, что вы хотите ;-)$=
Также дано подсказка в этом ответе на вопрос «Советы по игре в гольф на Perl» . Возврат0
стоит 6 дополнительных байтов, но у меня сложилось впечатление, что фиксированное сообщение не должно быть пустым.silence
Javascript 87
n
аргумент - это число,b
аргумент - это основание.источник
Мудрец, 45
Запускается в интерактивном режиме
Печатает,
True
когда это палиндром, печатаетFalse
иначеисточник
Perl
54 5662Для проверки:
даст:
Поэтому этот выход
1
дляtrue
когда не будет найден и палиндром ничего , если еще.Ungolfing:
Примечание :
$_
является текущим буфером строки и пуст в начале.$=
является зарезервированной переменной, первоначально используемой для строчной печати, это счетчик строк. Таким образом, эта переменная является целым числом , любое вычисление этого приведет к усеченному целому числу, как если бы оноint()
использовалось.$-
был использован для развлечения, просто чтобы не использовать традиционные буквы ... (немного больше запутывания) ...источник
Mathematica
7743IntegerDigits[n,b]
представляет n как список цифр в базе b. Каждая цифра base-b выражается десятичным числом.Например, 16781313 не является палиндромом в базе 17:
Тем не менее, это палиндром в базе 16:
Если упорядоченные пары в приведенных выше примерах были введены,
вернется
источник
Integer
Haskell (80 символов)
Назовите его
pali $number $radix
. Правда, когда число - палиндром, Ложь, если нет.источник
Рубин - 76 символов
источник
Perl 6 , 27 байт (22 без стандартного ввода / вывода)
Попробуйте онлайн!
Perl6, король читаемых гольфов (golves?) (А также некоторых не очень удобочитаемых).
Функция Perl 6 (без стандартного ввода / вывода), 22 байта
Попробуйте онлайн!
источник
base
свой ответ, заключается в том, что онbase
поддерживает только до базы 36, и вопрос требует поддержки радиусов до32767
дг - 97 байт
Опробовать dg :
Разъяснение:
источник
С
140132источник
puts(m)
будет работать правильно?printf("%d",m);
будет на 8 символов короче.Хаскелл - 59
Несколько изменений в ответе Макса Рида.
источник
Pyth , 4 байта
Попробуйте здесь или проверьте набор тестов (занимает ~ 10-15 секунд).
источник
постоянный ток, 39 байт
Длина палиндрома, конечно (
33₁₂
).Число и основание должны быть на вершине стека (в текущей базе номеров); число должно быть не менее 0, а основание должно быть не менее 2. Выход -
t
если это палиндром, аf
если нет. Поскольку это не указано в задании, я предположил, что числа никогда не имеют начальных нулей (поэтому любое число, заканчивающееся на,0
не может быть палиндромом).объяснение
Как полная программа:
источник
LaTeX, 165 байт
Пример на desmos.com
k
ось, регулируемый входЕсли
f(x)=0
,x
палиндром в базеk
.источник
Perl 6 , 34 байта
-4 байта благодаря PhilH
Попробуйте онлайн!
источник
05AB1E ,
43 байтаПопробуйте онлайн или проверьте все контрольные примеры .
Объяснение:
источник
C (gcc) , 79 байтов
Попробуйте онлайн!
Наезжать
Исходя из того, что для палиндрома обратное число должно равняться самому числу.
Предположим, у вас есть трехзначное число ABC в некоторой базе. Умножение его на основание всегда будет приводить к ABC0, а деление его на основание в AB с C в качестве остатка. Таким образом, чтобы перевернуть число, мы берем самую правую цифру от исходного числа и вставляем ее справа от перевернутого числа. Чтобы освободить место для этой цифры, мы умножаем обратное значение на базу заранее.
В принципе:
источник