etrobocon2018 feat.KatLab  770af34cce41ae9c30c41303275e1add2daae0c3 (with uncommitted changes)
 全て クラス 名前空間 ファイル 関数 変数 列挙型 列挙値 フレンド マクロ定義 ページ
公開メンバ関数 | 公開変数類 | 全メンバ一覧
AI_Answer::array< T, N > クラステンプレート

#include <AIAnswerArray.h>

AI_Answer::array< T, N > 連携図
Collaboration graph

公開メンバ関数

constexpr array ()
 
constexpr std::uint8_t size () noexcept
 配列のサイズを返す [詳解]
 
constexpr std::uint8_t position () noexcept
 配列の要素を指し示すポインタを返す [詳解]
 
std::int8_t maxProbabilityNumber () noexcept
 確率を入れた配列のうち、一番確率の高い要素のインデックスを返す [詳解]
 
void push_back (const T &value) noexcept
 配列の要素を入れる [詳解]
 
void push_back (std::initializer_list< T > values) noexcept
 
constexpr T at (const std::uint8_t i) noexcept
 
constexpr T operator[] (const std::uint8_t i) noexcept
 
std::int8_t handwriting () noexcept
 
std::int8_t digitalNumber () noexcept
 
constexpr T cast (int i)
 
template<class... Args>
void addProb (const Args &...args)
 

公開変数類

std::array< float, 8 > probs
 

詳解

template<typename T, std::uint8_t N = 6>
class AI_Answer::array< T, N >

AIAnswerArray.h16 行目に定義があります。

構築子と解体子

template<typename T, std::uint8_t N = 6>
constexpr AI_Answer::array< T, N >::array ( )
inline

AIAnswerArray.h23 行目に定義があります。

23 : sequence{}, pos(0), probs() {}
std::array< float, 8 > probs
Definition: AIAnswerArray.h:22

関数詳解

template<typename T, std::uint8_t N = 6>
template<class... Args>
void AI_Answer::array< T, N >::addProb ( const Args &...  args)
inline

AIAnswerArray.h108 行目に定義があります。

109  {
110  for(int i : std::initializer_list<int>{ args... }) probs[i] += 1.0 / size();
111  }
std::array< float, 8 > probs
Definition: AIAnswerArray.h:22
constexpr std::uint8_t size() noexcept
配列のサイズを返す
Definition: AIAnswerArray.h:25

被呼び出し関係図:

template<typename T, std::uint8_t N = 6>
constexpr T AI_Answer::array< T, N >::at ( const std::uint8_t  i)
inlinenoexcept

AIAnswerArray.h50 行目に定義があります。

50 { return sequence[i]; }

被呼び出し関係図:

template<typename T, std::uint8_t N = 6>
constexpr T AI_Answer::array< T, N >::cast ( int  i)
inline

AIAnswerArray.h104 行目に定義があります。

104 { return static_cast<T>(i); }

被呼び出し関係図:

template<typename T, std::uint8_t N = 6>
std::int8_t AI_Answer::array< T, N >::digitalNumber ( )
inlinenoexcept

AIAnswerArray.h80 行目に定義があります。

81  {
82  if(size() != 6) return -1;
83  if(sequence[0] == cast(0)) addProb(1, 4);
84  if(sequence[0] == cast(1)) addProb(0, 2, 3, 5, 6, 7);
85 
86  if(sequence[1] == cast(0)) addProb(0, 1, 7);
87  if(sequence[1] == cast(1)) addProb(2, 3, 4, 5, 6);
88 
89  if(sequence[2] == cast(0)) addProb(1, 4, 7);
90  if(sequence[2] == cast(1)) addProb(0, 2, 3, 5, 6);
91 
92  if(sequence[3] == cast(0)) addProb(1, 3, 4, 5, 7);
93  if(sequence[3] == cast(1)) addProb(0, 2, 6);
94 
95  if(sequence[4] == cast(0)) addProb(5, 6);
96  if(sequence[4] == cast(1)) addProb(0, 1, 2, 3, 4, 7);
97 
98  if(sequence[5] == cast(0)) addProb(1, 2, 3, 7);
99  if(sequence[5] == cast(1)) addProb(0, 4, 5, 6);
100 
101  return maxProbabilityNumber();
102  }
constexpr T cast(int i)
void addProb(const Args &...args)
std::int8_t maxProbabilityNumber() noexcept
確率を入れた配列のうち、一番確率の高い要素のインデックスを返す
Definition: AIAnswerArray.h:31
constexpr std::uint8_t size() noexcept
配列のサイズを返す
Definition: AIAnswerArray.h:25
template<typename T, std::uint8_t N = 6>
std::int8_t AI_Answer::array< T, N >::handwriting ( )
inlinenoexcept

AIAnswerArray.h55 行目に定義があります。

56  {
57  if(size() != 6) return -1;
58  if(sequence[0] == cast(0)) addProb(0, 1);
59  if(sequence[0] == cast(1)) addProb(2, 3, 4, 5, 6, 7);
60 
61  if(sequence[1] == cast(0)) addProb(0, 1, 2, 3, 7);
62  if(sequence[1] == cast(1)) addProb(4, 5, 6);
63 
64  if(sequence[2] == cast(0)) addProb(1, 3, 5, 7);
65  if(sequence[2] == cast(1)) addProb(0, 2, 4, 6);
66 
67  if(sequence[3] == cast(0)) addProb(4);
68  if(sequence[3] == cast(1)) addProb(0, 1, 2, 3, 5, 6, 7);
69 
70  if(sequence[4] == cast(0)) addProb(1, 2, 7);
71  if(sequence[4] == cast(1)) addProb(0, 3, 4, 5, 6);
72 
73  if(sequence[5] == cast(0)) addProb();
74  if(sequence[5] == cast(1)) addProb(1, 2, 3, 4, 5, 6, 7);
75 
76  return maxProbabilityNumber();
77  }
constexpr T cast(int i)
void addProb(const Args &...args)
std::int8_t maxProbabilityNumber() noexcept
確率を入れた配列のうち、一番確率の高い要素のインデックスを返す
Definition: AIAnswerArray.h:31
constexpr std::uint8_t size() noexcept
配列のサイズを返す
Definition: AIAnswerArray.h:25

被呼び出し関係図:

template<typename T, std::uint8_t N = 6>
std::int8_t AI_Answer::array< T, N >::maxProbabilityNumber ( )
inlinenoexcept

確率を入れた配列のうち、一番確率の高い要素のインデックスを返す

AIAnswerArray.h31 行目に定義があります。

32  {
33  auto max_it = std::max_element(probs.begin(), probs.end());
34  return static_cast<std::int8_t>(std::distance(probs.begin(), max_it));
35  }
std::array< float, 8 > probs
Definition: AIAnswerArray.h:22

被呼び出し関係図:

template<typename T, std::uint8_t N = 6>
constexpr T AI_Answer::array< T, N >::operator[] ( const std::uint8_t  i)
inlinenoexcept

AIAnswerArray.h52 行目に定義があります。

52 { return sequence[i]; }
template<typename T, std::uint8_t N = 6>
constexpr std::uint8_t AI_Answer::array< T, N >::position ( )
inlinenoexcept

配列の要素を指し示すポインタを返す

AIAnswerArray.h28 行目に定義があります。

28 { return pos; }

被呼び出し関係図:

template<typename T, std::uint8_t N = 6>
void AI_Answer::array< T, N >::push_back ( const T &  value)
inlinenoexcept

配列の要素を入れる

AIAnswerArray.h38 行目に定義があります。

39  {
40  if(pos >= N) pos = 0;
41  sequence[pos] = value;
42  ++pos;
43  }

被呼び出し関係図:

template<typename T, std::uint8_t N = 6>
void AI_Answer::array< T, N >::push_back ( std::initializer_list< T >  values)
inlinenoexcept

AIAnswerArray.h45 行目に定義があります。

46  {
47  for(auto value : values) push_back(value);
48  }
void push_back(const T &value) noexcept
配列の要素を入れる
Definition: AIAnswerArray.h:38
template<typename T, std::uint8_t N = 6>
constexpr std::uint8_t AI_Answer::array< T, N >::size ( )
inlinenoexcept

配列のサイズを返す

AIAnswerArray.h25 行目に定義があります。

25 { return N; }

被呼び出し関係図:

メンバ詳解

template<typename T, std::uint8_t N = 6>
std::array<float, 8> AI_Answer::array< T, N >::probs

AIAnswerArray.h22 行目に定義があります。


このクラス詳解は次のファイルから抽出されました: