Напишите программу для проверки, является ли строка палиндромной, с дополнительным условием, чтобы программа была самой палиндромной.
code-challenge
palindrome
marcog
источник
источник
Ответы:
Рубин
Печатает 1, если ввод палиндром, 0, если это не так. Ввод без перевода строки.
Не использует никаких комментариев, вместо этого он использует 2 хитрости:
0
является истинным в Ruby (толькоnil
иfalse
оценивается как ложное), поэтому1&&z==esrever.z* stup
не оценивается и, следовательно, не может вызвать исключение времени выполнения*
): чтобы избежать синтаксической ошибки вz=esrever.z stup
, мы заставляем синтаксический анализатор проанализировать это какz=esrever.z()*stup
добавление a*
. С другой стороны,*
синтаксический анализ разбирается как оператор splat, который при вызове функции разбивает массив на ряд параметров. Если вместо массива есть только один элемент, он в основном ничего не делает, поэтомуputs *foo
эквивалентенputs foo
.Очевидное решение с использованием комментариев (выводит true / false):
источник
Python без комментариев
Я удивлен, что никто еще не нашел этот трюк, он должен работать на большинстве языков!
источник
print
оператор, и если вы разрешите ввод к указанным в кавычках,raw_input()
может быть сокращен доinput()
. Отсутствует лишний '=' в начале."a\"#;w==]1-::[w;)(tupni_war=w;";w=raw_input();w[::-1]==w;#"\a"
Perl
perl -nle "$s=$_ eq+reverse;print$s;s$tnirp;esrever+qe _$=s$"
без комментариев, просто ловко злоупотребляя оператором подстановки (эй, переменные perl тоже начинаются с $, ну и что?)
источник
Python 2.7
источник
С
Бегущий пример:
источник
Golfscript
источник
PHP
Факты:
$z
строка, входная строка для проверки$t
логическое, TRUE, если входная строка$z
палиндром, FALSE в противном случае$t
Причина, по которой невозможно реализовать палиндромную палиндромную проверку в PHP, заключается в том, что переменные PHP именуются, начиная с
$
. Вы не можете завершить имя идентификатора$
в PHP.источник
PHP
Использует некоторые странные уловки, чтобы избежать этой
$
проблемы, технически это не палиндром, так как мне пришлось пробраться;
в конце.Это рабочий, который использует
/* */
комментарии PHP и тот факт, что вам не нужен конец для них.источник
eval
должно бытьlave
.CoffeeScript
Я на самом деле боролся с обратным написанием слов «split», «reverse» и «join»: \
источник
Groovy
источник
Python 3, 55 байт
Использует комментарий, но короче, чем другой Python, который использует комментарии.
источник
Нечеткое окто гуакамоле , 17 байтов
Не совсем уверен, как определяется победа, но я поставил счет байтов на первое место.
^
получает входные данные и помещает их в первый стекC
копирует первый стек во второй.z
обратная вершина стека, так что «as» становится «sa»..
смещает активный стек, поэтому активный стек имеет вход, а неактивный - обратный.=
проверяет равенство, возвращая0
равенство.i
инвертирует ToS, так0
становится1
, и все остальное в значительной степени становитсяFalse
._
выскакивает и устанавливает временную переменную, которую;
затем печатает.@
завершает программу вручную, чтобы она не попала в обратную сторону. Это делает палиндром.источник
Javascript
Трудно сделать это без комментариев ...
источник