プログラミングの勉強中で問題を解いています。
考えても答えが分からなかったので、解答を読んだのですが、
私の言語に関する知識が乏しくいろいろ調べたのですが分からないところがありました。
分かる方教えてください。よろしくお願いします。
問題
カジノの定番、ブラックジャック。ゲームを1回行うには最低1枚のコインが必要です。
勝てば2枚のコインが得られますが、負けると賭けたコインが没収されます。
最初に10枚だけコインを持っており、1枚ずつ賭けていったとき、ゲームを24回行って手元にコインが残るようにな枚数の変化は何通りあるかを求めてください。
Ruby
1@memo = {} 2 3def game(coin, depth) 4 return @memo[[coin,depth]] if @memo.has_key?([coin,depth]) 5 return 1 if depth == 0 6 return 0 if coin == 0 7 win = game(coin + 1, depth - 1) #勝った時 8 lose = game(coin - 1, depth - 1) #負けた時 9 @memo[[coin, depth]] = win + lose 10end 11 12puts game(10,24)
質問です。
@memo[[coin, depth]] = win + lose
の行で何をしようとしているのかが分かりませんでした。
win という変数にloseを足しどこかに代入しているのでしょうか?
あと@memo[[coin, depth]]という記述です。
というよりこういう記述を自分が勉強した教本などでは見た記憶がないので分かりません。
調べても見つかりませんでした。これは配列なのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。