Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // NOTE: benchmarks show 30% pessimisation on ARMs
- const char* input = R"(A Y
- B X
- C Z
- )";
- int main()
- {
- int score = 0;
- bool parsingOk = true;
- int i = 0;
- while (parsingOk && input[i])
- {
- char his = '\0';
- char winType = '\0';
- his = input[i];
- i += (0 != input[i]);
- i += (0 != input[i]);
- winType = input[i];
- i += (0 != input[i]);
- i += ('\n' == input[i]);
- parsingOk &= ('A' == his) || ('B' == his) || ('C' == his);
- parsingOk &= ('X' == winType) || ('Y' == winType) || ('Z' == winType);
- // map rules
- char mine = (('X' == winType) && ('A' == his)) * 'C' // rock beats scissors
- + (('X' == winType) && ('B' == his)) * 'A' // paper beats rock
- + (('X' == winType) && ('C' == his)) * 'B' // scissors beats paper
- + (('Y' == winType) && ('A' == his)) * 'A' // par
- + (('Y' == winType) && ('B' == his)) * 'B' // par
- + (('Y' == winType) && ('C' == his)) * 'C' // par
- + (('Z' == winType) && ('A' == his)) * 'B' // rock beaten by paper
- + (('Z' == winType) && ('B' == his)) * 'C' // paper beaten by scissors
- + (('Z' == winType) && ('C' == his)) * 'A' // scissors beaten by rock
- ;
- // calculate score
- score += mine - 'A' + 1;
- score += ('Y' == winType) * 3 + ('Z' == winType) * 6;
- }
- return score;
- // printf("%d\n", score);
- // return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement