質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

Q&A

解決済

1回答

1177閲覧

「もっとプログラマ脳を鍛える数学パズル」Q39の別解がわかりません

pyxis

総合スコア19

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

1グッド

2クリップ

投稿2020/04/01 10:13

編集2020/04/01 12:49

「もっとプログラマ脳を鍛える数学パズル」という本に載っている
「Q39 隣り合うと消えちゃうんです」の別解の解説でわからないところがあります。
どなたか教えていただけいただけないでしょうか?

問題は以下です。
イメージ説明
解説は以下です。
イメージ説明
イメージ説明
イメージ説明
解答コードは以下です。

Ruby

1N = 11 2 3@memo = {1 => 0, 2 => 1} 4def pair(n) 5 return @memo[n] if @memo[n] 6 @memo[n] = (2 * (n - 1) + 1) * pair(n - 1) + pair(n - 2) 7end 8 9puts pair(N)

漸化式の変形部分などは理解できたのですが、
理解できないのは解説の total()関数で i = 0 ~ n-1 までを足していっているところです。
足すと言うことは、Nがどんなに大きくても、
題意を満たす(隣り合っていない)pair(3)やpair(4)に対応した、
題意を満たしていない(隣り合っている)のに消えない残りの色の並びが必ずあると言うことでしょうか?
もしそうならそれはどのような並びになっているのでしょうか?

例えばNがある程度大きい数で、pair(3)の時の色を数字で表すと、
「123123」と並んでいるのに対し残りの445566778899....はどのように並んでいるのでしょうか?
宜しくお願いします。

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Y.H.

2020/04/01 10:56

著作物の複製(写真)を載せてられますが大丈夫ですか?
pyxis

2020/04/01 11:06

引用ルールの範囲内だと考えております。 しかしサイト運営や著者、出版社の方から取り消すよういわれればこの質問を削除します。
guest

回答1

0

ベストアンサー

解説には特に書いてないようですが、123123に対して4567654 (pair(7)の場合)を挿入するような場合でしょう(結果7_123_4567654_123のようになる)。

上の例で分かるように連続した色の間に新しい色を挿入できる場合について、n - 2色の並びが連続して"いない"必要はありません。
試しに上の例で6と7を削除すると4554となり、n - 2色について同色が連続するようになります。n - 3についても同様(44になる)で、n - 4で初めて連続しない並びになりそれに対応するのがpair(3)です。

totalのn-1についてはもともと同色の間に挿入する場合ではないので、対応する並び方はありません。
totalではn - 2までを足すようにして、別に2(n - 1) * pair(n - 1)を足すと考えたほうがわかりやすいでしょう。

投稿2020/04/01 11:22

yudedako67

総合スコア2047

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pyxis

2020/04/01 12:17

理解できました、ありがとうございます。 確かに残りの数字を456654のように左右対称に並べれば 123_456654_123 123_4554_123 123_44_123 のようにどれだけ数が増えようと連続する数値の所を除いてもまたその隣同士が連続になるので その数列は絶対にpair(n)に含まれないので全ての場合で排反になる(被りが存在しない)。 そして最後の数字で分割することにより題意を満たす(連続するところがなくなる)のですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問