2012年5月4日星期五

組合せ文字出力するソフトを作ってくれませんか

組合せ文字出力するソフトを作ってくれませんか

例えば、「□ふ□□ん□ー□」と入力すればそれに応じた組合せの全てのひらがなの文字通りの出力するソフトを作って欲しいです。



「①ふ②③ん④ー⑤」と風に分析して、



①には、(あ い う え お か き く け こ さ し す せ そ た ち つ て と な に ぬ ね の は ひ ふ へ ほ ま み む め も や ゆ よ ら り る れ ろ わ が ぎ ぐ げ ご ざ じ ず ぜ ぞ だ ぢ づ で ど ば び ぶ べ ぼ ぱ ぴ ぷ ぺ ぽ)まで任意指定。



②には、(あ い う え お か き く け こ さ し す せ そ た ち つ て と な に ぬ ね の は ひ ふ へ ほ ま み む め も や ゆ よ ら り る れ ろ わ を ん が ぎ ぐ げ ご ざ じ ず ぜ ぞ だ ぢ づ で ど ば び ぶ べ ぼ ぱ ぴ ぷ ぺ ぽ ぁ ぃ ぅ ぇ ぉ)まで任意指定。



③には、 (あ い う え お か き く け こ さ し す せ そ た ち つ て と な に ぬ ね の は ひ ふ へ ほ ま み む め も や ゆ よ ら り る れ ろ わ を ん が ぎ ぐ げ ご ざ じ ず ぜ ぞ だ ぢ づ で ど ば び ぶ べ ぼ ぱ ぴ ぷ ぺ ぽ ぁ ぃ ぅ ぇ ぉ ゃ ゅ ょ)まで任意指定



④には、(あ い う え お か き く け こ さ し す せ そ た ち つ て と な に ぬ ね の は ひ ふ へ ほ ま み む め も や ゆ よ ら り る れ ろ わ が ぎ ぐ げ ご ざ じ ず ぜ ぞ だ ぢ づ で ど ば び ぶ べ ぼ ぱ ぴ ぷ ぺ ぽ)まで任意指定。



⑤には、あ い う え お か き く け こ さ し す せ そ た ち つ て と な に ぬ ね の は ひ ふ へ ほ ま み む め も や ゆ よ ら り る れ ろ わ を ん が ぎ ぐ げ ご ざ じ ず ぜ ぞ だ ぢ づ で ど ば び ぶ べ ぼ ぱ ぴ ぷ ぺ ぽ)まで任意指定。



こういう任意の文字の指定が出来るようにして欲しいです。そして最後は、以下のようなTXTファイルとして出力して欲しいのです



例.txt

-ここから-

あふああんあーあ

あふああんあーい

……

……

ろふんんんんーん

-ここまで-



こんな感じです。最後の文字は「ん」でなくてもかまいません。さきほどBATでやるやり方を教えてもらったのですが、途方もない時間がかかるためになるたけ処理を高速化してそれに特化したソフトウェアを作って欲しいのです。

どうかよろしくお願いします。m(__)m







下記をメモ帳に貼り付けて 組み合わせ.vbs という名前で保存

ダブルクリックで実行されます 処理が終わると

作成した個数と 開始/終了時間が表示されます









myName = "Sample.txt"

myT1 = "あ,い,う,え,お,か,き,く,け,こ,1,2,3,4,5,6,7,8,9,0"

myT2 = "あ,い,う,え,お,か,き,く,け,こ,1,2,3,4,5,6,7,8,9,0"

myT3 = "あ,い,う,え,お,か,き,く,け,こ,1,2,3,4,5,6,7,8,9,0"

myT4 = "あ,い,う,え,お,か,き,く,け,こ,1,2,3,4,5,6,7,8,9,0"

myT5 = "あ,い,う,え,お,か,き,く,け,こ,1,2,3,4,5,6,7,8,9,0"



Call myTXTc

myST = Now

For Each my1 In Split(myT1, ",")

For Each my2 In Split(myT2, ",")

For Each my3 In Split(myT3, ",")

For Each my4 In Split(myT4, ",")

For Each my5 In Split(myT5, ",")



myTXT = myTXT & my1 & "ふ" & my2 & my3 & "ん" & my4 & "ー" & my5 & vbCrLf



i = i + 1

If i Mod 1000 = 0 Then

WScript.Sleep 10

Call myTXTw

myTXT = ""

End If

Next

Next

Next

Next

Next

If myTXT <> "" Then Call myTXTw

Msgbox i & vbCrLf & myST & vbCrLf & Now



Sub myTXTc()

With CreateObject("Scripting.FileSystemObject") _

.OpenTextFile(myName, 2, True)

.Close

End With

End Sub



Sub myTXTw()

With CreateObject("Scripting.FileSystemObject")

With .OpenTextFile(myName, 8, True)

.Write myTXT

.Close

End With

End With

End Sub







http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1262189512

前回の質問では 300万個程度まで作成したい とのこと

20種の5乗で 約300万個になるので

上記のコードでテストしたところ 自機で5分程度かかりました

メモりとCPUに依存します

メモりに全部記憶して 最後に1発でファイル化すると遅くなる印象でした

逆にあまりファイル保存の回数を増やすとそれでも遅くなるので

1000個単位としました この辺はメモりとの相談で調整可能かと








作ったよwwwwwwwwwww







おもしろそうなので、作ってみようかとも思ったけど、ざっと計算しても



69*76*79*69*71

=2029538124通りの組み合わせになる。約20億。この数字で作るのは、あきらめました;;



1つ、0.001秒(1000分の1秒)としても 2029538.124秒

=33825.6354分

=563.76059時

=23.49日

(計算間違ってたら、ごめん。)

しかも、テキストファイルが32GBってとこかな?



Cで書いてもらうしかないね。

没有评论:

发表评论