[#12443] Re: Tiny eRuby — Masatoshi SEKI <m_seki@...>
青山です。
[#12543] Ruby Conference 0.3 — greentea@...2.so-net.ne.jp (Tomoyuki Kosimizu)
こんにちは、こしみずです。
まつもと ゆきひろです
> | >18日あたり東京でRuby Conference 0.3(単なる宴会)を開きましょうか?
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
[#12546] [閑話] Ruby Conference 0.3 参加したいぃ — Atsuko Yoshida <atsuko@...>
こんにちは。あつこです。
松尾です。
さくです。
[#12573] alternative name of iterator — Shugo Maeda <shugo@...>
前田です。
まつもと ゆきひろです
moochan です.
まつもと ゆきひろです
moochan です.
まつもと ゆきひろです
moochan です.
まつもと ゆきひろです
moochan です.
まつもと ゆきひろです
前田です。
前田です。
わたなべです.
[#12590] kconv SJIS — Kikutani Makoto <kikutani@...>
=?ISO-2022-JP?B? ではじまるBエンコードされたサブジェクトは
Regard to "[ruby-list:12590] kconv SJIS"
On Sat, 6 Mar 1999 15:49:39 +0900,
kikutani> 出沢さんの base64_encodeモジュール最終版はどっかにありますか?
[#12623] Ruby 1.2.3 FreeBSD port — Yasuhiro Fukuma <yasuf@...>
福間@福岡 です。
[#12635] RE:UNIX USER 4/1999 — "Kozuka Masahiro" <kozuka@...>
こづかまさひろ@たきこうこうです。
[#12695] 第 2 回 OMG 分散コンピューティング・セミナー: CORBA3.0 の詳説と CORBA 活用の実際 — Junichi Suzuki <jun-sk@...>
各位.
前田です。
まつもと ゆきひろです
[#12707] Re: operater bind order ? — Inaba Hiroto <inaba@...>
稲葉です.
まつもと ゆきひろです
原です。
[#12727] Making of Interval class. — moochan <moochan@...>
moochan です.
moochan です.
昨日はRuby初心者でしたが、今日は超初心者の遠藤です。
前田です。
moochan です.
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
前田です。
[#12728] Time + 1M — Wakou Aoyama <wakou@...>
青山です。
ふなばです。
五十嵐です。
ふなばです。
五十嵐です。
ふなばです。
まつもと ゆきひろです
ふなばです。
五十嵐です。
ふなばです。
[#12743] ftpmirror — Shugo Maeda <shugo@...>
前田です。
[#12756] Re: Making of Interval class. — moochan <moochan@...>
moochan です.
[#12827] ruby/tk for win32 — oshima@... (Mitsuru Oshima)
[#12835] XML developper day — Takaaki Higuchi - Technology Marketing <Takaaki.Higuchi@...>
なぜか参加してきましたので簡単に報告します。
[#12850] Ruby Conference 0.3 where ? when ? — ISII takesi <isii@...>
石井です。
まつもと ゆきひろです
松尾です。
まつもと ゆきひろです
松尾です。
まつもと ゆきひろです
松尾です。
まつもと ゆきひろです
なひです.
まつもと ゆきひろです
なひです.
まつもと ゆきひろです
なひです.
まつもと ゆきひろです
なひです.
なひです.
In message <36F0BAF925.577F.anakamur@exa.i-tech.co.jp>
In message <36F0F32B3.5781.anakamur@exa.i-tech.co.jp>
なひです.
なひです.
なひです.
なひです.
なひです.Ruby Conference #0.3以降ほったらかしてしまいました...
なひです.
わたなべです.
けいじゅ@日本ラショナルソフトウェアです.
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
まつもと ゆきひろです
ごとけんです
原です。
ごとけんです
原です。
さくです。
[#12876] Re: win32ole — 助田 雅紀 <masaki.suketa@...>
助田です.
[#12916] Thanks 出沢さん (mime.rb) — kikutani@...
快調です。ありがとうございました。
From: kikutani@sprintmail.com
出沢です
[#12918] Sieve of Eratosthenes (Re: [ruby-dev:6094]) — Shin-ichiro Hara <sinara@...>
原です。
まつもと ゆきひろです
原です。
まつもと ゆきひろです
原です。
まつもと ゆきひろです
まつもと ゆきひろです
原です。
原です。
原です。
[#12961] OS/2 support — OKUNISHI Fujikazu <fuji0924@...>
お初になります、奥西と申します。
[#12963] seqcmp.rb — sekita-n@... (Sekitani Nobutaka)
関谷@電通大です。
[#12967] profiler — "Kikutani, Makoto" <kikutani@...>
fj.comp.lang.ruby ではかわされてしまった気がする(^^)。
[#13000] Tiny eRuby — Masatoshi SEKI <m_seki@...>
[#13024] — Ryo HAYASAKA <hayasaka@...>
Subject weakref.rb exception (Re: HORB for Ruby?)
[#13063] Ruby Session in LinuxWorld Conference Japan — greentea@...2.so-net.ne.jp (Tomoyuki Kosimizu)
こんにちは、越水です。
[#13091] FAQ for /:|) — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
なひです.
[#13121] 全角文字列の分割方法について — goto@...
初めまして、後藤@横河工事(橋梁技術者)です。
まつもと ゆきひろです
後藤@横河工事(橋梁技術者)です。お世話になります。
まつもと ゆきひろです
[#13134] ロックでアドバイスをいただきたいのですが — Keisuke Minami <keisuke@...>
はじめまして。三並と申します。
松尾です。
前田です。
松尾です。
[#13140] Ruby Conference 0.3 — hisanori@...
松尾です。
ごとけんです
松尾です。
なひです.
福間%環境復旧中@福岡 です。
なひです.
なひです.僕は馬鹿だ...
[#13162] Copy array (Re: 全角文字列の分割方法について) — Inaba Hiroto <inaba@...>
稲葉です.
[#13227] blade was down — Shin-ichiro Hara <sinara@...>
原です。
[#13246] smtp でメール発送用クラス — (Dezawa Shin-ichiro) <dezawa@...>
出沢です
[#13254] hash + — Kikutani Makoto <kikutani@...>
前にもこの話題はあった気がするけど...
[ruby-list:12918] Sieve of Eratosthenes (Re: [ruby-dev:6094])
原です。
エラトステネスのふるい(素数のリストのアルゴリズム)について、
ruby-dev で話が出たのでここにまとめて紹介します。
最初に五十嵐さんが [ruby-dev:6060] で、現在の sample/sieve.rb
は「エラトステネスのふるい」ではないのではないか?という疑問が
出されました。sample/sieve.rb というのは、
(まつもと1)
sieve = []
if ! max = ARGV.shift; max = 100; end
max = max.to_i
for i in 2 .. max
begin
for d in sieve
fail if i % d == 0
end
print ", "
print i
sieve.push(i)
rescue
end
end
print "\n"
というものです。そこでわたなべさんが、
(わたなべ1 [ruby-dev:6074])
max = Integer(ARGV.shift || 100)
sieve = []
for i in 2 .. max
sieve << i
end
for i in 2 .. max
sieve.delete_if do |d|
d != i and d % i == 0
end
end
print sieve.join(", "), "\n"
というアルゴリズムを出して来たわけですが、えぐちさんが、
除剰算を使わないのがポイントではないかと次のアルゴリズム
を示しました。
(えぐち1 [ruby-dev:6075])
max = Integer(ARGV.shift || 100)
sieve = []
for i in 2 .. max
sieve[i] = true
end
i = 2
while i * i <= max
if sieve[i]
j = i * i
sieve[j] , j = false , j + i while j <= max
end
i += 1
end
a=[]
sieve.each_index{|d| a += d if sieve[d]}
puts a.join ', '
そこで更にわたなべさんが、最後に compact を使うだけに
配列生成を抑える次の方法をあげました。
(わたなべ2 [ruby-dev:6083])
max = Integer(ARGV.shift || 100)
sieve = []
for i in 2 .. max
sieve[i] = i
end
for i in 2 .. Math.sqrt(max)
(i+i).step(max, i) do |j|
sieve[j] = nil
end
end
puts sieve.compact.join ", "
さらに五十嵐さん自身の方法は以下の通り。
(五十嵐1[ruby-dev:6087])
limit = Integer(ARGV.shift || 100)
sieve = Array.new
primes = Array.new
sieve.fill(true, 2..limit)
2.upto(limit) do |i|
if sieve[i]
primes.push i
(i*2).step(limit, i) do |j|
sieve[j] = false
end
end
end
puts primes.join(",")
駄目押しの、稲葉さんによる(わたなべ2)の修正版が次です。
(稲葉1 [ruby-dev:6093])
max = Integer(ARGV.shift || 100)
sieve = []
for i in 2 .. max
sieve[i] = i
end
for i in 2 .. Math.sqrt(max)
next unless sieve[i]
(i*i).step(max, i) do |j|
sieve[j] = nil
end
end
puts sieve.compact.join ", "
で、私もこれがほぼ究極版だと思うのですが、いくつか付け加
えます。まず、(まつもと1)の修正版がこれ。
(原1)
max = Integer(ARGV.shift || 100)
primes = []
(2 .. max).each do |i|
primes.push(i) unless primes.find{ |d| i % d == 0 }
end
puts primes.join ", "
プロセッサによるけど、これが一番早い可能性はあります。
次に % を使うけどかなり素直なふるいだと思われるのがこれ。
(わたなべ1)の修正版です。
(原2)
max = Integer(ARGV.shift || 100)
sieve = (2 .. max).to_a
k = 0
while i = sieve[k]
sieve.delete_if{ |j|
j > i && j % i == 0
}
k += 1
end
puts sieve.join ", "
これだと j > i という判定がもったいないのと、delete 自体のコ
ストが気になるけど、素数が「少ない」ことが前提となっています。
#ほんとは max/log(max) ぐらいある。
そして最初に sieve を奇数だけにしたもの。
(原3)
max = Integer(ARGV.shift || 100)
sieve = [2] + (1 .. max/2).collect { |i| 2*i+1 }
k = 1
while i = sieve[k]
sieve.delete_if{ |j|
j > i && j % i == 0
}
k += 1
end
puts sieve.join ", "
#こんなダイジェストを作ってしまう癖いつのまについたのかな。
ところで質問です。(原2)を
(原4)
max = Integer(ARGV.shift || 100)
sieve = (2 .. max).to_a
sieve.each { |i|
sieve.delete_if{ |j|
j > i && j % i == 0
}
}
puts sieve.join ", "
と書いたら each は正常に動作するのは保証されてましたっけ?