Палиндром является строкой , которая является таким же , вперед и назад, такими как «гоночным».
Напишите программу на некотором языке L, которая принимает любую программу P1 на языке L в качестве входных данных и выводит палиндромную программу P2 на языке L, которая делает то же самое, что и P1.
Вам не нужно беспокоиться об обработке программ ввода с синтаксическими ошибками.
Это код гольф , поэтому выигрывает решение с наименьшим количеством байтов.
code-golf
palindrome
Питер Олсон
источник
источник
x=input();print(x+'#'+x[::-1])
. Подмножество - это набор всех программ, которые не содержат перевода строки.Ответы:
Perl,
5554 байтаЧитает исходный код программы из стандартного ввода и пишет в стандартный вывод.
Результат запуска на себя:
источник
__DATA__
что читается .. например.print while(<DATA>);\n__DATA__
изменит поведение.__DATA__
. :)Java, 225 байт
Вывод на себя (при предварительном подтверждении):
источник
Python 2, 68 байт
Не работает, если выполняется из IDLE, потому что вам нужно сгенерировать символ EOF, чтобы программа не ожидала ввода.
Вывод при запуске на себя:
Спасибо Грегу Хьюгиллу за помощь в решении проблем и в гольф.
источник
GolfScript,
109 байтСовершенно похоже на решение Minitech , но оно хорошо работает с символами новой строки. Он полагается на забавное (и недокументированное) поведение GolfScript, чтобы игнорировать непревзойденный (и незакомментированный)
}
, а также все, что следует за ним.Он потерпит неудачу, если вход содержит несоответствующий
{
, но технически это будет синтаксическая ошибка.Как это устроено
пример
источник
1\n2#
(\n
будет символом новой строки) в качестве ввода.машинный код x86 на DOS (
.com
файл) - 70 байтРаботать с файлами .COM очень легко, потому что «загрузчик» COM помещает содержимое файла по адресу
100h
и переходит туда, программа должна каким-то образом жестко закодировать его конец и игнорировать все после него, поэтому мы можем просто добавить обратная сторона первых N-1 байтов (только предостережение: если программа каким-то образом пытается делать трюки с длиной файла, все ломается).Вот шестнадцатеричный дамп моего
.COM
-palyndromizing.COM
:Он принимает входной файл в командной строке и записывает вывод в stdout; ожидаемое использование что-то вроде
compalyn source.com > out.com
.Комментируемая сборка:
Испытано само по себе, и решения предыдущего вопроса, кажется, работают нормально в DosBox, последует еще более обширное тестирование «канонических» исполняемых файлов DOS.
источник
GolfScript, 8
Не обрабатывает переводы строки, но никто не использует их в GolfScript.
источник
Bash + coreutils, 39 байт
Читает из STDIN и выводит в STDOUT:
источник
( echo 'Hello, World!' )
. Bash в значительной степени игнорирует все послеexit
.Javascript ( ES6 ) Многострочный - 71
Kinda Сорта украл метод комментариев Quincunx здесь:
Одна строка - 49
источник
C ++,
214209 байтРезультат запуска на себя:
источник
Brainfuck, 749 без пробелов (не в гольф)
Это порождает программы, которые отражают палиндромы, то есть они являются зеркальным отражением самих себя.
Учитывая программу, которую он выводит
с
PROGRAM
иMIRROR
заменены программой (без символов без мозговых ошибок) и ее зеркальным отображением.источник
С 168
175Правильно обрабатывает экранированный символ новой строки внутри исходного кода
Редактировать 1 исправлена ошибка, когда последний символ новой строки отсутствовал
Редактировать 2 исправлена ошибка, когда строка внутри комментария заканчивалась на
*
: добавление символа табуляции перед//
комментарием(и игра в гольф еще)
Стандарт C99, действительный код, много предупреждений
Ungolfed
источник
/* *<NL> */int main(){}
C # - 174
Тестовый ввод:
Тестовый вывод:
источник
//
в конце каждой строки.PHP, 96 байт
Пример использования:
В этом нет ничего умного. Это просто кусок кода, который делает работу ... У меня было настроение играть. Я знаю, что этот код изобилует плохими практиками программирования!
Наконец, я с удовольствием приму любую критику и изменения в этот код!
источник
Кобра - 134
источник
Ракетка 133
Неуравновешенный (но все еще очень необходимый):
Выводится, когда в качестве входных данных указана версия без заглавных букв:
источник