Doxygenもっと日本語対応 作品解説  2013-11-25
 全て クラス ファイル 関数 変数 列挙型 列挙値 ページ
推定.cpp
[詳解]
1 #include <iostream>
2 #include "推定.h"
3 
18 推定::推定( const unsigned int 元数, const unsigned int 取得長さ)
19  : m元数( 元数 ), m取得長さ( 取得長さ ? 取得長さ : 元数 ),
20  mヒット探索( 0 ), mブロー探索( 0 ), m段階( 利用要素探索 )
21 {
23  mヒット探索 = 順列( m取得長さ ); // 使われるのは全ブローが成立した後なので元数は使わない
24 }
25 
26 
33 std::vector<unsigned int> 推定::次()
34 {
35  switch ( m段階 )
36  {
37  case 利用要素探索:
38  return mブロー探索.();
39  case 並べ替え:
40  {
41  const auto v = mヒット探索.();
42  std::vector<unsigned int> r;
43  for ( auto it = v.begin(); it != v.end(); ++it )
44  {
45  r.push_back( m全ブロー[ *it ] );
46  }
47  return r;
48  }
49  default:
50  return std::vector<unsigned int>();
51  }
52 }
53 
54 
62 void 推定::結果登録( const std::vector<unsigned int>& 試行, const 判定結果& 結果 )
63 {
64  switch ( m段階 )
65  {
66  case 利用要素探索:
67  if ( 結果.() == m取得長さ )
68  {
70  m全ブロー = 試行;
71  std::wcout << std::endl << L"使われている文字を特定しました!" << std::endl;
72  }
73  return;
74  case 並べ替え:
75  return;
76  default:
77  return;
78  }
79 }
std::vector< unsigned int > 次()
次の配列を生成して返します
Definition: 順列.cpp:161
ヒットアンドブローの正解を予測するためのクラスを宣言しています
組み合わせ mブロー探索
最初の総当たりで使います
Definition: 推定.h:38
std::vector< unsigned int > m全ブロー
利用要素が確定したときに代入します
Definition: 推定.h:43
指定された引数に基づく順列を逐次生成して返します
Definition: 順列.h:20
const int 計() const
Definition: 判定.h:34
すべてをブローさせるまで探す
Definition: 推定.h:29
std::vector< unsigned int > 次()
次の配列を生成して返します
Definition: 順列.cpp:75
std::vector< unsigned int > 次()
次の試行値を配列の形で返します
Definition: 推定.cpp:33
const unsigned int m元数
mブロー探索 に与えた初期値と同じです
Definition: 推定.h:41
const unsigned int m取得長さ
mブロー探索 や mヒット探索 に与えた初期値と同じです
Definition: 推定.h:42
void 結果登録(const std::vector< unsigned int > &試行, const 判定結果 &結果)
判定結果を登録します
Definition: 推定.cpp:62
推定(const unsigned int 元数, const unsigned int 取得長さ=0)
構築子
Definition: 推定.cpp:18
全ブローから全ヒットへ進行中
Definition: 推定.h:30
ヒットアンドブローの判定結果を保持する構造体
Definition: 判定.h:20
指定された引数に基づく組み合わせを逐次生成して返します
Definition: 順列.h:64
順列 mヒット探索
構成要素特定後の順列総当たりで使います
Definition: 推定.h:39
段階 m段階
現在の検索処理段階を示します
Definition: 推定.h:40