石橋"rubyholic"秀仁です。

Ruby で効率のよいチェックリストの実現方法を教えてください。

1 つの要素について「チェック済」と「未チェック」の 1 bit です。
これを Ruby でやりたいので質問しました。

お知恵を拝借したいのは:
 (1) メモリ効率
 (2) 時間効率 (速度)
が最も良い方法は何か、という点です。

とくにメモリ効率に興味があります。理想的には 100 万ビットで、
120 kB くらいのメモリ使用量ですね (1B = 8bit)。


いちおう、ぼくの想像も書きます。
以下、「n : 要素の数 or ビット数」ということで。

 [a] 全ビット 0 で初期化
 (1) bitary = 2 ** n
 (2) bitary = Array.new(n, 0)

 [a] 全ビット 1 で初期化
 (1) bitary = 2 ** n - 1
 (2) bitary = Array.new(n, 1)

[a] の (1) は、
  ruby-man-1.4-jp/Integer.html
  | ビット操作において整数は無限の長さのビットストリングとみ
  | なすことができます.
とあるので 0 でもいいと思ったのですが、実行中にビット幅を
「広げる」処理が気になりました。

もっと効率のいい方法はありますか?

# まえに「小さなスクリプトの tips を集めよう」という話が
# ありましたが、あれに加えてもらえますか (^^;

--
Hideto "rubyholic" ISHIBASHI
http://www.rr.iij4u.or.jp/~hideto-i/
blade clone (yaiba) development:
http://www.rr.iij4u.or.jp/~hideto-i/rb/yaiba/index.html