Quine ruBy - まめめも
への挑戦。
Quine ruBy Perl版 - すぎゃーんメモ
に引き続き、JavaScript版。
eval ($a= 'a=1;p= this[1\ &&"alert" ]?(a=0+0\ ) ||alert:1 &&this["p"+ "rint"]?( \ 1 &&print):console.log,u=unescape,q=u(( \ 0 ||"%27")),f=Function,x=f("t,n","v \ = [];while(n--)v+=t;return"+(s=u("%20") \ )+"v"),n=u("%0a"),r=[45,95,145,194,243,1\ +290,339,387,436,486,537,589,642,695,749\ ,53 +750,858,913,969];for(i=19;i--;)$a= $a\ [(e ="replace")](RegExp(".{"+r[i]+"}"),"" +(\ "$&" )+(b= u("%5c"))+n);if(a ){c=[ 5,(\ 45), 5,55, 2, 31,58,43,2,31,( 58 ),53, 1,(\ 30),( 86),( 58),43,1,30,86, 58,53 ,5,(\ 45),5 ,28],o =521;for(i=26;i-- ;){$a= $a[e\ ](($a) .substr(0,o+c[i]%28),"$&"+u("%1b")+"["+ (d=[(\ "0"),( "48;5;9"),"48;5;1","48;5;15"][Math["fl" +"oo"\ +"r"](c[ i]/28)])+"m"); ; o +=c[i]%28+3+d. length}\ };p(x(s ,5)+"eval"+x(s , 39)+"($a="+n+x (s,5)+\ q+$a+q+n +"."+e+x(s,11)+"(/"+b+("x1b")+b+( "[.*?"+\ "m/mig," +"/*")+x(s,11)+"qb*/"+q+q+( "))"));' .replace (/\x1b\[.*?m/mig,/* qb*/''))
https://gist.github.com/980193
ブラウザでは同じものを普通にalert。
Quine - jsdo.it - share JavaScript, HTML5 and CSS
Quine (write to <pre>) - jsdo.it - share JavaScript, HTML5 and CSS
コマンド実行の場合は目の色だけ変えるように。台詞つけるのは僕の腕では無理でした…
$ js --version JavaScript-C 1.8.0 pre-release 1 2007-10-03 usage: js [-zKPswWxCij] [-t timeoutSeconds] [-c stackchunksize] [-o option] [-v version] [-f scriptfile] [-e script] [-S maxstacksize] [scriptfile] [scriptarg...] $ wget jsdo.it/sugyan/quine/js -O qb.js $ cat qb.js $ js qb.js $ js qb.js | js
ruby, perlと比べてヒアドキュメント的なの書けないしで大変。結局末尾にバックスラッシュで文字列を繋げるという逃げ方をしてしまった。