#!/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): total = 0 states = [] size = len(puzzle) - 1 banksstr = ''.join(map(str,puzzle)) states.append(banksstr) while states.count(banksstr) == 1: 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)) states.append(banksstr) total = total + 1 return total for puzzle in inputs: print(puzzle, solve(puzzle))