素数大富豪素数問題に挑む -11日目- トランプで作れる数を考える
※この記事は、数字のド素人であるにせーが、素数大富豪素数問題に挑む記録です。
素数大富豪素数問題に挑む -予告- 素数大富豪とは? - にせいの日記
素数大富豪素数問題に挑む -1日目- まずはやってみる - にせいの日記
素数大富豪素数問題に挑む -まだ1日目- 場合分けとRuby導入 - にせいの日記
素数大富豪素数問題に挑む -まだまだ1日目- 場合分けという底なし沼 - にせいの日記
素数大富豪素数問題に挑む -2日目- 方針転換 - にせいの日記
素数大富豪素数問題に挑む -3日目- Ruby活用 - にせいの日記
素数大富豪素数問題に挑む -4日目- いけるところまでいく - にせいの日記
素数大富豪素数問題に挑む -5日目- コツコツ8桁 - にせいの日記
素数大富豪素数問題に挑む -6日目- 9桁その1 - にせいの日記
素数大富豪素数問題に挑む -7日目- 間違いを発見! - にせいの日記
素数大富豪素数問題に挑む -8日目- 修正からの休眠 - にせいの日記
素数大富豪素数問題に挑む -9日目- 9桁できちゃった - にせいの日記
素数大富豪素数問題に挑む -10日目- 成果発表 - にせいの日記
〜前回までの進捗〜
- 最大の数は72桁(実際に出せる数は71桁以下)
- 使うカードの枚数は考えず、できる素数の桁数で分けて考える
- 4桁以下の素数1,229個は全て表現可能
- 5桁の素数は、8,357個が表現可能
- 6桁の素数は、68,703個が表現可能
- 70桁くらいの素数判定は大変そうだ
- 7桁の素数は、581,998個が表現可能
- 8桁の素数は、5,029,944個が表現可能
- 9桁の素数は、5,253,883個以上が表現可能
以上
<11日目> 2015年1月20日(火)
10日目の記事で書いた方針に従って、「トランプで作れる数字の個数」を求めてみることにした。
条件を確認しておくと、今回数えたいのは「素数大富豪のルールに基づいてトランプのカード(54枚)を並べて作ることのできる数」の個数である。
まず3桁までは、すべての整数をつくることができる。
4桁では、「10の形にならない0」を3つ以上含む数、すなわち2,000・3,000・…・8,000・9,000の8つ以外の整数はすべてトランプで表現可能だ。
4桁までの数は9,999個あり、4桁までで表現可能な数は9,991個ということになる。
5桁からは、手で数えるのは面倒なのでやはりRubyさんに頼ろうと思う。
これまで使ってきた「各桁の数字を取り出してその個数をカウントする」プログラムに手を加えて、「トランプでは作れない数をカウントする」プログラムを作った。
案の定、計算自体はあっさりと終わった。しかしやっぱりプログラムが無駄に長い。
と思っていたところで、計算事始めの講義の中で「配列」と出会った。
さすがに避けることもできず、勇気を出して説明を読んだ。
読める!読めるぞ!!(by ムスカ大佐)
早速これまでのプログラムを、配列を使ったものに修正した。
まだ完全に使いこなしているとは言えないが、とりあえずプログラムの長さが半分になった。
これでひとまず、8桁までの「トランプで作れる数」を数えた。
ここには結果の数字だけ並べておく。
- 1桁:9個
- 2桁:90個
- 3桁:900個
- 4桁:8,992個
- 5桁:89,719個
- 6桁:893,677個
- 7桁:8,884,582個
- 8桁:88,137,299個
案の定ぐんぐん増える。
ここまでのまとめ
- 「トランプで作れる数」の個数は8桁まで求めた
このカウントが8桁で止まったのには訳がある。
以前にもどこかで書いたが、9桁からは1の個数が問題となってくるのだ。
前回は「別途数える」という力技で乗り切ったが、それが通用するのも9桁までであり、根本的な問題解決にはなっていない。
「1の数え方」と「表現可能/不能とするための条件設定」を明らかにすることが、次の大きなステップであるだろう。