tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^4: 効率的なパンデジタル数作成方法が分かりません
投稿日: 2017/04/19(Wed) 10:19
投稿者nis9036
魔界の仮面弁士様
さてやってみようかともう一度本ツリーを覗いてみたら
もう返事が来ているので驚きました。
御手数掛けます。
Redim Preserve 使っています。と云うのもどれくらいの配列量になるのか分からなかったので一つ見付ける度に
カウントアップして配列量を増やしてやろう。と安直に考えていました。
教えて貰った方法で最初から配列数を指定できます。
頭にゼロがくる事についてはValで数値化した時に省けば良かろう。とこれまた安易に考えていました。
後ろの桁に行くほど選択肢が狭くなる事には気が付いていましたが、幾つか試して
「こんなん リストアップの所で and <> やっとるのとかわらんやんけ」と努力を放棄していました。
再帰については ”世の中にそんな方法があるらしく、どうやら不定ループをかなり簡潔に処理できるらしい”
と云う事だけ知っていました。
早速プリントアウトして試してみます。
重ね重ねありがとうございました。

> > ListBoxを使うと遅いと分かっていたので実際には配列を使っていました。
>
> ReDim Preserve を使ってはいないですよね?
>
>
> > 因みに18時間ぐらい廻していますが120万件ほど集まっていました。
>
> その計算ペースですと、終了までには 2〜3 日かかりそうですね。
> PC 性能にもよりますが、先の私の方法なら 15 秒前後だと思います。
>
>
> >>> 下記の繰り返し処理をやってみたのですが、3桁の場合は良いのですが、
>
> 1,2,3 の 3 桁に対して、N1 = 0〜2、N2 = 0〜2、N3 = 0〜2 のループを行っていますよね。
>
> これはすなわち、CH の個数を x としたときに、
> 『x^x 回』のループが行われるということを意味します。
>
> x = 3 ならば「27 回」のループが行われることになりますが、
> それによって求まる組み合わせは、下記の「6 通り」しか
> ありませんので、かなりの回数が無駄になります。
>   123
>   132
>   213
>   231
>   312
>   312
>
>
>
> 改めて、1,2,3 の組み合わせについて考えてみましょう。
>
> 最初の数字は、1/2/3 のいずれかですよね。
> 最初の数字が 1 だった場合、次の文字は 2/3 のいずれかですよね。
> 最初が 1 で二番目が 3 だったら、次の文字は必ず 2 ですよね。
>
>
> このように、後ろの桁になるほど選択肢が狭まることがわかります。
> これはすなわち、組み合わせ数が『x! 通り』であるということです。
> (先の私のコードでは、Except 拡張メソッドを再帰的に呼び出すことで対処しています)
>
>
> 計算してみると分かりますが、『x!』と『x^x』とでは、文字通り桁違いの数となります。
>
> n = 2 なら「2」と「4」
> n = 3 なら「6」と「27」
> n = 4 なら「24」と「256」
> n = 5 なら「120」と「3,125」
> n = 6 なら「720」と「46,656」
> n = 7 なら「5,040」と「823,543」
> n = 8 なら「40,320」と「16,777,216」
> n = 9 なら「362,880」と「387,420,489」
> n =10 なら「3,628,800」と「10,000,000,000」
> n =11 なら「39,916,800」と「285,311,670,611」
> n =12 なら「479,001,600」と「8,916,100,448,256」
>
> n =16 なら「20,922,789,888,000」と「18,446,744,073,709,551,616」
>
> n =32 なら「263,130,836,933,693,530,167,218,012,160,000,000」と
> 「1,461,501,637,330,902,918,203,684,832,716,283,019,655,932,542,976」
>
>
> ※パンデジタル数では、先頭の数字が 0 になることがありませんので、
>  10! = 3,628,800 通りではなく、10! - 9! = 3,265,920 通りです。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)
おなまえ
タイトル (できるだけ短く簡潔に)
メッセージ   図表モード   注意! 全角で40文字以内 (下記テキストボックスの範囲内) 【改行処理】 を必ずして下さい。   【マルチポスト】(複数の掲示板で同じ質問をする事) 【返信】(お礼) のできない方の投稿は、お断りします。 [注意事項]をよく読んでから投稿して下さい。    URLの投稿 は、最初の1文字を除いて ttp://hanatyan.sakura.ne.jp/ のようにして投稿して下さい。
暗証キー (英数字で8文字以内)
投稿キー (投稿時 投稿キー を入力してください)
  • 当掲示板をご利用になる場合は、必ず【掲示板ご利用に際し】をよく読んでからご利用願います。

  •   プレビュー
  • 質問される前に【当サイト内外の検索】を使って下調べをして下さい。

  • ★★★ 下記から自分の投稿記事を[修正]することができます ★★★
    処理 記事No 暗証キー
      累計    本日 昨日
    [.NET用掲示板] [VB6.0用掲示板] [サンプル投稿用掲示板] [雑談用掲示板]   [ツリー表示へ] [注意事項] [ワード検索] [Home]