1
0
Fork 0
advent2017/6/6p2.py

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))