44 lines
942 B
Python
Executable File
44 lines
942 B
Python
Executable File
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
inputs = [
|
|
[0,2,7,0],
|
|
[0,5,10,0,11,14,13,4,11,8,8,7,1,4,12,11]
|
|
]
|
|
|
|
def solve(puzzle):
|
|
states = []
|
|
size = len(puzzle) - 1
|
|
|
|
banksstr = ''.join(map(str,puzzle))
|
|
states.append(banksstr)
|
|
|
|
while True:
|
|
maxval = max(puzzle)
|
|
maxidx = puzzle.index(maxval)
|
|
puzzle[maxidx] = 0
|
|
|
|
while maxval > 0:
|
|
maxidx = maxidx + 1
|
|
if maxidx > size:
|
|
maxidx = 0
|
|
|
|
puzzle[maxidx] = puzzle[maxidx] + 1
|
|
maxval = maxval - 1
|
|
|
|
banksstr = ''.join(map(str,puzzle))
|
|
if states.count(banksstr) == 1:
|
|
states.append(banksstr)
|
|
break
|
|
states.append(banksstr)
|
|
|
|
lastidx = len(states) - 1
|
|
lastval = states[lastidx]
|
|
firstidx = states.index(lastval)
|
|
|
|
return lastidx - firstidx
|
|
|
|
|
|
for puzzle in inputs:
|
|
print(puzzle, solve(puzzle))
|