7 #include <boost/algorithm/string/trim.hpp> 
    8 #include <boost/foreach.hpp> 
    9 #include <boost/program_options.hpp> 
   16 typedef std::pair<value_t, value_t> 
pair_t;
 
   17 typedef std::map<std::string, pair_t> 
map_t;
 
   20               const std::string& turn,
 
   22               const std::string& csa_file)
 
   24   const std::string log_file = player + 
"_" + turn + 
".log";
 
   25   std::ofstream 
out(log_file.c_str(), std::ios::app);
 
   26   out << value << 
"\t" << csa_file << 
"\n";
 
   44       pair_t& pair    = map[player];
 
   46       values.push_back(eval);
 
   48       logValue(player, 
"black", eval, csa_file);
 
   58       pair_t& pair    = map[player];
 
   60       values.push_back(eval);
 
   62       logValue(player, 
"white", eval, csa_file);
 
   70   BOOST_FOREACH(
const map_t::value_type& vt, map) {
 
   71     std::cout << 
"===== " << vt.first << 
" =====\n";
 
   73       int sum, mean, var, std_dev, skew, kurt; 
 
   75                               sum, mean, var, std_dev, skew,  kurt);
 
   76       std::cout << 
"[BLACK] mean: " << mean << 
", std_dev: " << std_dev << std::endl;
 
   79       int sum, mean, var, std_dev, skew, kurt; 
 
   81                               sum, mean, var, std_dev, skew,  kurt);
 
   82       std::cout << 
"[WHITE] mean: " << mean << 
", std_dev: " << std_dev << std::endl;
 
   88 int main(
int argc, 
char **argv)
 
   90   namespace bp = boost::program_options;
 
   92   bp::options_description command_line_options;
 
   93   command_line_options.add_options()
 
   94     (
"input-file", bp::value<std::vector<std::string> >(),
 
   95      "input files in the CSA format")
 
   96     (
"help", 
"Show help message");
 
   98   bp::positional_options_description p;
 
   99   p.add(
"input-file", -1);
 
  103       bp::command_line_parser(argc, argv).options(command_line_options).positional(p).
run(), vm);
 
  105     if (vm.count(
"help")) {
 
  106       std::cerr << 
"Calculate evaluation values for the initial search moves after finishing opening moves.\n";
 
  107       std::cerr << 
"Usage: " << argv[0] << 
" [options] csa-file [...]\n";
 
  108       std::cerr << 
"       " << argv[0] << 
" [options]\n";
 
  109       std::cout << command_line_options << std::endl;
 
  112   } 
catch (std::exception &e) {
 
  113     std::cerr << 
"error in parsing options" << std::endl
 
  114               << e.what() << std::endl;
 
  115     std::cerr << 
"Calculate evaluation values for the initial search moves after finishing opening moves.\n";
 
  116     std::cerr << 
"Usage: " << argv[0] << 
" [options] csa-file [...]\n";
 
  117     std::cerr << 
"       " << argv[0] << 
" [options]\n";
 
  118     std::cerr << command_line_options << std::endl;
 
  122   std::vector<std::string> 
files;
 
  123   if (vm.count(
"input-file")) {
 
  124     const std::vector<std::string> temp = vm[
"input-file"].as<std::vector<std::string> >();
 
  125     files.insert(files.end(), temp.begin(), temp.end());
 
  128     while(std::getline(std::cin , line)) {
 
  129       boost::algorithm::trim(line);
 
  130       files.push_back(line);
 
  135   BOOST_FOREACH(
const std::string& file, files) {