First three days
This commit is contained in:
2500
02/input-prod
Normal file
2500
02/input-prod
Normal file
File diff suppressed because it is too large
Load Diff
3
02/input-test
Normal file
3
02/input-test
Normal file
@ -0,0 +1,3 @@
|
||||
A Y
|
||||
B X
|
||||
C Z
|
86
02/task.py
Normal file
86
02/task.py
Normal file
@ -0,0 +1,86 @@
|
||||
|
||||
# A for Rock, B for Paper, and C for Scissors
|
||||
# X for Rock, Y for Paper, and Z for Scissors
|
||||
|
||||
# 1 for Rock, 2 for Paper, and 3 for Scissors
|
||||
# 0 if you lost, 3 if the round was a draw, and 6 if you won
|
||||
|
||||
# X means you need to lose, Y means you need to end the round in a draw, and Z means you need to win
|
||||
|
||||
SHAPE_MAP = {'A': 'X', 'B': 'Y', 'C': 'Z'}
|
||||
SHAPE_SCORE = {'X': 1, 'Y': 2, 'Z': 3}
|
||||
WIN_OUTCOME_SCORE = ['XY', 'YZ', 'ZX']
|
||||
|
||||
MAP = {
|
||||
'X': {
|
||||
'X': 'Z',
|
||||
'Y': 'X',
|
||||
'Z': 'Y'
|
||||
},
|
||||
'Y': {
|
||||
'X': 'X',
|
||||
'Y': 'Y',
|
||||
'Z': 'Z',
|
||||
},
|
||||
'Z': {
|
||||
'X': 'Y',
|
||||
'Y': 'Z',
|
||||
'Z': 'X',
|
||||
}
|
||||
}
|
||||
|
||||
def get_outcome_score(x, y):
|
||||
if x == y:
|
||||
return 3
|
||||
if (x + y) in WIN_OUTCOME_SCORE:
|
||||
return 6
|
||||
else:
|
||||
return 0
|
||||
|
||||
|
||||
def get_score_for_line(line):
|
||||
print(line)
|
||||
x, y = line.split(' ')
|
||||
x = SHAPE_MAP[x]
|
||||
shape_score = SHAPE_SCORE[y]
|
||||
outcome_score = get_outcome_score(x, y)
|
||||
print(shape_score, outcome_score)
|
||||
return shape_score + outcome_score
|
||||
|
||||
|
||||
def solution(input):
|
||||
lines = input.split('\n')
|
||||
return sum(get_score_for_line(l) for l in lines if l)
|
||||
|
||||
|
||||
def get_score_for_line_2(line):
|
||||
print(line)
|
||||
x, y = line.split(' ')
|
||||
x = SHAPE_MAP[x]
|
||||
a, b = x, MAP[y][x]
|
||||
print(a, b)
|
||||
shape_score = SHAPE_SCORE[b]
|
||||
outcome_score = get_outcome_score(a, b)
|
||||
print(shape_score, outcome_score)
|
||||
return shape_score + outcome_score
|
||||
|
||||
|
||||
def solution_2(input):
|
||||
lines = input.split('\n')
|
||||
return sum(get_score_for_line_2(l) for l in lines if l)
|
||||
|
||||
|
||||
# with open('input-test', 'r') as f:
|
||||
# assert solution(f.read()) == 15, 'Not pass'
|
||||
|
||||
|
||||
# with open('input-prod', 'r') as f:
|
||||
# print(solution(f.read()))
|
||||
|
||||
|
||||
with open('input-test', 'r') as f:
|
||||
assert solution_2(f.read()) == 12, 'Not pass'
|
||||
|
||||
|
||||
with open('input-prod', 'r') as f:
|
||||
print(solution_2(f.read()))
|
Reference in New Issue
Block a user