2007-05-25から1日間の記事一覧

配列の内容をシャッフル

class Array def swap!(a,b) self[a], self[b] = self[b], self[a] self end def shuffle!() (1..size-1).each {|n| swap!( n, rand(n+1))} self end end a = (1..10).map {|x| x} p a.shuffle! #=> [6, 8, 7, 3, 10, 9, 4, 5, 2, 1] このコードはcくさいな…

循環リスト

class Array def circle_head() ret = self.shift() self.push(ret) ret end def circle_tail() ret = self.pop() self.unshift(ret) ret end end c = [1,4,6,8,9] 5.times { p c.circle_head()} 5.times { p c.circle_tail()} c/c++だったら,配列+どこを見…

配列をソート

p [1,2,2,3,4,6,1,3,7,8,9].sort #=> [1, 1, 2, 2, 3, 3, 4, 6, 7, 8, 9] # 指定の方法でソート a = [['xx', 16], ['yy', 8], ['xx', 10], [ 'zz', 12]] p a.sort #=> [["xx", 10], ["xx", 16], ["yy", 8], ["zz", 12]] p a.sort {|x, y| x[1] <=> y[1] } #=…

条件を満たす要素をすべて見つける

a = [1,2,2,3,4,6,1,3,7,8,9] p a.delete_if {|x| (x % 2)==0 } #=> [1, 3, 1, 3, 7, 9] p a #=> [1, 3, 1, 3, 7, 9] a = [1,2,2,3,4,6,1,3,7,8,9] p a.find_all {|x| (x % 2)==0 } #=> [2, 2, 4, 6, 8] p a #=> [1, 2, 2, 3, 4, 6, 1, 3, 7, 8, 9] p %w[red…

テストを通る最初の要素(の位置)を取得する

a = [1,2,2,3,4,6,1,3,7,8,9] p a.index(3); #=> 3 p a.index(5); #=> nil # bで始まる単語を探す b = %w[red green blue white black] p b.find() {|x| x=~/\Ab/} #=> "blue" 1.9以降では p b.index {|x| x=~/\Ab/} こういう書き方で,位置を取れるらしい.…

配列の複数の要素を処理する

配列から取り出す.基本編. a = [1,2,3,4,5,6,7,8,9] p a.shift #=>1 前から p a.pop #=>9 後ろから p a #=> [2, 3, 4, 5, 6, 7, 8] # 指定箇所から,指定個数取り出す a = [1,2,3,4,5,6,7,8,9] p a.slice!(3,3) p a 追加は,unshiftとpush2つ同時に取り出…

備忘録目次 - ロバの耳 逆引きRubyや他のblogが,#=>と書いていたので,# =>を#=>に変えてみたが,リファレンスのほうは# =>と#=>を混在させてるな.別にどっちでもいいのか?