etrobocon2018 feat.KatLab  770af34cce41ae9c30c41303275e1add2daae0c3 (with uncommitted changes)
 全て クラス 名前空間 ファイル 関数 変数 列挙型 列挙値 フレンド マクロ定義 ページ
InitialPositionCodeDecoder.cpp
[詳解]
1 
8 
9 void InitialPositionCodeDecoder::decode(std::int32_t code) {
10  if (code < 0) return;
11 
12  std::int8_t remainder = 0;
13  initialPositionCode = code;
14  std::int32_t sumCurrentCode = 0;
15  std::int32_t codeBeforeDecoded = 0;
16 
17  std::vector<std::int32_t> power16 = {1, 16, 16*16, 16*16*16, 16*16*16*16};
18 
19  remainder = code % power16[4] % power16[3] % power16[2] % power16[1];
20  initialPositionPowerBlockCode = remainder;
21  sumCurrentCode = remainder;
22 
23  codeBeforeDecoded = (code - sumCurrentCode) % power16[4] % power16[3] % power16[2];
24  initialPositionCodeList[3] = codeBeforeDecoded / power16[1];
25  sumCurrentCode += codeBeforeDecoded;
26 
27  codeBeforeDecoded = (code - sumCurrentCode) % power16[4] % power16[3];
28  initialPositionCodeList[2] = codeBeforeDecoded / power16[2];
29  sumCurrentCode += codeBeforeDecoded;
30 
31  codeBeforeDecoded = (code - sumCurrentCode) % power16[4];
32  initialPositionCodeList[1] = codeBeforeDecoded / power16[3];
33  sumCurrentCode += codeBeforeDecoded;
34 
35  codeBeforeDecoded = (code - sumCurrentCode);
36  initialPositionCodeList[0] = codeBeforeDecoded / power16[4];
37 }
38 
40  return initialPositionCode;
41 }
42 
44  return initialPositionCodeList;
45 }
46 
48  return initialPositionPowerBlockCode;
49 }
初期位置コードデコーダークラス
std::vector< std::int8_t > getInitialPositionCodeList()