Предупреждение: это НЕ вызов "Эй, давайте нарисуем торт в ASCII-искусстве"! Пожалуйста, продолжайте читать;)
Некоторое время назад у меня был день рождения, мне сейчас 33 года.
Таким образом, существует эта неуклюжая социальная традиция, состоящая в том, чтобы приглашать семью и друзей, ставить на торт свечи в виде цифр, петь песни и открывать подарки.
33
--------
Вместо чисел я могу использовать двоичную систему, чтобы поставить стандартные свечи: я помещаю 6 из них на торт и зажигаю две из них.
100001
--------
Я вижу, что как десятичные, так и двоичные числа моего возраста являются палиндромными!
Вызов
Я хочу знать, можно ли поставить любое другое число на торт со свечами и быть палиндромным, десятичным и двоичным.
Напишите программу / функцию для проверки, является ли число палиндромным как в десятичном, так и в двоичном виде. Но подождите, это еще не все: в двоичном для теста учитываются ведущие нули!
вход
Десятичное число х , что я хочу проверить , если это день рождения палиндромический с 0 <х <2 32 -1 (да, люди в моем измерении живут очень долго)
Выход
Правда, если он соответствует именно этим двум условиям, Фальси еще:
- Десятичное представление числа является стандартным палиндромом
- Двоичное представление числа является стандартным палиндромом, и добавление начальных нулей может помочь в этом
Контрольные примеры
1 > 1 => Truthy
6 > 110 (0110) => Truthy
9 > 1001 => Truthy
10 > 1010 (01010) => Falsey, 10 is not palindromic
12 => 1100 (001100) => Falsey, 12 is not palindromic
13 => 1101 (...01101) => Falsey, neither 13 nor 1101 are palindromic
14 => 1110 (01110) => Falsey, 14 is not palindromic
33 > 100001 => Truthy
44 > 101100 (..0101100) => Falsey, 101100 is not palindromic
1342177280 > 1010000000000000000000000000000 (00000000000000000000000000001010000000000000000000000000000) => Falsey, 1342177280 is not palindromic (but the binary representation is)
297515792 > 10001101110111011101100010000 (000010001101110111011101100010000) => Truthy
правила
- Стандартные лазейки запрещены
- Разрешены преобразования и тесты встроенной библиотеки
- Это код-гольф , самый короткий код-выигрыш!
Удачи, и в итоге с днем рождения!
источник
0b01010000000000000000000000000000
не является палиндромным, так как для этого потребуется добавить больше нулей и, следовательно, превысить 2 ^ 32-1? В этом случае было бы1342177280
полезно добавить что-то вроде тестового примера Фэлси.1342177280
это не десятичное палиндромное значение, так что Falsey. РедактированиеОтветы:
05AB1E , 7 байтов
Попробуйте онлайн! или как тестовый набор
объяснение
источник
Python 3 , 59 байт
Попробуйте онлайн!
-3 байта благодаря Роду
-3 байта благодаря Коннору Джонстону
источник
JavaScript (ES6), 65 байт
Возвращает
0
или1
.Как?
Вспомогательная функция g () принимает целое число b в качестве входных данных и проверяет, является ли n палиндромом в базе b . Если b не указан, он просто конвертирует n в строку перед тестированием.
Мы избавляемся от конечных нулей в двоичном представлении n , выделяя наименее значимое 1 с помощью
n&-n
деления n на полученную величину.Забавный факт: это правда,
0
потому что(0/0).toString(2)
равняется"NaN"
, что является палиндромом. (Но0
в любом случае это неверный ввод.)Контрольные примеры
Показать фрагмент кода
источник
Mathematica,
5249 байтПопробуйте на Wolfram Sandbox
использование
объяснение
Версия со встроенным
PalindromeQ
источник
Pyth - 13 байт
Тестовый пакет .
источник
_MI
иjQ2
для сохранения 2 байта:_MI,.sjQ2Z`
Japt , 14 байт
Проверьте это онлайн!
объяснение
источник
sêQ *(¢w)sêQ
иsêQ &¢w n sêQ
297515792
(обратный двоичный код, преобразованный в десятичный, слишком велик для обработки JS) ...Протон , 57 байт
Попробуйте онлайн!
источник
APL,
2731 байтКак это работает? Используя 6 в качестве аргумента ...
Попробуйте это на TryAPL.org
источник
{(⌽¨≡⊢)⍕¨⍵,⊂(⌽↓⍨~⊥~)2⊥⍣¯1⊢⍵}
(это хорошая форма , чтобы обеспечить связь для запуска всего набора тестов)Желе , 8 байт
Попробуйте онлайн!
источник
ȧ
илиa
вместо,µ
потому что иначе это всегда будет правдой.Брахилог , 7 байт
Попробуйте онлайн!
Это много
↔
...объяснение
С неявным вводом и выводом код:
?↔?ḃc↔.↔.
источник
APL (Dyalog Classic) , 26 байтов
объяснение
Попробуйте онлайн!
источник
Perl, 53 +3 (-пал) байта
попробуйте это онлайн
источник
Пыть , 10 байт
Возвращает [1], если истина, [0], если ложь
Попробуйте онлайн!
Объяснение:
источник
Сетчатка , 72 байта
Попробуйте онлайн! Ссылка включает в себя тестовые случаи. Работает, создавая одинарный дубликат исходного числа, но используя
_
s, чтобы его не перепутать, например, с помощью ввода11
. Унарное число затем преобразуется в «двоичный», а завершающие нули удаляются. Затем палиндромы последовательно усекаются, и на последнем этапе проверяется, осталось ли что-нибудь еще.источник
Mathematica, 70 байт
источник
Шелуха , 14 байт
Попробуйте онлайн!
Ungolfed / Пояснение
источник
Gaia , 10 байт
Попробуйте онлайн!
объяснение
Вместо проверки с ведущими нулями в двоичном коде, я проверяю без конечных нулей.
источник
C (gcc) , 105 байт
Попробуйте онлайн!
источник
return
сn=
. ( 95 байт. )C # (.NET Core) ,
130 129 179173 + 23 байтаНесколько слов, спасибо Эд Марти за то, что он указал, что мне нужно проверить, сколько пэдов набито впереди для палиндрома. И мне нужно убедиться, что я могу проверить до х ^ 32 -1.
Попробуйте онлайн!
источник
return
и(
для нихusing System;
иusing System.Linq
Python 2 , 56 байт
Попробуйте онлайн!
Использование языка Python
strip
метода как ИЗВЛЕКИТЕbin(..)
выход «s Ведущее0b
и замыкающих нули двоичного числа (как они всегда будут иметь соответствующий бит).источник
Pyth ,
2522191817 байт-
3678 байт при дальнейшем изучении языкаОбъяснение:
Я уверен, что это может быть в гольфе, я буду работать над этим.
Тестирование
источник
PHP, 69 + 1 байт
Запустить как трубу с
-nR
Echoes оригинальный ввод для правды / ничего для фальси
Попробуйте онлайн!
источник
Октава ,
6866 байтПопробуйте онлайн!
Первичное предложение от Octave.
Мы в основном создаем массив, содержащий число в виде десятичной строки и число в виде двоичной строки с удаленными конечными нулями. Затем мы создаем массив с такими же строками, но с перевернутыми двоичными и десятичными числами. Наконец, сравниваются оба массива, и результат либо true, если они совпадают (оба палиндрома), либо false, если они не совпадают (один или оба не палиндромы).
flip
вместоfliplr
.источник
APL2 (не Dyalog), 36 байт
Сначала позвольте B быть 32-битным представлением N:
Затем отразите В и найдите положение 1-го 1:
Затем отбросьте столько позиций из B. Это сохранит правильное количество ведущих нулей.
Затем выполните FIND и OR-REDUCTION, чтобы увидеть, содержит ли обрезанный B свое зеркало.
Теперь давайте посмотрим на N, десятичное. Самое левое выражение в скобках преобразует N в символьный вектор и проверяет, соответствует ли оно собственному зеркалу.
Наконец, AND объединяет две проверки.
В APL2 я не могу сделать аккуратную лямбду, поэтому я написал однострочник и включил стрелку назначения. Надеюсь, это не обман.
источник
⎕
), чтобы сделать ее полноценной программой? Кроме того, вы можете сократить до(N≡⌽N←⍕N)^∨/(B↓⍨1⍳⍨⌽B)⍷B←(32⍴2)⊤N←⎕
?Java 8,
105104 байтаОбъяснение:
Попробуй это здесь.
источник