Один японец написал забавный цепной квай.
Что такое квайн?.
# ruby
l=92.chr;eval s="s=s.dump[r=1..-2].gsub(/("+l*4+"){4,}(?!\")/){|t|'\"+l*%d+\"'%(t.size/2)};5.times{s=s.dump[r]};puts\"# python\\nprint(\\\"# perl\\\\nprint(\\\\\\\"# lua"+l*4+"nprint("+l*7+"\"(* ocaml *)"+l*8+"nprint_endline"+l*15+"\"-- haskell"+l*16+"nimport Data.List;import Data.Bits;import Data.Char;main=putStrLn("+l*31+"\"/* C */"+l*32+"n#include<stdio.h>"+l*32+"nint main(void){char*s[501]={"+l*31+"\"++intercalate"+l*31+"\","+l*31+"\"(c(tail(init(show("+l*31+"\"/* Java */"+l*32+"npublic class QuineRelay{public static void main(String[]a){String[]s={"+l*31+"\"++intercalate"+l*31+"\","+l*31+"\"(c("+l*31+"\"brainfuck"+l*64+"n++++++++[>++++<-]+++++++++>>++++++++++"+l*31+"\"++(concat(snd(mapAccumL h 2("+l*31+"\"110"+l*31+"\"++g(length s)++"+l*31+"\"22111211100111112021111102011112120012"+l*31+"\"++concatMap("+l*32+"c->let d=ord c in if d<11then"+l*31+"\"21002"+l*31+"\"else"+l*31+"\"111"+l*31+"\"++g d++"+l*31+"\"22102"+l*31+"\")s++"+l*31+"\"21002111010120211222211211101000120211021120221102111000110120211202"+l*31+"\"))))))++"+l*31+"\","+l*63+"\""+l*64+"n"+l*63+"\"};int i=0;for(;i<94;i++)System.out.print(s[i]);}}"+l*31+"\")))))++"+l*31+"\",0};int i=0;for(;s[i];i++)printf("+l*63+"\"%s"+l*63+"\",s[i]);puts("+l*63+"\""+l*63+"\");return 0;}"+l*31+"\");c s=map("+l*32+"s->"+l*31+"\""+l*63+"\""+l*31+"\"++s++"+l*31+"\""+l*63+"\""+l*31+"\")(unfoldr t s);t[]=Nothing;t s=Just(splitAt(if length s>w&&s!!w=='"+l*31+"\"'then 501else w)s);w=500;f 0=Nothing;f x=Just((if x`mod`2>0then '0'else '1'),x`div`2);g x= reverse (unfoldr f x);h p c=let d=ord c-48in(d,replicate(abs(p-d))(if d< p then '<'else '>')++"+l*31+"\"."+l*31+"\");s="+l*31+"\"# ruby"+l*32+"n"+l*31+"\"++"+l*31+"\"l=92.chr;eval s=\"+(z=l*31)+\"\\\"\"+s+z+\"\\\""+l*31+"\"++"+l*31+"\""+l*32+"n"+l*31+"\""+l*15+"\""+l*7+"\")"+l*4+"n\\\\\\\")\\\")\"########### © Yusuke Endoh, 2009 ###########\n"
Запускать надо так:
ruby QuineRelay.rb > QuineRelay.py
python QuineRelay.py > QuineRelay.pl
perl QuineRelay.pl > QuineRelay.lua
lua QuineRelay.lua > QuineRelay.ml
ocaml QuineRelay.ml > QuineRelay.hs
runghc QuineRelay.hs > QuineRelay.c
gcc -Wall -o QuineRelay QuineRelay.c && ./QuineRelay > QuineRelay.java
javac QuineRelay.java && java QuineRelay > QuineRelay.bf
beef QuineRelay.bf > QuineRelay.ws
wspace QuineRelay.ws > QuineRelay.unl
unlambda QuineRelay.unl > QuineRelay2.rb
Исходная программа на руби генерит прогу на питоне, которая генерит прогу на перле, которая генерит прогу на Lua, которая генерит прогу на окамле, которая генерит прогу на хаскелле, которая генерит прогу на Ц, которая генерит прогу на яве, которая генерит прогу на брейнфаке, которая генерит прогу на Whitespace, которая генерит прогу на Unlambda, которая генерит исходную прогу снова на руби.
Взято
тут
UP0:
еще немножко
UP1: Взять подправленный
скрипт catup
UP2: Подправил html, теперь скрипт должен запускаться.
UP3:
Промежуточные варианты
С pastebin убрали, слишком много заходов ^_^
комментарии (91)
Дайте мне этой травы))
За copy-paste приношу извенения, но не удержался!
З.Ы. Флеш он-же компилируемый, зачем там пробелы вырезать?
обфускации подвергаются готовые swf-ки дабы осложнить жизнь декомпляторам swfок.
поддержать его что ли )))
zw0rk.blogspot.com/2009/11/blog-post_09.htm
ps теги использовать не могу, извините
букву l в конце забыли :)
Вот вам Python pastebin.org/52437
Вот вам Perl pastebin.org/52438
Вот вам Lua pastebin.org/52440
Остальное надо ставить ^_^
А вот сидеть и жаловаться «если бы у меня было время и бла-бла-бла...» — действительно от нечего делать.
Неужели если бы у тебя был год свободного времени, ты бы смог сделать это?
Я не спрашиваю сколько лет тебе — я спрашиваю: «Почему ты считаешь что это дурь?».
Или ты свое мнение никак не можешь обосновать?
2)Его время — как хочет так и тратит. Понятие хобби тебе, надеюсь, знакомо?
Так что называть это дурью могут только весьма ограниченные люди, а по-простому — УГ.
Как-то не верится, что это придумал человек. Хотя, может, услышал, что теорему Ферма уже доказали, и от злости…
Но крышеснос качественный!
Этот код на Ruby генерирует код на Python, который генерирует код на Perl, который генерирует код на Lua, который генерирует код на Ocaml, который генерирует код на Haskell, который генерирует код на C, который генерирует код на Java, который генерирует код на Brainfuck, который генерирует код на Whitespace, который генерирует код на Unlambda, который опять генерирует этот код на Ruby.
Узнал об этом буквально вчера, листая энциклопедию, долго удивлялся…
Искренне ваш, К. О.
___________________
С уважением, зам. К.О.
Вот ссылка на папку, в которой все запускал, можно посмотреть на промежуточный код.