/********************************* * * 問題生成を始める * * *******************************/ private void button2_Click(object sender, EventArgs e) { this.Cursor = Cursors.WaitCursor; try { if (radio_hint.Checked) { if (tb_hintfile_path.TextLength == 0) { MessageBox.Show("ヒントを生成したいファイル名を指定してください。", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (!System.IO.File.Exists(Problem.prb_hintfile_path)) { MessageBox.Show("ヒントを生成したいファイルが存在しません。", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } else { if (tb_savefile_path.TextLength == 0) { MessageBox.Show("保存先ファイルを指定してください。", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (radio_dot.Checked) { if (tb_dotfile_path.TextLength == 0) { MessageBox.Show("Dot画のファイル名を指定してください。", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (!System.IO.File.Exists(Problem.dotfile_path)) { MessageBox.Show("指定されたDot画のファイルが存在しません。", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } } Tapa.MAX_BOARD_ROW = int.Parse(comboBox1.Text); Tapa.MAX_BOARD_COL = int.Parse(comboBox2.Text); Tapa.BOX_SUM = Tapa.MAX_BOARD_ROW * Tapa.MAX_BOARD_COL; // マス数 string tmp = startMakeProblem.Text; startMakeProblem.Text = "問題生成中..."; Enabled = false; startMakeProblem.Enabled = false; // 時間計測開始 System.Diagnostics.Stopwatch sw = System.Diagnostics.Stopwatch.StartNew(); // 問題生成の処理 if (!radio_random.Checked) { if (radio_hint.Checked) { Problem.hint_percent = int.Parse(comboBox3.Text); if (!Problem.manageMakingHintFromTxt()) { MessageBox.Show("指定された問題はこのプログラムでは解けませんでした。", "力及ばず", MessageBoxButtons.OK, MessageBoxIcon.Error); Problem.is_correct_txtformat = true; } } else { Problem.manageMakingProblemFromTxt(); } if (!Problem.is_correct_txtformat) { MessageBox.Show("指定されたDot画またはヒント対象ファイルがぱずぷれ形式ではない可能性があります。", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error); Problem.is_correct_txtformat = true; } if (!Problem.is_correct_tapa_dot) { MessageBox.Show("指定されたDot画がTapaの解答として正しくない可能性があります。", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error); Problem.is_correct_tapa_dot = true; } } else { Problem.manageMakingProblem(); } //時間計測終了 sw.Stop(); Console.WriteLine("問題生成にかかった時間 >> " + sw.Elapsed); // 遊ぶファイルを今回作ったものにする if (radio_hint.Checked) { tb_playfile_path.Text = Problem.playfile_path = Problem.ans_hintfile_path; } else { tb_playfile_path.Text = Problem.playfile_path = Problem.savefile_path; } startMakeProblem.Text = tmp; startMakeProblem.Enabled = true; Enabled = true; } catch (Exception ex) { MessageBox.Show(ex.Message, this.Text); } finally { this.Cursor = Cursors.Default; } }
public static void makeSampleData() { //for (Tapa.MAX_BOARD_ROW = MIN_GEN_ROW; Tapa.MAX_BOARD_ROW <= MAX_GEN_ROW; Tapa.MAX_BOARD_ROW++) { // for (Tapa.MAX_BOARD_COL = MIN_GEN_COL; Tapa.MAX_BOARD_COL <= MAX_GEN_COL; Tapa.MAX_BOARD_COL++) { Tapa.MAX_BOARD_ROW = Tapa.MAX_BOARD_COL = 8; for (int rate = 25; rate <= 90; rate += 5) { Problem.MAX_WHITEBOX_START_RATE = rate; Problem.MIN_WHITEBOX_START_RATE = rate; Tapa.BOX_SUM = Tapa.MAX_BOARD_COL * Tapa.MAX_BOARD_ROW; dir_name = "tapa_fast_normal_" + Tapa.MAX_BOARD_ROW + "" + Tapa.MAX_BOARD_COL + "_r" + rate; FolderManagement.makeFolder(base_directory, dir_name); // MAX_TXT個の問題に対する PreBook sum = new PreBook("average"); // 合計 PreBook min = new PreBook("max"); // 最大 PreBook max = new PreBook("min", true); // 最少 for (int txt_id = 0; txt_id < MAX_TXT; txt_id++) { Tapa.file_name = "tapa" + Tapa.MAX_BOARD_ROW + Tapa.MAX_BOARD_COL + String.Format("{0:00000}", txt_id) + ".txt"; Tapa.processnum_kuromasu = 0; Tapa.processnum_kakuteijogaiid = 0; Tapa.processnum_dangoid = 0; Tapa.processnum_korituid = 0; Tapa.processnum_betu0id = 0; Tapa.processnum_kakuteimasu = 0; Tapa.processnum_numbox = 0; Tapa.visittimes_kuromasu = 0; Tapa.visittimes_kakuteijogaiid = 0; Tapa.visittimes_dangoid = 0; Tapa.visittimes_korituid = 0; Tapa.visittimes_betu0id = 0; Tapa.visittimes_kakuteimasu = 0; Tapa.sum_times_kuromasu = 0; Tapa.sum_times_kakuteijogaiid = 0; Tapa.sum_times_dangoid = 0; Tapa.sum_times_korituid = 0; Tapa.sum_times_betu0id = 0; Tapa.sum_times_kakuteimasu = 0; //// 時間計測開始 System.Diagnostics.Stopwatch sw = System.Diagnostics.Stopwatch.StartNew(); Problem.manageMakingProblem(); ////時間計測終了 sw.Stop(); Tapa.time_makeproblem = sw.ElapsedMilliseconds; Tapa.is_count = true; Tapa.solveTapa(); Tapa.is_count = false; calcSum(sum); calcMax(min); calcMin(max); // http://kageura.hatenadiary.jp/entry/2015/05/18/200000 // csvファイルに書き込むlist MyCSVManagement.svc_list.Add( new Book() { tapa_name = Tapa.file_name, c_blackbox = Tapa.isolation_blackboxes_group_list[0].Count.ToString(), c_whitebox = (Tapa.BOX_SUM - Tapa.isolation_blackboxes_group_list[0].Count).ToString(), c_numbox = Tapa.processnum_numbox.ToString(), kuromasu = Tapa.processnum_kuromasu.ToString(), kakuteiIdJogai = Tapa.processnum_kakuteijogaiid.ToString(), dangoIdJogai = Tapa.processnum_dangoid.ToString(), korituIdJogai = Tapa.processnum_korituid.ToString(), betuId0Jogai = Tapa.processnum_betu0id.ToString(), kakuteimasu = Tapa.processnum_kakuteimasu.ToString(), visittimes_kuromasu = Tapa.visittimes_kuromasu.ToString(), visittimes_kakuteijogaiid = Tapa.visittimes_kakuteijogaiid.ToString(), visittimes_dangoid = Tapa.visittimes_dangoid.ToString(), visittimes_korituid = Tapa.visittimes_korituid.ToString(), visittimes_betu0id = Tapa.visittimes_betu0id.ToString(), visittimes_kakuteimasu = Tapa.visittimes_kakuteimasu.ToString(), sum_times_kuromasu = Tapa.sum_times_kuromasu.ToString(), sum_times_kakuteijogaiid = Tapa.sum_times_kakuteijogaiid.ToString(), sum_times_dangoid = Tapa.sum_times_dangoid.ToString(), sum_times_korituid = Tapa.sum_times_korituid.ToString(), sum_times_betu0id = Tapa.sum_times_betu0id.ToString(), sum_times_kakuteimasu = Tapa.sum_times_kakuteimasu.ToString(), avetimes_kuromasu = (Tapa.visittimes_kuromasu == 0) ? 0 : Tapa.sum_times_kuromasu / (float)Tapa.visittimes_kuromasu, avetimes_kakuteijogaiid = (Tapa.visittimes_kakuteijogaiid == 0) ? 0 : Tapa.sum_times_kakuteijogaiid / (float)Tapa.visittimes_kakuteijogaiid, avetimes_dangoid = (Tapa.visittimes_dangoid == 0) ? 0 : Tapa.sum_times_dangoid / (float)Tapa.visittimes_dangoid, avetimes_korituid = (Tapa.visittimes_korituid == 0) ? 0 : Tapa.sum_times_korituid / (float)Tapa.visittimes_korituid, avetimes_betu0id = (Tapa.visittimes_betu0id == 0) ? 0 : Tapa.sum_times_betu0id / (float)Tapa.visittimes_betu0id, avetimes_kakuteimasu = (Tapa.visittimes_kakuteimasu == 0) ? 0 : Tapa.sum_times_kakuteimasu / (float)Tapa.visittimes_kakuteimasu, time_maketapa = Tapa.time_makeproblem.ToString() }); } addAveBook(sum); addBook(max); addBook(min); writeCSV(); MyCSVManagement.svc_list.Clear(); } //// // } //} }