Skip to content

Commit d5e98aa

Browse files
committed
add m3 quine for ruby
1 parent d929303 commit d5e98aa

File tree

3 files changed

+45
-5
lines changed

3 files changed

+45
-5
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
|Python|[M3 Python Quine](https://github.com/m3dev/crazy_programming/tree/main/quine/python)|
1717
|Python|[出力が動くFukuoka採用Quine](https://github.com/m3dev/crazy_programming/tree/main/quine/python)|
1818
|Ruby|[M3 Ruby Quine](https://github.com/m3dev/crazy_programming/tree/main/quine/ruby)|
19+
|Ruby|[M3 Logo Ruby Quine](https://github.com/m3dev/crazy_programming/tree/main/quine/ruby)|
1920
|Scala|[M3 Scala Quine](https://github.com/m3dev/crazy_programming/tree/main/quine/scala)|
2021
|Swift|[M3 Swift Quine](https://github.com/m3dev/crazy_programming/tree/main/quine/swift)|
2122
|Swift|[M3 Swift Quine: iOSDC Japan 2025 edition](https://github.com/m3dev/crazy_programming/tree/main/quine/swift)|

quine/ruby/README.md

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,33 @@
22

33
Rubyで作成したQuine
44

5+
- M3 Ruby Quine
6+
- Author: [@ma2gedev](https://github.com/ma2gedev)
57
- M3 Logo Ruby Quine
68
- Author: [@ma2gedev](https://github.com/ma2gedev)
79

8-
## 実行
10+
## M3 Ruby Quine / quine.rb
911

10-
### m3_logo_quine.rb
12+
### 実行
1113

1214
```sh
13-
ruby m3_logo_quine.rb
15+
ruby quine.rb
1416
```
1517

16-
## 解説
18+
### 解説
19+
20+
アニメーション時にコード部分が削られていますが、誤り訂正を行っているのでどのフレームで切り取っても Quine として実行することが可能です。
21+
-a オプションでコード部分を全て出力することもできます。
22+
23+
## M3 Logo Ruby Quine / m3_logo_quine.rb
24+
25+
### 実行
26+
27+
```sh
28+
ruby m3_logo_quine.rb
29+
```
1730

18-
### m3_logo_quine.rb
31+
### 解説
1932

2033
画像のビットマップデータを Base64 エンコードしたものをコードに埋め込み、それを元にビットマップを復元して自身のコードをビットを元に当てはめて出力しています。
2134
ロゴ画像中の文字を描画する箇所が少なく、zlib や 36 進数にするなどの圧縮ではコードに収まりきらないため、

quine/ruby/quine.rb

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
eval((s=%w'm=1;Integer.class_eval{define_method(:quo){|a|self*a.pow(87,89)%89};define_method(:abs){s
2+
elf%89}};require"matrix";39.times{|i,*v|v=[];z=*?"..??,*?A..?[,*?]..?_,*?a..?};a=(0..54).map{z.index
3+
(d[i+39*_1])};w=*Matrix[*(0..21).map{|i,*b|v<<a.zip(0..).sum{|j,k|-(p=(1+k).pow(i,89))*(j||(b<<p;0))
4+
};b}].lup.solve(v);55.times{d[i+39*_1]=z[a[_1]||w.shift]}};eval(d)'*'';d=%q~W=10 26;r=(32..122).m
5+
ap(&:chr). s.rotate(-5).join;c="% l%&&%?%myyux?44otg nsjjw4%".tr(r
6+
,t);b="eNrtW /8s9S58jSw/pMImWJfmwZ LpwQ3mWsPsSFe7Qgy9N 64wCEtg5cD/
7+
g2toQuHS+cwMXc1 KEB+j8wTOhHl8wHAgfU P4Qa7NNhcTArB1emBnt IiQWkH C/XZhrcaYA
8+
P80S1dGGMHCTnKZ k6MDpHktBptanLVu NqY9nTBnrD6Fb9erGlJ N4O+pEW+o t+t40nqWbf
9+
Xp0pLBwexks3meL kX6V+kylev+OLzQ aol9I7uYHgaOb33d34uMZTmXbUYCpUF uR1lyY77DX
10+
oxv4+HVrx6vwsfX zcsP+4eg1DjEf 7zMH4kxp5pUD/LpRSu/NO4GIU/+AF14 npack(?m)[0
11+
];require"zlib" ate.inflate( clude?("-a");p=ARGV.include?(" oop{(s[2]=(m
12+
=m%4+1).to_s)if l :m%4-1;e=" (( 39<<s<<39<<?*<<39<<39<<";d 6<<d*2;o="";j=
13+
0;0.upto(H*W-1) o< l*H*W+i]= )?e 1]:(j+=1;""<<32))<<((i% ")};o[-W+22,
14+
c.size]=c;o[-2 ]="" .delete hr) ap(:INT){puts;exit}; <<"[H"<<27
15+
.chr<<"[J"<<o) ak()i =(m= ).to (1)}#]To4_137K.7ur=*u'mqt'vhy iKB1yp0UI
16+
t6}66%7$"lk5ZO +-d?() 2< MnI8U wx%Pb$#-lF;z{?V<4YmbtL=D2z[ezCC r&0Qq_N>
17+
#ZVaWVoHSpe57n %f5-H;d t HkBmyK :TVPM[n8[(Raz&E;dr7umUZ1<$8bz8Vl 8"x7[.[i
18+
=kX6EunFh>)p{ c9'k/].u SM)=v8K' X8>h1vWlG3._MirLgHF^,p,_ENur]k? I2"z&g0z
19+
d>h%(gozq*VOZ Cm_R0B&70 '9&or&XuP ^&62xmPs2(,Xdr_N,1;%sVcdi*k6__ fF#RFW#&
20+
N*91K]#p3):<O {_mEwe-N;p _iSfyA);a8 lY[IN4?ng0Z9V[{; Vu{2%#pKoz) x'pT}vY&6
21+
.egyXgME69VyN 7'rJH<0}"wq ]WH'x|*=1(( g(?R/gX#j2#f|]} b{sC_J)Q.A B2QFz2t}oQ
22+
Ua'r;GS; G|[28T{ )ht(Rr1 O7[]R4N+=r h*^o#?+lKO="
23+
VKW.[8S3 ulvx^AUC adg2YRnk =*G3Je#G-<]- Bda}'6iv-fKJlEa
24+
c8^4(Fk28?J#=Oh-$cHSDz4?P}6Kpey'w4zd1}(8iT"_ifnH6#xqV;eNgIwP77#t<f.Tn|aBEf?wkVq+k)vnhnTZDh.Mqe/h6:OE
25+
L{=lL2Yz.=+fmj09n64__________________________We_love_Ruby________________________uqX.zE?bAvr-a(W7zCt
26+
))s;)rhc.01(eteled.____ We are hiring !! : https://jobs.m3.com/engineer/ _______~.delete(10.chr);s))

0 commit comments

Comments
 (0)