にせいの日記

「自分の好きなものってなんだろう?」という疑問を解決するために、気が向いた時に好きなことを書いてみて、「自分の好きなもの」をあぶり出そうと試みています。

素数大富豪素数問題に挑む -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の数え方」と「表現可能/不能とするための条件設定」を明らかにすることが、次の大きなステップであるだろう。