Вызов
Вдохновленный этим видео
Как вы, возможно, знаете, палиндром - это слово, которое пишется так же, как и назад. Слово "PULP" не является палиндромом, но при переводе на азбуку Морзе (с удалением пробела между буквами) "PULP" становится ". - ...-.-...--." который является палиндромом. Ваша задача - написать программу или функцию, которая принимает строку и возвращает значение того, является ли это слово палиндромом в международном азбуке Морзе.
A: .-
B: -...
C: -.-.
D: -..
E: .
F: ..-.
G: --.
H: ....
I: ..
J: .---
K: -.-
L: .-..
M: --
N: -.
O: ---
P: .--.
Q: --.-
R: .-.
S: ...
T: -
U: ..-
V: ...-
W: .--
X: -..-
Y: -.--
Z: --..
правила
вход
Входные данные могут быть приняты в любом разумном формате. В любом случае входная строка будет содержать только буквы. Строка не будет содержать пробелов, чисел или знаков препинания.
Выход
Ваша программа должна выводить 1 из 2 постоянных различных результатов в зависимости от того, является ли ввод палиндромом, например, True / False, 1/0, HOTDOG / NOTHOTDOG
счет
Это код-гольф поэтому выигрывает самый короткий ответ в байтах. Стандартные лазейки запрещены.
Тестовые случаи
Вход => Выход
"PULP" => True
"RESEARCHER" => True
"HOTDOGS" => True
"" => True
"A" => False
"RACECAR" => False
"PROGRAMMING"=> False
"PUZZLES" => False
источник
Ответы:
Желе , 28 байт
Попробуйте онлайн!
Я написал этот ответ, глядя на один из них (прочитайте строки справа налево, и вы получите мою волшебную строку!):
источник
73,540,211,105,102,870,315,464,559,332nd
... что?! Как вы нашли этот номер? Кроме того, как это не займет вечно работать?00ABCDEFGHIJKLMNOPQRSTUVWXYZ
. У Jelly есть встроенные модули для преобразования перестановки в такое число, а такое число обратно в перестановку. Смотрите факториальную базу чисел в Википедии.00ABCDEFGHIJKLMNOPQRSTUVWXYZ
Желе ,
35 32 2725 байт-2 благодаря Деннису (сдвиньте перестановку, чтобы избежать
%32
)Принимает ввод в верхнем регистре; вывод
1
для истинного,0
для ложного.Попробуйте онлайн! Или увидеть набор тестов .
Как?
Предыдущее 35-байтовое решение (также принимает ввод в верхнем регистре) ...
источник
Дьялог АПЛ , 24 байта
Попробуйте онлайн!
dfns
не перестает удивлятьисточник
MBASIC , 325 байт
Первая попытка, прежде чем сюда попадут большие орудия :-)
Выход
источник
JavaScript (Node.js) , 111 байт
Попробуйте онлайн!
источник
Perl 6 , 87 байт
Попробуйте онлайн!
Преобразует слово в серию из 1 и 0 и проверяет, является ли оно палиндромным.
Объяснение:
источник
Python 3 ,
172148104 байтаПервый кодовый гольф. Пожалуйста, будьте добры и предложите любую помощь :)
Это основано на ответе C #: /codegolf//a/175126/83877 . Я взял те же идеи и применил их к Python 3. Я старался изо всех сил, чтобы поиграть в код, но я уверен, что я могу сделать гораздо больше.
РЕДАКТИРОВАТЬ 1: Спасибо @Stephen и @Cowabunghole за помощь в удалении пробелов и ненужного кода.
РЕДАКТИРОВАТЬ 2: Спасибо @JoKing за предложение сделать это в двоичном формате. Это действительно изящный трюк, где '-' и '.' даже не нужны. Это привело к огромному уменьшению байтов.
Решение
Попробуйте онлайн!
источник
while i > 0:
чтобыwhile i>0:
спасти 2 байта. Кроме того, я могу ошибаться, но я думаю, что вы можете отказаться от> 0
всего и просто использоватьwhile i:
. Во-вторых, оператор в цикле while может идти в той же строке, что и while, сохраняя новую строку и отступ. И, наконец, это ужасный совет везде, кроме случаев, когда вы играете в код, но если вы используете Python 2 вместо Python 3, вы можете сэкономить 1 байт/
вместо использования//
для деления.~-i
вместоi-1
. Это то же количество байтов, но вы можете опустить скобки, которые экономят 2 байта.-
и.
. 105 байтовPyth,
3533 байтаКод содержит непечатаемые символы, так что вот hexdump.
Попробуйте онлайн. Тестирование.
объяснение
Начиная с
."
конца кода генерируется азбука Морзе с точками в виде\x08
и тире\x07
, и разделенные табуляцией.c
разбивает строку по вкладкам.XzG
переводит (X
) вход (z
) из алфавита (G
) в этот «алфавит Морзе».s
суммирует (объединяет) символы Морзе вместе. Для пустых входов возвращает 0, но это не проблема._I
проверяет, не изменяется ли результат (I
) при обращении (_
). Для пустого ввода проверяет, не изменяется ли 0 при отрицании.источник
Сетчатка 0.8.2 , 87 байт
Попробуйте онлайн! Ссылка включает в себя тестовые случаи. Объяснение:
Все азбуки Морзе для букв в этом наборе заканчиваются на
.
.Все азбуки Морзе для букв в этом наборе заканчиваются на
-
.Замените каждую букву буквой, код Морзе которой является префиксом этой буквы (здесь
E
иT
просто удаляются через неэкранированный_
, но обычно они превращаются в пробелы). Например,P
азбука Морзе дляW
с дополнительным.
на конце; мы добавили.
вышеперечисленное, так что теперь осталось только расшифроватьW
.Повторяйте вышеуказанные этапы, пока не останется букв.
Если первый и последний символы совпадают, удалите их оба.
Повторите для столько символов, которые соответствуют.
Если это был палиндром, то остается не более одного символа.
источник
Wolfram Language (Mathematica) , 107 байт
Попробуйте онлайн!
Аналогично этому ответу Jelly: мы думаем о коде Морзе как о двоичном и записываем строку, в
" ETIANMSURWDKGOHVF L PJBXCYZQ"
которой положение символа в двоичном коде дает нам код Морзе. Но с дополнительной 1 предваряется , потому что мы хотим , чтобы различатьS = 000
иH = 0000
, например. Затем##2&@@@
одновременно избавляется от этой ведущей 1 и выравнивается.источник
05AB1E , 37 байт
Попробуйте онлайн!
Кодирует алфавит в базе 3, преобразуется в базу 255:
База 255:
Затем, в основном, я разбиваю его на 0, строю строку по позиции и проверяю на палиндром.
источник
C # (.NET Core) , 191 байт
Попробуйте онлайн!
Часть этого ответа была адаптирована из азбуки Морзе Ника Ларсена . Основываясь на комментариях к ответу, это может быть дальше.
Ungolfed:
источник
PowerShell ,
204187 байтПопробуйте онлайн!
Ошибки в пустой строке ... Кто-нибудь может помочь с этим?
Тестовый код (после переноса кода в блок скриптов и присвоения переменной $ Z ...):
Выход:
источник