http://money4.2ch.net/test/read.cgi/loto/1141575854/290 「誰かロト6の番号集計ソフトうpしてくれ〜」
集計するには、ほとんどの場合、事前に編集が必要であり、自動化が困難です。
だれが当せんしたかどうでもよく、半角数字で一行ずつ記載されており、一桁台は
零が付加されている(3ではなく03と表記されている)場合は自動化できます。
さらに容易に自動化するには2等か3等かの判定を省略します。
【ファイル名】lotosix.txt
03 12 16 23 24 41
15 18 23 28 37 42
14 17 18 34 37 43
42 41 40 17 15 14 降順だ('A`)
21 18 03 04 15 33('A`)
06 24 31 32 34('A`) 39
01,13,15,18,28,37
08,10,11,24,29,33
14,25,28,32,36,42
03 05 08 26 32 34
11 14 19 26 30 40
10 12 21 24 38 43
01 03 10 19 32 35
10 17 24 29 30 35
02 17 23 32 39 40
05 10 24 25 33 38
02 07 17 25 28 37
05-07-15-28-30-34
01-12-32-33-39-42
03-17-22-25-26-31
以下ではスクリプト言語Rubyによって当せんを発見します。
# 【ファイル名】itchi.rb
# 【実行例】ruby itchi.rb 03 12 16 23 24 41 lotosix.txt 3
$KCODE = "s" # シフトJISコード
ball = ["01", "02", "03", "04", "05", "06", "file.txt", "6"] # 配列を生成した
i = 0
while string = ARGV.shift
ball[i] = string # コマンドラインにしたがって配列の内容を変更した
i += 1
end
count = i - 2 # ロト6結果の本数字の総数(count = 6)
file_name = ball[count] # ファイル名を指定した
s = ball[i - 1].to_i # 一致する個数を指定した(5等を出力するには s = 3)
File.foreach(file_name) do |line|
string = line.chop # 復帰文字および改行文字(0Dh, 0Ah)を削除した
string = " " + string + " " # 両端に数字ではない文字(空白)を付加した
hit = 0
i = 0
while i < count do
r = Regexp.new("[^0-9]" + ball[i] + "[^0-9]") # 正規表現 /[^0-9]03[^0-9]/
if r =~ string
hit += 1
end
i += 1
end
if hit == s
puts string
end
end
itchi.rbにおいて全角の空白文字(シフトJISコード8140h)をタブ文字(\tすなわち09h)
または半角の空白文字(20h)に置換しなければなりません。
itchi.rbはRubyのスクリプトです。C言語とは異なり、Rubyはインタープリタであり
スクリプトをコンパイルする必要はありません。
たとえば、Windowsのコマンドプロンプトにおいてrubyを実行します。
【WindowsパソコンにRubyをインストールした例1】Rubyのバージョンを表示する
D:\bcc>ruby --version
ruby 1.6.4 (2001-06-04) [i386-cygwin]
D:\bcc>
【WindowsパソコンにRubyをインストールした例2】Rubyのバージョンを表示する
G:\ruby-1.8.4>ruby --version
ruby 1.8.4 (2005-12-24) [i386-bccwin32]
G:\ruby-1.8.4>
【実行例1】03 12 16 23 24 41に6個一致する行のみ出力するには
D:\bcc>ruby itchi.rb 03 12 16 23 24 41 lotosix.txt 6
03 12 16 23 24 41
D:\bcc>
【実行例2】03 12 16 23 24 41に2個一致する行のみ出力するには
D:\bcc>ruby itchi.rb 03 12 16 23 24 41 lotosix.txt 2
10 12 21 24 38 43
D:\bcc>
REM【ファイル名】it.bat
ruby itchi.rb 03 12 16 23 24 43 lotosix.txt %1
以上を記載したバッチファイル(it.bat)を用意した場合、コマンドプロンプトにおいて…
【実行例3】03 12 16 23 24 43に3個一致する行のみ出力するには
D:\bcc>it 3
D:\bcc>REM 【ファイル名】it.bat
D:\bcc>ruby itchi.rb 03 12 16 23 24 43 lotosix.txt 3
10 12 21 24 38 43
D:\bcc>
【実行例4】03 12 16 23 24 43に5個一致する行のみ出力するには
D:\bcc>it 5
D:\bcc>REM 【ファイル名】it.bat
D:\bcc>ruby itchi.rb 03 12 16 23 24 43 lotosix.txt 5
03 12 16 23 24 41
D:\bcc>
【実行例5】03 12 16 23 24 43に1個一致する行のみ出力するとき
出力をリダイレクトするには
D:\bcc>it 1 > lotosix1.txt
D:\bcc>
エディタによってlotosix1.txtのファイルを開くと…
D:\bcc>REM 【ファイル名】it.bat
D:\bcc>ruby itchi.rb 03 12 16 23 24 43 lotosix.txt 1
15 18 23 28 37 42
14 17 18 34 37 43
21 18 03 04 15 33('A`)
06 24 31 32 34('A`) 39
08,10,11,24,29,33
03 05 08 26 32 34
01 03 10 19 32 35
10 17 24 29 30 35
02 17 23 32 39 40
05 10 24 25 33 38
01-12-32-33-39-42
03-17-22-25-26-31
155 :
153:2006/10/17(火) 08:10:37 ID:t7b60cKw
訂正します(REMの直後に空白を挿入します)
REM 【ファイル名】it.bat