Ваша задача проста. Программа считывает строку текста из стандартного ввода и выводит тот же текст в символьной форме. Не разрешается печатать что-либо еще.
Например:
вход: "Привет!", вывод: "! olleH"
Уловка в том , что ваша программа должна иметь возможность делать то же самое, если сам исходный код инвертирован!
Подсчет очков: применяется стандартная оценка по коду-гольфу со следующей модификацией для ограничения скучности
//margorp
program//
стиль ответов: любое решение, представляющее собой палиндром, влечет штраф + 25% к счету, округленному в большую сторону. Это наказание по-прежнему применяется, если вы, например, вставляете в программу символы, которые не имеют каких-либо полезных эффектов, просто чтобы сломать палиндром.
-1%#%1-/1
или-1%#%(0
?Ответы:
APL, 5
Это переворачивает (
⌽
вдоль последней оси) input (⍞
) и сопровождается комментарием (⍝
помечает комментарий в строке). В обратном порядке программа переворачивает (⊖
вдоль первой оси) ввод и сопровождается комментарием. Поскольку ввод всегда будет одномерным, в этом случае⌽
и⊖
функционально эквивалентны. Возможно, это даже хитрее, чем решение GolfScript, поэтому вот более чистое решение (без комментариев), которое набирает 9 баллов .Сначала он захватывает пустой вектор (
⍬
), выравнивает его (монадическое,
) и переворачивает (⊖
вдоль первой оси). Это все еще оставляет пустой вектор. Затем он объединяет (двоичный,
) с входом (⍞
), оставляя вход без изменений. Затем он выравнивает (монадический,
) уже плоский вход и переворачивает его (⌽
вдоль последней оси). Затем он объединяет (двоичный,
) еще один пустой вектор (⍬
) с обратным входом. Это ничего не делает, и оставляет обратный ввод позади. В обратном порядке эта программа делает то же самое, снова основываясь на том факте, что⌽
и⊖
функционально эквивалентна одномерным аргументам.Вы действительно не могли бы сказать, что я добавляю бесполезные символы, чтобы сломать палиндром (две разные функции реверса отличаются при двухмерном вводе; я просто пользуюсь тем, что они действуют одинаково с размерный ввод)
источник
Unix shell - 8 + 25% = 10
Предыдущий ответ на
cat|tac
самом деле не работал,tac
меняет порядок строк, а не порядок символов в строке.источник
Хаскелл, 53
Технически это не палиндром, но, поскольку порядок объявления функций не имеет значения, после изменения у вас точно такая же программа.
источник
main=niam
декларацию в середину, и вы получите палиндром.Руби, 37
Перевернутый:
источник
Tcl, 78
Не палиндром.
источник
exit
в#
(# является параметром, а не началом комментария).\#
в следующей строке будет выполнено#
(не начало комментария, потому что экранировано), который является новымexit
.гс2, 2
(Да, этот язык был создан до испытания. Нет, это не шутка или лазейка. Пробел ASCII (0x20
) обратный .)РЕДАКТИРОВАТЬ: ау, чувак, этот вопрос очень старый? Если бы я только совершил это раньше. : <Я оставлю этот ответ только потому, что это слишком хорошо, чтобы отказаться, хотя.
источник
Golfscript, 9 (7 * 1,25 = 8,75)
грязный, грязный, грязный, но очень короткий.
-1%
означает «выбрать каждый элемент (символ), назад» и#
означает «комментарий к строке». Остальное - лишь немного магии ввода / вывода GolfScript.Это самое короткое «чистое» (без комментариев) решение, которое я нашел ( 14 * 1.25 = 17.5 ):
это означает: нажать пустую строку, отбросить ее, сторнировать ввод, дважды клонировать, разбить ее на части (использовать две копии и создать пустой массив), удалить все из пустого массива, удалить массив emtpy, вставить пустую строку и (неявно) распечатать стек.
источник
Руби, 44
Просто комментарий в конце обычной программы: P
35 символов, + 25% = 44
источник
Tcl 75,25
На этот раз палиндром.
источник
]]
и]]
есть символ \ x1A.)Python 3, 42
кредиты
:-)
), созданная мнойисточник
print(input()[::-1])#)]1-::[)(tupni(tnirp
в Python 3 вместо этого, чтобы сократить счет до 51,25.;
это такая вставка, которая не имеет никакого полезного эффекта.Rebmu : 9 (без штрафа) или 13 (без штрафа)
Скучное решение Ребму - 9 и несет палиндромное наказание. Я все равно покажу "просто потому что"
Использование негласного трюка, заключающегося в том, чтобы замечать заглавные буквы, - это отдельные слова, а отсутствие лидирующей заглавной буквы означает, что мы не делаем набор слов, мы производим пять простых слов:
Что является сокращением для эквивалентного кода (также юридического Rebmu):
Тот факт, что vr и nr не имеют смысла, не имеет значения, потому что, несмотря на то, что они ни к чему не приписаны, они являются действительными словами. Таким образом, оценщик только запускает
return reverse a
... он работает в обе стороны. Но в некотором смысле это аналог скучного мошенничества: код не закомментирован, а мертв и не выполняется по одному пути.Для чего-то более захватывающего, которое не влечет за собой штраф, как насчет этого 13-символьного решения:
Давайте посмотрим, как это обрабатывается на его прямом и обратном путях при расширении. Вперед:
В обратном направлении как
ArvA vr: RV a
:С другой стороны, обратный вариант перезаписывает аббревиатуру для реверса. Но это не палиндром, а всего лишь 13 персонажей. :-)
(Примечание: предполагается, что вы запускаете Rebmu в режиме / args, где a - это аргумент по умолчанию для программы, передаваемой интерпретатору в командной строке, и вы принимаете результат. Если чтение из стандартного ввода на самом деле является обязательным, например, увеличьте с 9 до 11 символов для простого решения:
rnRVrArVRnr
и если вам придется печатать на стандартный вывод из программы, а не принимать выходные данные выражения интерпретатора, который бы тоже добавил пару символов.)источник
JavaScript, 62 * 1,25 = 78
Не слишком креативно, но лучшее, что я могу придумать. (предполагается, что вход хранится в переменной
i
)Я получил это:
63 символа, нет палиндрома
но это было слишком похоже на обман. : PI может сделать гораздо больше тривиальных изменений (например,
i['split']
вместо того, чтобы использоватьi.split
), но все они по-прежнему хотят обманывать: Pисточник
(p=a=>a&&p()==`(p=${p})(i)`?i:i.split``.reverse().join``)(i)
(60 байт) делает это.Пайк, 2 (+ 25%), неконкурирующий
Пайк принимает ввод неявно и выводит неявно.
_
обратная функция.источник
Tcl, 99
Если вызывается несуществующая команда, вызывается специальная
unknown
команда, которая может загрузить команду. Или делать другие забавные вещи.источник
T-SQL, 86 * 1,25 = 108
Вот скучная палиндромная запись для SQL Server 2008 (и новее), чтобы показать, что это возможно.
@ содержит вводимый текст, пример строки «Привет». Число символов этой записи для входной строки из двух символов.
источник
Кег , ceil (1 + 0,25) = 2 байта
Это принимает входные данные и обращает, а неявный вывод выводит их буквально. TIO
источник
Befunge-98 (PyFunge) , 17 байт
Попробуйте онлайн!
Попробуйте онлайн! (Обращено)
источник
QBIC , 14 + 25% = 18 байт
Использует палиндромный исходный код. Использование двух разных способов сделать это занимает несколько больше времени (34 байта):
Объяснение:
источник
Напористый , 7 байтов (5 + 25%)
Попробуйте онлайн!
Это влечет за собой 25% штраф, так как это палиндром, но это лучшее, что я мог сделать. Независимо от того, какой способ запускает программа, она выполняет следующие 3 команды:
Подставляя
i
вc
(ясный стек) или\
(комментарий) имеет тот же эффект.источник
05AB1E , 1 + 25% = 2 байта
Попробуйте онлайн!
источник
R 65 байт
РЕДАКТИРОВАТЬ: Отказ от 25% штрафа благодаря тривиальным, но пока невидимым для меня, изменения от Грими.
Попробуйте онлайн!
Скажите привет ужасной способности R обрабатывать строки, даже когда вы используете пакеты, предназначенные для таких строк, как
stringi
... barfисточник