院卒新人サラリーマンのメモ代わり

備忘としてのメモを記載

数学パズルQ17

@boy, @girl = "B", "G"
NN = 30

# seq 座っている人のリスト
# 再帰は帰納法と深さ優先がある、これは深さ優先!
def add(seq)
  return 1 if seq.size == NN

  isLastBoy = seq[-1] == @boy
  isLastBoy ? add(seq + @boy) + add(seq + @girl) : add(seq + @boy)
end

puts add(@boy) + add(@girl)

再帰を使う場合は帰納法と深さ優先の場合がある。
どっちか意識すると良い。
あとちゃんとした関数名を考えるクセをつけるべきだな。

解説で図を書いてくれればわかりやすいのになー。