Doxygenもっと日本語対応 作品解説  2013-11-25
 全て クラス ファイル 関数 変数 列挙型 列挙値 ページ
判定.h
[詳解]
1 #ifndef 判定_H_
2 #define 判定_H_
3 
4 #include <string>
5 #include <algorithm>
6 #include "エラー定数.h"
7 
21 {
26  判定結果( const 判定結果& rhs ) : mHit( rhs.mHit ), mBlow( rhs.mBlow ) { }
27 
33  判定結果( const int hit, const int blow ) : mHit( hit ), mBlow( blow ) { }
34  const int () const { return mHit + mBlow; }
35  const int mHit;
36  const int mBlow;
37 
39 
44  static bool 判定成功() { return m最終エラー == エラーなし; }
45 };
46 
56 template <class T>
57 判定結果 判定( const T& 解答, const T& 試行 )
58 {
59  if ( 解答.size() != 試行.size() )
60  {
61  std::wcerr << L"解答と試行の長さが違います。" << std::endl;
63  return 判定結果( 0, 0 );
64  }
65  int hit = 0;
66  int blow = 0;
67  int idx = 0;
68  for ( auto it = 解答.begin(); it != 解答.end(); ++it, ++idx )
69  {
70  const auto 発見位置 = std::find( 試行.begin(), 試行.end(), *it );
71  if ( 発見位置 != 試行.end() )
72  {
73  if ( *発見位置 == *(試行.begin() + idx) )
74  {
75  hit++;
76  }
77  else
78  {
79  blow++;
80  }
81  }
82  }
83  return 判定結果( hit, blow );
84 }
85 #endif
判定結果 判定(const T &解答, const T &試行)
ヒットアンドブローの判定を行います
Definition: 判定.h:57
const int mBlow
位置は異なるが要素ではある数、 mHit は含まない
Definition: 判定.h:36
static エラー定数 m最終エラー
最新の判定に対する前提条件の成否を示します
Definition: 判定.h:38
判定結果(const 判定結果 &rhs)
複製構築子
Definition: 判定.h:26
判定結果(const int hit, const int blow)
一般構築子
Definition: 判定.h:33
const int 計() const
Definition: 判定.h:34
エラー定数
主に内部で発生した問題を表すための定数です
ヒットアンドブローの判定結果を保持する構造体
Definition: 判定.h:20
解答と試行の長さがそもそも一致していません
正常に処理されています
static bool 判定成功()
最新判定が有効であるかどうかを返します
Definition: 判定.h:44
const int mHit
位置まで含めて一致した数
Definition: 判定.h:35