forked from mame/quine-relay
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathQR.rb
54 lines (54 loc) · 5.91 KB
/
QR.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
eval$s=%q(eval(%w(B=92.chr;N=?\n;n=0;e=->(s){s.gsub(/[#{B+B+N}"]/){B+(N==$&??n:$&)}};E=->(s){'("'+e[s]+'")'};d=
->(s,t=?"){s.gsub(t){t+t}};D=->(s,t=?@){s.tr(B,t)};Q=->(s,t=?$){s.gsub(t){B+$&}};puts(eval(%q("objectXQRXextend
sXApp{Hln#{E[%((displayX"#{e[%(HfX%sX"#{Q [e["Tra nscriptX show:X'#{d[%(putsX[regsubX-allX{.}X"#{Q[e[%[intXK(
){sJXs=#{E[%(withXAda.Text_Io;pr ocedu reXq rXis XbeginXAda.Text_Io.Put_Line("#{d[%(BEGINXH("#{d[%(B
EGIN{s=#{E[D[%(forXbXinXSystem .Te x t.ASCIIEncoding().GetBytes(#{Q[E["#include
<stdio.h>`nintXK(){put s#{E[ " #include<iostream>`nintXK(){std::cout<<#{E[
%(classXProgram{publi cXs taticXvoidXMain(){System.Console.
Write(#{E[D[%((defnX f [lXr](if(>(countXr)45)(lazy-seq(co
ns(str"XXXX^""r"^"& ")(fXl"")))(let[c(firstXl)]
(ifXc(f(nextXl)(if (=XcX^")(strXrXcXc)(strXrXc)
))[(str"XXXX^""r" ^".")]))))(doall(mapX#(
Hln(str"XXXXXXXX "%1))(lazy-cat["IDENTIFI
CATIONXDIVISIO N.""PROGR AM-ID.XQR.""PROCEDUR
EXDIVISION." ]#{("console.log"+E[%((wr ite-line"#{Q[%(X:XAX.
"XXXXXXXXX" X;X:XBXAX."XWRITE(*,*)'"XAX;X:XCXB XTYPEX."X'"XCRX;X:XD
XS"Xprogr amXQR"XCXS^"XHX^"(&"XCXS^"X#{e[%(packageX K;import("fmt";"sJ
s");func XK(){fmt.Print("H^x27"+sJs.Replace("#{e[D[e[%( importXData.Char`
nK=putS trLn$"procedureXK();write(^"DO,1<-#"++show(lengthX s)++fXsX1X0;f(x:
t)iXc= letXv=foldl(^aXx->a*2+(modXxX2))0$takeX8$iterate(flip XdivX2)$Data.Ch
ar.or dXxXin(ifXmodXiX4<1then"PLEASE"else"")++"DO,1SUB#"++show Xi++"<-#"++sho
w(mo d(c-v)256)++"^^n"++f Xt(i+1)v;f[]_X_="PLEASEREADOUT,1^^nPLE ASEGIVEUP^");e
nd"; s=#{E[%(.classXpubli cXQR`n.superXjava/lang/Object`n.methodX publicXstatic
XK( [Ljava/lang/SJ;)V`n. l imitXstackX2`ngetstaticXjava/lang/Syste m/outXLjava/
io/ PrintStream;`nldcX"# {e[ %(classXQR{publicXstaticXvoidXK(SJ[]v) {SJXc[]=newX
SJ[ 80 00],y="",z=y,s="#{z= t=(0. .r=q=126).map{|n|[n,[]]};a=[];%(@s=int ernalXconst
ant [#{i=(s=%(PRINTX"#{Q ["H"+E[ %(all:`n`t@HfX%sX"#{e[%(.assemblyXt{}. methodXstat
icXv oidXMain (){.entrypointXldstr"#{e[ "varXu=requ
ire(' uti l');u.H('# import< stdio.h>^n'); u.H(#{E [D[%(intXK(){puts#{E["H_sJ" +E["Hf"+E[%
(say"# {e["programXQR(o utput );beginX#{([*%( $_="# {s=%(<?phpXecho"#{Q[e["intXK (){write#{E
["qr:-wri te('#{Q[e["H"+E["c at" +E[%(eval$s=%q(#$ s)) .gsub(/.+/){"sayX`"#{d[$&]}`" "}]]],?']}'
),nl,halt."]};r eturnX0;}"]]}"? > );(s+N*(-s.size%6)) . bytes.map{|n|"%07b"%n}.join.sc an(/.{6}/).
map{|n|n=n.to_i (2);((n/26*6+n+1 9)%83+46).chr}*""}";s |.|$n=ord$&;substrXunpack(B8,ch r$n-($n<58?
-6:$n<91?65:71) ),2|eg;s/.{7}/0 $ &/g;HXpackXB.length , $_).scan(%r(([X.0-9A-Za- z ]+)|(.))).r
everse.map{|a,b |(b)?"s//chrX #{b .ord}/e":"s//#{a} /"} ,"eval"]*"Xx X " ).scan(/.
{1,255}/).map{|s |"write('#{s }');" }*""}end."]}"`n end`n )]]]};re t u rnX0;})]
]}.replace(/@/g, SJ.fromCha rCode(9 2)))"]}"callX voidX[m scorlib]System . C onsole:
:WriteLine(sJ)ret })]}")],/ [X^`t;"(){}` [ ` ]]/]}`
nBYE)).size+1}XxX i8]c"#{s.gsub(/[^`n"] /){B+"% 02`x58"%$&.ord}}^00"decla reXi32@p u t s(i8*)
defineXi32@K(){sta rt:%0=callXi32@puts(i 8*Xge telementptrXinbounds([#{i}XxXi8]*@ s , i32X0
,i32X0))retXi32X0}) .bytes{|n|r,z=z[n]||( a<< r;q<5624&&z[n]=[q+=1,[]];t[n])};a<<r ; t=[*4
3..123]-[64,*92..96] ;a.map{|n|t[n/75].chr + t[n%75].chr}*""}";intXi,n,q=0,t;for( n =0;++
n<126;)c[n]=""+(char) n;for(i=0;++i<s.leng th();){t=s.charAt(i);q=q*75+t-t/64- t /92*
5-43;if(i%2>0){y=q<n?c [q]:y;c[n++]=z+=y.ch arAt(0);System.out.H(z=c[q]);q=0;}} } })]}
"`ninvokevirtualXjava/i o/PrintStream/Hln(Ljava/lang/SJ;)V`nreturn`n.endXmet hod)+N] })]]
]}^x27^n","@","^^",-1))}) ]}"XDUPXFORXS"X&A,&"XCXNE`x58TXS^"X&A)^",&"XCX0X DOXBX."X& char
("XCOUNTX.X."X),&'"XCRXLOO PXS^"X&^"^""XCXS"XendXprogramXQR"XCXAX."XS TOP"XCRXAX."XEND"XC RXBY
EX;XDX),/([^"])/]}"))]).gsub (/.+/){%((cons"DISPLAY"(f"#{e[$&]}"" ")))}}["STOPXRUN."]))) ),?
~]]}.Replace("~","^^"));}})]};} "]};returnX0;}"]]}):HXjoin([ '+'forXiXinXrange(0,b)], "")
+".>"),?!]]};gsub(/!/,"^^",s);HXs })]}")END)]}" );endXqr;)]};intXi,j;H("moduleXQ
R;initialXbeginX");for(i=0;i<s.length ;i++){H("$write(^"XXX");for(j=6;j>=
0;j--)H((s[i]>>j)%2>0?"^^t":"X");H("^^n^^ t^^nXX^`");");}H("$display(^"^^n^^n^");e
ndXendmodule");returnX0;}].reverse],/[`[`]$]/]}" X^x60.&];putsX"k"),?']}';cr"]]}")]}"))]}}").gsu
b(/[HJK^`X]/){[:print,0,:tring,:main,B*2,0,B,?\s][$&.ord%9]})))*"")#_buffer_for_future_bug_fixes_#_buffer_for_f
################### Quine Relay -- Copyright (c) 2013 Yusuke Endoh (@mametter), @hirekoke ##################)