Рубиновый вопрос - PullRequest
       2

Рубиновый вопрос

13 голосов
/ 17 июля 2010

Я получил этот вопрос в предыдущем интервью и не мог сделать это, любая идея?

Что это делает:

`$=`;$_=\%!;($_)=/(.)/;$==++$|;($.,$/,$,,$\,$",$;,$^,$#,$~,$*,$:,@%)=( 
$!=~/(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/,$"),$=++;$.++;$.++; 
$_++;$_++;($_,$\,$,)=($~.$"."$;$/$%[$?]$_$\$,$:$%[$?]",$"&$~,$#,);$,++ 
;$,++;$^|=$";`$_$\$,$/$:$;$~$*$%[$?]$.$~$*${#}$%[$?]$;$\$"$^$~$*.>&$=` 

Ответы [ 5 ]

17 голосов
/ 17 июля 2010

Это код Perl, который выводит «Просто еще один Perl-хакер».

Хотя большинство переменных $_, $= и т. Д. Также доступны в Ruby, наличие таких выражений* * * * * * * * * * * * * * * * * * * * * * * * * * * * '' '' * '') * * * * * * * * * * * * * * * * * * * * * * '' * '' * '' * '' '',Я что-то напутал, поскольку теперь вывод «просто еще один на хакера» (на Perl отсутствует буква «L»), но вот что я придумал:

use English;
`$FORMAT_LINES_PER_PAGE`;
$ARG=\%!;($ARG)=/(.)/;$FORMAT_LINES_PER_PAGE=++$OUTPUT_AUTOFLUSH;
($INPUT_LINE_NUMBER,$/,$OUTPUT_FIELD_SEPARATOR,$OUTPUT_RECORD_SEPARATOR,$LIST_SEPARATOR,$SUBSCRIPT_SEPARATOR,$FORMAT_TOP_NAME,$OFMT,$FORMAT_NAME,$MULTILINE_MATCHING,$FORMAT_LINE_BREAK_CHARACTERS,@%)=(
$!=~/(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/,$LIST_SEPARATOR),$FORMAT_LINES_PER_PAGE++;
$INPUT_LINE_NUMBER++;
$INPUT_LINE_NUMBER++; $ARG++;$ARG++;
($ARG,$OUTPUT_RECORD_SEPARATOR,$OUTPUT_FIELD_SEPARATOR)=($FORMAT_NAME.$LIST_SEPARATOR."$SUBSCRIPT_SEPARATOR$/$FORMAT_PAGE_NUMBER[$CHILD_ERROR]$ARG$OUTPUT_RECORD_SEPARATOR$OUTPUT_FIELD_SEPARATOR$FORMAT_LINE_BREAK_CHARACTERS$FORMAT_PAGE_NUMBER[$CHILD_ERROR]",$LIST_SEPARATOR&$FORMAT_NAME,$OFMT,);
$OUTPUT_FIELD_SEPARATOR++ ;
$OUTPUT_FIELD_SEPARATOR++;
$FORMAT_TOP_NAME|=$LIST_SEPARATOR;
`$ARG$OUTPUT_RECORD_SEPARATOR$OUTPUT_FIELD_SEPARATOR$/$FORMAT_LINE_BREAK_CHARACTERS$SUBSCRIPT_SEPARATOR$FORMAT_NAME$MULTILINE_MATCHING$FORMAT_PAGE_NUMBER[$CHILD_ERROR]$INPUT_LINE_NUMBER$FORMAT_NAME$MULTILINE_MATCHING${#}$FORMAT_PAGE_NUMBER[$CHILD_ERROR]$SUBSCRIPT_SEPARATOR$OUTPUT_RECORD_SEPARATOR$LIST_SEPARATOR$FORMAT_TOP_NAME$FORMAT_NAME$MULTILINE_MATCHING.>&$FORMAT_LINES_PER_PAGE`
1 голос
/ 17 июля 2010

Здесь я изменил все специальные глобалы Ruby на однобуквенные переменные и вставил несколько пробелов:

`a`
n = \%!
(n) = /(.)/
a = ++o
(b, c, d, f, e, g, h, i, j, k, l, @%) = (m =~ /(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/, e), a++
b++
b++
n++
n++
(n, f, d) = (j . e . "gcp[q]nfdlp[q]", e & j, i,)
d++
d++
h |= e
`nfdclgjkp[q]bjk${#}p[q]gfehjk.>&a`

Кто бы это ни написал, тот не понимает Ruby.В Ruby нет оператора приращения.Токены типа \%! и @% ничего не значат в Ruby.Вы не можете интерполировать переменные, даже глобальные переменные, в строках или командах с кавычками, как в "$=".Точка . не является оператором конкатенации в Ruby.Я не думаю, что это Руби.Это как гибрид языков.

0 голосов
/ 24 марта 2017

Не имеет отношения к Ruby. Думаю, закодированное выше сообщение выдается на https://en.wikipedia.org/wiki/Just_another_Perl_hacker с помощью только знаков препинания.Там также есть еще один.

''=~('(?{'.('-)@.)@_*([]@!@/)(@)@-@),@(@@+@)'
^'][)@]`}`]()`@.@]@%[`}%[@`@!#@%[').',"})')
0 голосов
/ 17 июля 2010

Это выглядит ближе к Perl, если честно, но в любом случае довольно бессмысленно.

0 голосов
/ 17 июля 2010

Я ни в коем случае не эксперт по Ruby, поэтому первым шагом должно быть преобразование в формат, который вы можете прочитать.Я разбил его на строки.

`$=`;

$_=\%!;

($_)=/(.)/;

$==++$|;

($.,$/,$,,$\,$",$;,$^,$#,$~,$*,$:,@%)=($!=~/(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/,$"),$=++;$.++;$.++; 

$_++;

$_++;

($_,$\,$,)=($~.$"."$;$/$%[$?]$_$\$,$:$%[$?]",$"&$~,$#,);

$,++;

$,++;

$^|=$";

`$_$\$,$/$:$;$~$*$%[$?]$.$~$*${#}$%[$?]$;$\$"$^$~$*.>&$=`

Я обманул и попытался запустить его, но он не работает.Я получаю неожиданную нулевую ошибку.

Не расстраивайтесь, если не можете этого сделать.Это кажется бессмысленным.Вопросы программирования должны проверять ваши навыки, а не проверять вас на чем-то, что, если кто-то действительно использует это, означало бы, что приложение было бы действительно плохим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...