1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
| fingerPoses = {'left':10, 'right':12}
def solution(numbers, hand):
answer = ''
for i in numbers:
answer += judgeHand(i,hand)
return answer
def judgeHand(number,hand):
if number in [1,4,7]:
return press(number,'left')
elif number in [3,6,9]:
return press(number,'right')
else:
return press(number,ChooseHand(number,hand))
def press(number,usingHand):
fingerPoses[usingHand] = number
if usingHand == 'left':
return 'L'
elif usingHand == 'right':
return 'R'
def ChooseHand(number,hand):
traget_pos = CalcPos(number)
left_pos = CalcPos(fingerPoses['left'])
right_pos = CalcPos(fingerPoses['right'])
if CalcDistance(right_pos, traget_pos) < CalcDistance(left_pos, traget_pos):
return 'right'
elif CalcDistance(left_pos, traget_pos) < CalcDistance(right_pos, traget_pos):
return 'left'
else:
return hand
def CalcPos(num):
if num == 0:
num = 11
if num%3 == 0:
x = 3
else:
x = num%3
y = (num+2)//3
pos_list = [x,y]
return pos_list
def CalcDistance(list_a, list_b):
distance = 0
for i in range(2):
distance += abs(list_b[i] - list_a[i])
return distance
|