fork download
  1. def init(s) :
  2. N = len(s)
  3. L = [0]*N
  4. loop = 0
  5. for i, x in enumerate(list(s)):
  6. if not x.isdigit() : continue
  7. x = int(x)
  8. loop += int((x-1)/N)
  9. L[i] = 1 + (x-1)%N
  10. return [loop,L]
  11.  
  12. def sushi(s):
  13. [loop, L] = init(s)
  14. N = len(L)
  15. A = [0] *N
  16. gap = max ([0] + [ i+L[i]-N for i in range(N) ])
  17. for i in range(N):
  18. for j in range(L[i]): A[(i+j)%N] += 1
  19. maxi = max(A)
  20. last = list(reversed(A)).index(maxi)
  21. x = N * (maxi + loop)
  22. if len(set(A))>1 : return max(x - last , x-N + gap)
  23. return x + gap
  24.  
  25. PROBLEM = [
  26. "33",
  27. "1_3",
  28. "123",
  29. "12_3",
  30. "313__",
  31. "4_35_1264_23_434",
  32. "123456789123456789",
  33. "88967472612377988186",
  34. "19898693316679441672",
  35. "93769682716711132249893" ]
  36.  
  37. for s in PROBLEM: print(sushi(s), ":",s)
Success #stdin #stdout 0.03s 9240KB
stdin
Standard input is empty
stdout
6 : 33
5 : 1_3
8 : 123
6 : 12_3
8 : 313__
60 : 4_35_1264_23_434
98 : 123456789123456789
149 : 88967472612377988186
170 : 19898693316679441672
170 : 93769682716711132249893