与えられた配列の奇数番目の要素の合計を求めるメソッドf(xs)の実装
f([0, 1, 2, 3, 4]) = 1 + 3 = 4 f(['a', 'b', 'c', 'd', 'e']) = 'b' + 'd' = 'bd'
Enumeratorを読みながら
irbで試行錯誤しながらたどり着いた答え。
[0, 1, 2, 3, 4].each_with_index.select{|v, k| k.odd?}.map{|v,k| v}.inject{|x, y| x+y}これの「Ruby の Enumerable モジュールにはたくさんのメソッドが定義されている」も参考になる。
リストが空のとき困るpythonはポテト言語。reduceとかmapとかは飾りです。書ける人にそれがわからんのです。
他の解法
xs.drop(1).each_slice(2).map(&:first).inject :+
twitterで同じような問題をやっている人がいた。
問題:乱数で生成した0~9の文字をカウントせよ。
問題:乱数で生成した0~9の文字をカウントせよ。
100.times.map{rand(10)}.group_by { |i| i%10}.map {|k, v| [k, v.length]}.sort
100.times.map{rand(10)}.inject(Hash.new(0)) {|h, r| h[r] += 1; h }
0 件のコメント:
コメントを投稿