Кратчайший Ruby Quine
Только что закончил читать этот пост в блоге: http://www.skorks.com/2010/03/an-interview-question-that-prints-out-its-own-source-code-in-ruby/
В нем автор аргументирует случай использования quine в качестве вопроса интервью. Я не уверен, что согласен, но это не тот вопрос, о котором идет речь.
Он продолжает строить quine в Ruby и реорганизовать его, чтобы сделать его короче. Затем он заставляет читателя попытаться сделать его еще короче.
Я играл с ним некоторое время и придумал следующее:
s="s=;puts s[0,2]+34.chr+s+34.chr+s[2,36]";puts s[0,2]+34.chr+s+34.chr+s[2,36]
Это первый раз, когда я когда-либо пытался сделать quine, и я не могу понять, как сделать его короче.
Каков самый короткий Ruby quine, который вы можете придумать? Пожалуйста, опубликуйте объяснение, если это требует его реализация.
Ответы
Ответ 1
К сожалению, RubyGarden больше не существует. Вот несколько ссылок, чтобы наверстать упущенное (один из них, кстати, уже не самый короткий):
Первые quines в Ruby
s="s=%c%s%c; printf s,34,s,34,10%c"; printf s,34,s,34,10
рубиновый quin немного меньше, чем у python quine
_="_=%p;puts _%%_";puts _%_
кратчайший nozero [sic!] ruby quine
puts <<2*2,2
puts <<2*2,2
2
Ответ 2
Еще короче:
$><<IO.read($0)
15 символов, не включая новую строку
Ответ 3
$><<open($0).read
17 байт, если у вас нет конечной новой строки.
РЕДАКТИРОВАТЬ: о, ждите, читая собственный исходный файл, обманывает.