【BIG】 100口以上購入の人 【統計】

このエントリーをはてなブックマークに追加
227名無しさん@夢いっぱい
// 【スクリプトファイル(このファイル)】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();