info

2011-08-01から1ヶ月間の記事一覧

書籍「7つの言語7つの世界」Io言語2日目セルフスタディ

http://github.com/yppp/sevenlang二次元配列の総和 dim2sum := method(n, n flatten sum) dim2sum := method(n, n prepend(0) reduce(x, y, x = x + y sum)) Listに自分で定義した平均を求めるメソッドを追加、数字以外が混ざっていたら例外を投げるように …

書籍「7つの言語7つの世界」Io言語やってみる

フィボナッチ数 fib := method(n, if(n < 2, n, fib(n - 1) + fib(n - 2)) ) Io> fib(10) ==> 55 ループ版 fib := method(n, fir ::= 0 sec ::= 1 tmp ::= 0 n repeat( tmp = sec sec = sec + fir fir = tmp ) fir ) fib(31) println 分母がゼロの時答えがゼ…

書籍「7つの言語7つの世界」Rubyの章の最後の問題

method_missingテクニックを使って、CSVの一行目にある物をメソッド名にしてあとの二行をその列にある物を表示させる、attr_accessorもこんなふうに実現してるのかなあgithubにリポジトリつくったよ http://github.com/yppp/sevenlang # -*- coding:utf-8 -*…

書籍「7つの言語7つの世界」でRubyの章を読み飛ばそうと思ったけど、一部の問題だけ解く

配列をハッシュにしろ [1,2,3].zip([[4, 5, 6],5,6]).inject(Hash::new){|x, y| x[y[0]] = y[1]; x} 配列が入れ子じゃなかったら Hash[*[1,2,3].zip([4,5,6]).flatten] 16個と4個の配列を4個と1個づつで表示させろ eachを使って te = Array::new(16){|x| x} …

RubyでBrainfuck処理系作ってみた

意味無いと思うけどジャンプテーブル構築時についでに命令文字をシンボルにコンパイルするようにしてる https://github.com/yppp/brainf_ck # -*- encoding:utf-8 -*- class Brainfuck class ProgramError < StandardError end def initialize(src) @souce =…