日刊 あおのうま Vol.2275(2017.06.23)【ガチャ】

投稿者: | 2017/06/23

再帰 と コレクション操作

[問題]
7 が出現するまで0 から9 の整数をランダムに取り出し、それまでの値を格納したリストを生成する関数を作りなさい。
ただしimmutable とする。
なおランダム値の生成はライブラリを使用してよい。

とりあえずRuby の再帰でこんな感じ。

def each_rand_seven do
  def recursion(array)
    x = rand(0..9)
    return [array, x].flatten if x == 7
    recursion([array, x].flatten)
  end
  recursion([])
end

次はコレクション操作でワンライナーと行きたいところ。
考え方的には、無限長リストから条件一致部分までを取り出すわけか。
遅延評価必須だな。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください