@@ -81,27 +81,54 @@ def path_to(start, end, numpad):
81
81
# print(path_to("<", "A", RC))
82
82
# print(path_to("A", "<", RC))
83
83
# exit()
84
+ G = 26
85
+ # G = 3
86
+
87
+ # for r in R.replace("\n", "").strip():
88
+ # for r2 in R.replace("\n", "").strip():
89
+ # length(r, r2, 1)
90
+ # exit()
91
+ @cache
92
+ def length (P , char , i ):
93
+ if i == 0 : return 1
94
+ s = 0
95
+ prev = 'A'
96
+ for c in path_to (P , char , i == G ):
97
+ s += length (prev , c , i - 1 )
98
+ prev = c
99
+ # print(i, " : ", P, char, " = ", s, " path: ", path_to(P, char, i==G))
100
+ return s
84
101
85
102
def solve (code ):
103
+ path_to .cache_clear ()
104
+ length .cache_clear ()
86
105
prev = 'A'
87
106
seq = code
88
- for i in range (len (state )- 1 , - 1 , - 1 ):
89
- pad = i == len (state )- 1
90
- # print(i, pad)
91
- new_seq = ""
92
- for char in seq :
93
- new_seq += path_to (prev , char , pad )
94
- prev = char
95
- seq = new_seq
96
- print (i , len (seq ))
107
+
108
+
109
+
110
+ # for i in range(len(state)-1, -1, -1):
111
+ # pad = i == len(state)-1
112
+ # # print(i, pad)
113
+ # new_seq = ""
114
+ # for char in seq:
115
+ # new_seq += path_to(prev, char, pad)
116
+ # prev = char
117
+ # seq = new_seq
118
+ # print(i, len(seq))
97
119
# print()
98
- return int (code [:- 1 ]) * len (seq )
120
+ s = 0
121
+ for c in seq :
122
+ s += length (prev , c , G )
123
+ prev = c
124
+ # print(int(code[:-1]) * s)
125
+ return int (code [:- 1 ]) * s
99
126
100
127
print (68 * 29 , 60 * 980 , 68 * 179 , 64 * 456 , 64 * 379 )
101
128
102
129
def simul (code ):
103
130
robots = 26
104
- return min (solve (code ) for _ in range (1 ))
131
+ return min (solve (code ) for _ in range (10000 ))
105
132
106
133
# re.findall(r"\d+", line)
107
134
for line in open (0 ):
0 commit comments