This documentation is automatically generated by online-judge-tools/verification-helper
This project is maintained by tsutaj
// Dice library
// ---------
// | back |
// | (5) |
// --------+-------+-------+--------+
// | left | top | right | bottom |
// | (4) | (1) | (2) | (3) |
// --------+-------+-------+---------
// | front |
// | (0) |
// ---------
enum Direction {
// 北、南、東、西方向 および 右、左回り に 90 度回転
NORTH = 0, SOUTH = 1, EAST = 2, WEST = 3, ROT_R = 4, ROT_L = 5,
};
enum View {
// どこから見た時の値か?
FRONT = 0, TOP = 1, RIGHT = 2, BOTTOM = 3, LEFT = 4, BACK = 5,
};
struct Dice {
vector<int> value;
Dice(int front, int top, int right) {
int sum = 7;
assert(front + top != sum);
assert(top + right != sum);
assert(front + right != sum);
value = {front, top, right, sum-top, sum-right, sum-front};
}
void rotate(int dir) {
vector<int> fnc, swp(6);
if(dir == NORTH) fnc = {1, 5, 2, 0, 4, 3};
if(dir == SOUTH) fnc = {3, 0, 2, 5, 4, 1};
if(dir == EAST ) fnc = {0, 2, 3, 4, 1, 5};
if(dir == WEST ) fnc = {0, 4, 1, 2, 3, 5};
if(dir == ROT_R) fnc = {4, 1, 0, 3, 5, 2};
if(dir == ROT_L) fnc = {2, 1, 5, 3, 0, 4};
for(int i=0; i<6; i++) swp[ fnc[i] ] = value[i];
swap(value, swp);
}
int get_value(int view) {
return value[view];
}
};
#line 1 "etc/etc_001_dice.cpp"
// Dice library
// ---------
// | back |
// | (5) |
// --------+-------+-------+--------+
// | left | top | right | bottom |
// | (4) | (1) | (2) | (3) |
// --------+-------+-------+---------
// | front |
// | (0) |
// ---------
enum Direction {
// 北、南、東、西方向 および 右、左回り に 90 度回転
NORTH = 0, SOUTH = 1, EAST = 2, WEST = 3, ROT_R = 4, ROT_L = 5,
};
enum View {
// どこから見た時の値か?
FRONT = 0, TOP = 1, RIGHT = 2, BOTTOM = 3, LEFT = 4, BACK = 5,
};
struct Dice {
vector<int> value;
Dice(int front, int top, int right) {
int sum = 7;
assert(front + top != sum);
assert(top + right != sum);
assert(front + right != sum);
value = {front, top, right, sum-top, sum-right, sum-front};
}
void rotate(int dir) {
vector<int> fnc, swp(6);
if(dir == NORTH) fnc = {1, 5, 2, 0, 4, 3};
if(dir == SOUTH) fnc = {3, 0, 2, 5, 4, 1};
if(dir == EAST ) fnc = {0, 2, 3, 4, 1, 5};
if(dir == WEST ) fnc = {0, 4, 1, 2, 3, 5};
if(dir == ROT_R) fnc = {4, 1, 0, 3, 5, 2};
if(dir == ROT_L) fnc = {2, 1, 5, 3, 0, 4};
for(int i=0; i<6; i++) swp[ fnc[i] ] = value[i];
swap(value, swp);
}
int get_value(int view) {
return value[view];
}
};