2011年10月21日金曜日

[Ruby]RubyMonkをやってみる_第一回

RubyMonkをやってみる

rubymonkというRubyを学べるサイトの情報がMLに流れていたのでやってみる。


arrayの操作

とる

[1, 2, 3, 4, 5][2]で添字が2の要素、「3」が取れるらしい。
[1, 2, 3, 4, 5][-1]だと後ろから1つ目、「5」が取れるらしい。


つっこむ

[1, 2, 3]<<4で末尾に4が挿入される。
[1, 2, 3]<<"woot"で末尾に文字列'woot'が挿入される
[1, 2, 3].push"woot"でも同様


中身をいじる

[1, 2, 3].map{|i| i + 1}で各要素に1が足される。掛けたりも出来る。


select

puts [1, 2, 3, 4, 5].selest {|number| numver % 2 == 0} で偶数のみが出力。

names = {'rock' 'paper', 'scissors', 'lizard', 'spock']とあるとき
puts names.select{|word| word.length > 5}
で5文字より長い名前が出力。


けす

[1,3,5,4,6,7].delete_at(2)で添字2の「5」が消える
[1,2,3,4,5,6,7].delete_if{|i| i < 4 }で4以上が消える


Loops

for

def array_copy(destination)
    source = [1, 2, 3, 4, 5]
    for i in source
        destination.push(i) if i < 4
    end
    destination
end
で4未満の値をdestinationに格納。
array = [1, 2, 3, 4, 5]
array.each do |i|
    puts i
end 
で配列の中身を全部表示。

組み合わせて、

def array_copy(destination)
    source = [1, 2, 3, 4, 5]
    for i in source
        destination.push(i) if i < 4
    end
    destination.each do |i|
        puts i
    end
end

でdestinationに4未満をコピーして、それを表示。


演習問題的な

arrayとnが与えられて、arrayの中からランダムでn個の要素を表示しなさいという問題。
回答は

def random_select(array, n)
    result = []
    n.times do
        result <<
        array[rand(array.length)]
    end
    result
end 

うーん。これまでのレッスンで取り扱っていない関数を多用する演習問題とか鬼畜…


今日は一旦ここまでってことで。

alpha版にしてはいい動きをしていましたが、
ところどころバグがあるようでした。
(変数名を変えるとError扱いされたり)
サイトは全部英語なので、それを読みながらだと作業効率も微妙です(´・ω・)

0 件のコメント:

コメントを投稿