( 問 題 )
碁石を一列に並べます。 黒が隣同士にならないようにするには何通りあるでしょうか?
1個並べるとき、 2個並べるとき、 3個並べるとき、 4個並べるとき、 5個並べるとき、 6個並べるとき、 のそれぞれについて求めなさい。
( 解 答 )
次のような十進BASIC のプログラムを作って実行すると答えがでます。
答えを数列にすると、 次のようになります。
2 3 5 8 13 21
これは准フィボナッチ数列です。 項の値は、 前項とその前の項を加えたものになっています。 その理由を考えてみましょう。
黒が隣同士にならないよう n 個 の碁石を一列に並べるすべての場合の数を Sn とします。 n 個 の碁石を左から右へ一つずつ一列に置いていくものとします。 n 番目に置く石が白である場合は、 黒が隣同士にならないよう n 個 の碁石を一列に並べる場合の数は、 Sn−1 になります。 なぜなら、 n−1 番目に置く石は白でも黒でもどちらでもいいので。 n 番目に置く石が黒である場合は、 黒が隣同士にならないよう n 個 の碁石を一列に並べる場合の数は、 Sn−2 になります。 なぜなら、 n−1 番目に置く石は白でなければならず、 n−1 番目に置く石が白である場合は、 黒が隣同士にならないよう n−1 個 の碁石を一列に並べる場合の数は、 Sn−2 になるからです。 したがって、 Sn は Sn−1 と Sn−2 を加えたものになります。
したがって、 次のような漸化式のプログラムを作って実行しても答えがでます。
准フィボナッチ数列の例としては音符に関するものもあります。 それにつきましては、 十進BASIC_プログラミング > 漸化式の作り方 をご覧ください。
十進