Ruby

Ruby でパターンマッチ

ref: 未来の国のアリス - d.y.d.で紹介されている implicit future が Ruby に欲しい! # promise を作る x = Promise.new a = [1, x, 2, x, 3, x] # 今はまだ値になっていない p a #=> [1, _promise_, 2, _promise_, 3, _promise_] # この promise は 42 に…

brainfuck-dialect quine generator

それでも @mametter ならっ・・・! RT @bonotake: quineの作りがいがありそうな…作んないけど RT @masahiro_sakai: ジョジョ言語わろた http://bit.ly/d0RUUR http://twitter.com/masahiro_sakai/status/9091442089 brainfuck の命令文字を置換しただけの俺…

doublehelix: 二重らせん Ruby プログラミングライブラリ

ref: http://github.com/mame/doublehelix/Hello, world! プログラム。 require "doublehelix" AT A--T T---A G----C G----C G----C T---A G--C AT GC T--A G---C T----A A----T T----A G---C C--G AT CG A--T A---T C----G A----T G----C G---C G--C CG GC …

in 中置演算子

「func() の帰り値が 1 または 2 または 3 のとき」みたいなことを書きたいことはよくあります。 r = func() if r == 1 || r == 2 || r == 3 p "hit" end しかし、いちいち変数に代入しないといけないのが気に入りません。とくに変数名を考えるのが面倒くさ…

Re: 人材獲得作戦・4 試験問題ほか

Ruby で解いてみた。 c=""+b=$<.read x=b.index"G" $w=b.index" " z=b.tr!"SG","4 " b=b.gsub(/ (.{#$w}\d)/m,'a\1').gsub(/ (\d)/,'b\1').gsub(/(\d) /,'\1c').gsub(/(\d.{#$w}) /m,'\1d').tr"a-d","0-3"until" "!=b[x,1] c[x]=?$until ?S==c[x+=[$w+1,1,-1…

あけましておめでとうございます

正月はフラクタル、という風習を広めたい。 0-------------0 /#{24.times{|y|1\ /79.times{|x|p=q=0\ /52;$><<"\x1b[#{-((0\ /18..63).find{q,p=p*q*\ 02+y/8.0-1.5,x/16.0+p*("0 \0";p)-q*q-3;p*p+q*q>(/ \d/;1E190)}||63)/8+(/ \s/;48)}m "};puts"/ \x1b[0…

Merry Quine-mas

open("/dev/dsp","wb"){|h|s=%q{d=["-KQW[UZbgu*HNT+]TNOOOTZ+cZTUUUUUZbagmssUZbagm ss+wmpgja+KQW[dfnu","-KEKOINV[W*HBH+QHBCCCHN+WNHIIIIINVU[aUUINVU[aUU+YOR[^I+KEK OXZbW","-W[acg vsc*TZ`+eaaaaa--vucavuca+eadsvs+W[dgvrtc","-K991LIL77777dIIIII--…

Ruby とすてきな難読化

(これは Ruby Advent Calendar jp: 2009 の 16 日目の記事です。) Ruby は読みやすいプログラムを簡単に書ける言語ですが、読みにくいプログラムも簡単に書けます。 今回は、Ruby でできるかんたんな難読化のテクニックを 4 つ紹介します。 1. Integer#to_s …

山手 quine

t="+,m-n./mAm0o1p23a4q56r7sBt89u-t-1:v;A<w4x=y1z>[?]A^@CD_ CD_EsF`GHmIJbKa*l";eval$s=%w{F=%q{ceY8#<DvO1=x&t9CSOqMYkzH U.kCpz+Vo8hB.1AF&tq21+$/IrMY]U.aDd!-1y!4MMGQm6m?bYh($QMYpX s4g,x1UlbNKH?>NzbisMn?sT@m3,F.Abb`xW!r%'%Ybee>xkUfjf[(*^Nd Xo_"@hQh%Fx*q[iB7EM"suSG8GVOIzceg/O=4CL,d[-k]twgVP`&wcfaT` 2M)j8…</dvo1=x&t9csoqmykzh></w4x=y1z>

最悪な Hello, world! を書いてみた

ref: 最悪な Hello World | Happy My Life と言うのが流行っていたのに数ヶ月遅れて気がついたので、ぼくも書いてみた。 alias|send\ ;$stdin=GC | "%p?"%def# FALSE.gets();(8 | 64).chr+232424. to_s(25)+", "+%w|w ! | *"orlc". next (c).Yusuke end;"oh,…

quine web server

ramaze 版 # quine-web-service-on-ramaze.rb (c) Yusuke Endoh 2009 require "rubygems" require "ramaze" class C < Ramaze::Controller def index e = "END" << 10 t = " s << ((e + <

qif 画像

こぴぺ用。 Y,E=%q~260|0!e0*h0($0j0($"!e0($"f0e0($0!e0*p;4f4#.q9!&8*%"1( }+0!,e4|8,e<.%}e6#g4*};!(4*%})2!e09$"u91&(#6}f0(%+#u0)6"1(7, v0.,*%"<8{9!(4+2}!(4*%90}<.'#<(}$"!e0($")n48$6!(0($".!e0($"$ e0w0($")k0r4*%"<8$"!9!&8*%"<0|0($"#&0()0i;f=8…

_ 1.2 リリース

ref: アンダースコアだけで Ruby プログラムを書くライブラリ _ - まめめも (2009-04-02) ref: http://gemcutter.org/gems/_なんか trunk で動かなくなっていたので修正し、GemCutter にアップロードしました。GemCutter なのでめでたく $ gem install _だけ…

enumerabler.rb: Enumerable の遅延評価版メソッドライブラリ

たとえば整数の配列から、条件に合う要素のうち、最初に現れる 10 個だけ拾いたいとき、どうしますか? ary.select {|x| x.even? }.take(10) ↑これは非常に明瞭なプログラムです。しかし select は、最初の 10 個だけでなく全要素をチェックしてしまうため、…

perlin noise の生成

ref: wikipedia:パーリンノイズ ref: Perlin NoiseCG 業界とかで有名な、なんか雲みたいなノイズのことです。参考サイトの擬似コードをそのまま Ruby に移植してみました。 # http://freespace.virgin.net/hugo.elias/models/m_perlin.htm class PerlinNoise…

Ruby で png 画像を自力で生成する

「png のフォーマットは gif に比べて難しい」などと聞いたことがありましたが、zlib が使える処理系なら、簡単な png 画像はそこそこ簡単に (ビット演算など不要で) 作れるみたいです。2015/03/12追記:この記事は単なる知的好奇心で自力 png 生成している…

Quine on chessboard

8 x 8 の市松模様な Quine 。1 マスは 2 文字で。 s= %( s= %( ); s[ 8] =s $> << s[ 0, 17 << 3] #C Y. En do h! ); s[ 8] =s $> << s[ 0, 17 << 3] #C これができる言語はあまりないんじゃないかな。Ruby と、Perl *1 と、一部の esoteric language くらい…

quine リレー

Update (2013-07-15): I improved this program to 50-language version. 50 言語版にパワーアップさせました。 これはこのプログラム自身を出力する Unlambda プログラム、を出力する Whitespace プログラム、を出力する brainfuck プログラム、を出力する …

「Rubyist Magazine へのたより」の解説

ref: http://jp.rubyist.net/magazine/?0027-Comments#l12 というのを書いてみました。ruby 1.6.8 、1.8.2 、1.8.7 、1.9.1 、trunk で動作確認しています。 #!/usr/bin/env ruby "cFkEAVkIgFhAQIBZgZx2dp TtM44M6CUpSUlSlKWBKYpSlJSVK UpGEpcZJ0dnTtMlwMlYE…

module って super できたんだ

module D def foo p :D end end module C def foo p :C super end include D end module B def foo p :B super end include D end class A def foo p :A super end include C include B end A.new.foo #=> :A, :B, :C, :D :A, :B, :D, :C, :D かなとも思った…

Method#parameters で optparse を覚えやすく

optparse って、どうしても使い方が覚えられません。"--option-name [OPTION]" みたいな文字列が内部でパースされて、その結果挙動が変わるというインターフェイスが気持ち悪いせいだと思うんです。気持ち悪いインターフェイスは覚えられない *1 。 そこで、…

Ruby で書かれた Continuous Integration ツールを調べる

まともなのないかな。「まとも」の評価条件は 堅牢性: プロセス管理やタイムアウト管理などがしっかりしている。 汎用性: いろんなプロジェクトに適用できる。 1.9: ruby 1.9 で動く。今なら当たり前。 chkbuild akr さん作の ruby 用 CI ツール。 http://cv…

concov のセットアップ方法例

ruby のソースコードを chkbuild で定期ビルドし、concov にデータを登録させる手順をまとめました。 現状では chkbuild のセットアップと concov のセットアップの 2 段階になっています。 1. chkbuild をセットアップする chkbuild は、ruby のソースコー…

qng 画像

こぴぺ用。 eval s=%q(require"zlib";include Zlib;f=Inflate.inflate(*"eNq 1VomxQyEIpAP675IOiAjqIvqS/INh3hh1dTkN0c+FOfR5j6r4Nh98cT6xSIf Yl4WEfi92mn1Q7WCOxRijCiXWjUfjo/Y9MBLTZqkP3sh2chfDfiKSrxxUcRg Wa6dsfMUHbSZxkAAGHFYd202KM5EerlI9uQHU4i499MPX…

Q(uine)R(uby) code

RubyKaigi でこっそり (?) 発表したものを再掲。読み込んでみる *1 。 $ java -classpath classes example.QRCodeDecoderCUIExample quine-ruby-code.png > quine-ruby-code.rb [Success] quine-ruby-code.png Processed 1 images in 1050ms (1050 images/se…

RubyKaigi 2009 参加記録

なんだかいろいろありました。以下、個々の感想。敬称略で。 1 日目 Using Git and GitHub to Develop One Million Times Faster (Scott Chacon) 開始ぎりぎりに到着。git の説明はまあいいかなーと思ってマシンの設定やらネットワークの設定やら自分の発表…

concov 0.1 リリース

デモ: http://dame.dyndns.org:7001/ ソース: http://github.com/mame/concov/時系列に注目したコードカバレッジビューア concov をリリースします。concov は continuous coverage (造語) の略で、コードカバレッジの変化の追跡が簡単にできます。 背景 Rub…

ダメなマニュアルの特徴

めちゃくちゃ遅い反応ですが、「よく言ってくれた!」という話。 現状のRDocはユーザリファレンスに向いてないと思ってる。 RDoc書いただけで「リファレンスは完璧だお!」とか言ってるやつなんなの - Greenbear Diary (2009-06-04) 以下関係あるようなない…

simpletrace: ライブラリのスタックトレースを消すライブラリ

例えば、こういうスタックトレースをしばしば見ると思います。 $ ruby19 -ruri -e 'URI(nil)' /home/mame/work/ruby19/local/lib/ruby/1.9.1/uri/common.rb:156:in `split': bad UR I(is not URI?): (URI::InvalidURIError) from /home/mame/work/ruby19/loc…

Re: ','.join() がなぜキモイのか

ref: http://d.hatena.ne.jp/methane/20090615/1245025996 よいまとめ。Ruby の Array#join は 1. 自然言語の文法とあわないのがキモイ 2. 勝手に型変換 (to_s) するのがキモイ 3. 文字列べったりのメソッドが Array にあるのがキモイ 4. Enumerable ではな…