// 【スクリプトファイル(このファイル)】BIG.js
// 【検索対象ファイル】BIG.txt
// 【準備】1行目にBIGか、BIG1000か、mini BIGのいずれかの結果を用意する(空白を1個のみ挿入)
// BIGの例「1 0 1 1 2 0 1 0 2 2 2 0 2 1」
// BIGの例「1 0 1 1 2 0 1 * * * 2 0 * *」
// BIG1000の例「1 0 1 1 2 0 1 0 2 2 2」
// mini BIGの例「1 0 1 1 2 2 2 0 2」
// 【注意】1, 0, 2のどれでも合致とみなす記号がw = "*"で定義されている(変更できる)
// 【実行】cscript //nologo BIG.js
// 【実行(検索付き)】cscript //nologo BIG.js | find "13 matches"
// 【実行(検索および出力ファイル付き)】cscript //nologo BIG.js | find "13 matches" > f.txt
w = "*" // 1, 0, 2のどれでも合致とみなす記号を定義した
a = new Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "1", "2", "3", "4"); // 配列を生成した
t = a.length; // 14(配列の要素数)を取得した
o = WScript.CreateObject("Scripting.FileSystemObject");
text = o.OpenTextFile("BIG.txt", 1); // BIG.txtは検索対象ファイルである
string = text.ReadLine();// 1行目にBIGの結果がある(間に空白を1個のみ挿入)
for(i = 0, j = 0; i < t; i++, j = j + 2) {
a[i] = string.substr(j, 1);// BIGの結果で配列を更新した
if(a[i] == "1" || a[i] == "0" || a[i] == "2" || a[i] == w) {
continue;
} else {
t = i;// BIG1000ならば11(mini BIGなら9)
break;
}
}
if(t == 14) {
r = t - 4;// 4試合はずれ(10試合的中)
} else if(t == 11) {
r = t - 3;// 3試合はずれ(8試合的中)
} else {
r = t - 2;// 2試合はずれ(7試合的中)
}
while(! text.AtEndOfStream) {
string = text.ReadLine();
for(c = 0, i = 0, j = 0; i < t; i++) { // iは、試合の番号ひく1。jで半角空白の個数をカウントする。
s = string.substr(i + j, 1) // sは、第(i + j)桁の1文字
if(s == " ") { // 半角空白である
j++;
s = string.substr(i + j, 1) // 再度、sは第(i + j)桁の1文字(半角空白は、1個のみ挿入できる)
}
if(a[i] == w) { // 1, 0, 2のどれでも可能
c++;
continue;
}
if(s == a[i]) { // 試合結果と一致した
c++;
}
}
if(c >= r) {// r個以上、一致した(r試合的中)
WScript.Echo(string + ": " + c + " matches")
}
}
text.Close();