[#37484] Coffee Break ... — Daisuke Gotou <com@...>
こんにちは。ゴトウです。
5 messages
2003/04/01
[#37492] ReFe 0.6 — Minero Aoki <aamine@...>
あおきです。
27 messages
2003/04/01
[#37525] ReFe 0.7 (Re: ReFe 0.6)
— Minero Aoki <aamine@...>
2003/04/06
あおきです。
[#37528] Re: ReFe 0.7 (Re: ReFe 0.6)
— Koji Arai <JCA02266@...>
2003/04/07
新井です。
[#37545] Re: ReFe 0.7 (Re: ReFe 0.6)
— Kazuhiro NISHIYAMA <zn@...>
2003/04/10
西山和広です。
[#37546] Re: ReFe 0.7 (Re: ReFe 0.6)
— Koji Arai <JCA02266@...>
2003/04/10
新井です。
[#37551] Re: ReFe 0.7 (Re: ReFe 0.6)
— Kazuhiro NISHIYAMA <zn@...>
2003/04/11
西山和広です。
[#37554] refe.el (Re: ReFe 0.7 (Re: ReFe 0.6))
— Koji Arai <JCA02266@...>
2003/04/12
新井です。
[#37556] Re: refe.el (Re: ReFe 0.7 (Re: ReFe 0.6))
— Kazuhiro NISHIYAMA <zn@...>
2003/04/13
西山和広です。
[#37566] Re: refe.el (Re: ReFe 0.7 (Re: ReFe 0.6))
— Minero Aoki <aamine@...>
2003/04/16
あおきです。
[#37570] wwwsrvの起動
— Kouzou NOAKI <noaki@...7.so-net.ne.jp>
2003/04/16
のあきといいます。
[#37571] Re: wwwsrv の起動
— Sako <sakoh@...2.so-net.ne.jp>
2003/04/16
[#37504] Rubyでゲーム開発 — Yamamoto Dan <dango@...>
先日ruby-listに登録したばかりの団と申します。
11 messages
2003/04/03
[#37530] drubyをwindowsで使う — keiichi matsunaga <ma2@...>
松永です。
6 messages
2003/04/08
[#37537] load(fname, true) と include — Tietew <tietew-ml-ruby-list@...>
Tietew です。
8 messages
2003/04/09
[#37557] ruby-gtkの使い方について — "Mikio Kanada" <mmmr36211@...>
初めて投稿します。 金田と言います。
5 messages
2003/04/13
[#37560] DRb:SocketError — INABA Nobuhiko <inaba@...>
どうも、いなばといいます。
5 messages
2003/04/13
[#37567] error in Ruby/Tk + fork — Shin Nishiyama <shin@...>
こんばんは、西山@千葉大といいます。
6 messages
2003/04/16
[#37579] 金額カンマ編集について — "MORII,Tadashige" <m_tada@...>
森井です。
6 messages
2003/04/18
[#37586] [Q] ruby1.8.0+apache2.0.45でCGIからのネットワーク接続されたDirの操作 — eda@...
えだです。
9 messages
2003/04/18
[#37590] Re: [Q] ruby1.8.0+apache2.0.45でCGIからのネットワーク接続されたDirの操作
— HGF01572@...
2003/04/19
長沢です。
[#37599] Re: [Q] ruby1.8.0+apache2.0.45でCGIからのネットワーク接続されたDirの操作
— eda@...
2003/04/21
えだです。
[#37606] 1.8.0 to_ary — Kazuhiro Yoshida <moriq@...>
もりきゅうです。
9 messages
2003/04/21
[#37608] Re: 1.8.0 to_ary
— matz@... (Yukihiro Matsumoto)
2003/04/22
まつもと ゆきひろです
[#37619] net/pop.rbにUIDLコマンドでMessage-Idのリストを取得するメソッド — Keisuke Minami <keisuke@...>
こんにちは。三並です。
18 messages
2003/04/26
[#37623] Re: net/pop.rbにUIDLコマンドでMessage-Idのリストを取得するメソッド
— Minero Aoki <aamine@...>
2003/04/27
青木です。
[#37625] Re: net/pop.rbにUIDLコマンドでMessage-Idのリストを取得するメソッド
— "Keisuke Minami" <keisuke@...>
2003/04/28
三並です。
[#37627] Re: net/pop.rbにUIDLコマンドでMessage-Idのリストを取得するメソッド
— Minero Aoki <aamine@...>
2003/04/28
青木です。
[#37634] Re: net/pop.rbにUIDLコマンドでMessage-Idのリストを取得するメソッド
— Minero Aoki <aamine@...>
2003/04/29
青木です。
[#37622] net/imapのTHREAD Extension 対応 — wanowa.kimura@... (kimura wataru)
木村といいます。
31 messages
2003/04/27
[#37628] Re: net/imapのTHREAD Extension 対応
— Shugo Maeda <shugo@...>
2003/04/28
前田です。
[#37632] Re: net/imap のTHREAD Extension 対応
— wanowa.kimura@... (kimura wataru)
2003/04/28
木村といいます。
[#37635] Re: net/imap のTHREAD Extension 対応
— Shugo Maeda <shugo@...>
2003/04/30
前田です。
[#37638] Re: net/imap のTHREAD Extension 対応
— wanowa.kimura@... (kimura wataru)
2003/05/01
木村です。
[#37641] Re: net/imap のTHREAD Extension 対応
— Shugo Maeda <shugo@...>
2003/05/02
前田です。
[#37647] Re: net/imap のTHREAD Extension 対応
— wanowa.kimura@... (kimura wataru)
2003/05/06
木村です。
[#37648] マッチした部分を配列にしまう方法
— Hirano Satoshi <hirano@...>
2003/05/07
こんにちは。
[#37651] Re: マッチした部分を配列にしまう方法
— tsuji.td@...
2003/05/07
はじめまして、辻(忠)です。
[#37655] Re: マッチした部分を配列にしまう方法
— Minero Aoki <aamine@...>
2003/05/07
青木です。
[#37658] Re: マッチした部分を配列にしまう方法
— tsuji.td@...
2003/05/08
辻(忠)です。
[ruby-list:37550] 順列イテレータ
From:
Dai Watanabe <dai@...>
Date:
2003-04-11 09:59:28 UTC
List:
ruby-list #37550
はじめまして。わたなべ@ひたちです。
Rubyを使い始めたところで、使いやすさ・奥の深さに感動しっぱなし
です。今後ともよろしく御願いいたします。
ちょっと必要にかられて順列生成のコードを探してみたのですが、
イテレータの例が見つからなかったのでArrayクラスの拡張として自作してみました。
再帰を使ったので、呼び出し部と処理本体を区別し、また、配列を複製する方法しか
思いつかなかったのですが、スマートな実装は可能なのでしょうか?
以下がコードです。
呼び出し部を分けたついでに、要素の重複を区別しないという順列イテレータ
にもなるようにしてみました。
------
class Array
def perm_body(r_ary,n, opt )
if n == 0
yield r_ary
elsif n > 0
lst = opt ? self.uniq : self
lst.each_index do |i|
r_ary.push( lst.at( i ) )
b = self.dup
b.delete_at( opt ? b.index(lst.at(i)) : i )
b.perm_body(r_ary,n-1,opt){ |arry| yield arry }
r_ary.pop
end
else
# nop
end
end
def perm( n = self.size )
n = self.size if n > self.size
self.perm_body([],n, nil) { |arry| yield arry }
end
def perm2( n = self.size )
n = self.size if n > self.size
self.perm_body([],n, true ) { |arry| yield arry }
end
end
##### sample code ########
ary = [ ]
cnt = 0
ary.perm { |ar| p ar; cnt+= 1 }
print "empty array called proc #{cnt} times \n\n"
ary = [ "foo", "bar" ]
ary.perm { |ar| p ar}
puts "\n"
ary = [ "one" , 2 , "three" ]
cnt = 0
ary.perm { |ar| p ar; cnt+=1}
print "array called proc #{cnt} times \n\n"
ary = %w{ Nozomi Hikari Kodama Nozomi }
ary.perm { |ar| p ar.join( " --> " )} ; puts "\n"
ary.perm(2) { |ar| p ar.join( " --> " )} ; puts "\n"
ary.perm(0) { |ar| p ar.join( " --> " )} ; puts "\n"
ary.perm2 { |ar| p ar.join( " --> " )} ; puts "\n"
ary.perm2(2) { |ar| p ar.join( " --> " )} ; puts "\n"
t_s = Time.now
ary = [ 1, 2,3,4,5,6,7,8 ]
print "\n calling perm-method... array size:#{ary.size} \n"
cnt=0
ary.perm { cnt += 1 }
t_e = Time.now
tm = t_e - t_s
print "called #{cnt}, total_time:#{tm}, #{tm/cnt}sec/call\n"