1
0
Fork 0

Add day 6 solutions

This commit is contained in:
Pedro de Oliveira 2017-12-06 19:11:12 +00:00
parent 8a6c1f679b
commit e405118a5d
2 changed files with 83 additions and 0 deletions

38
6/6p1.py Executable file
View File

@ -0,0 +1,38 @@
#!/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
idx = 0
states = []
banks = []
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))

45
6/6p2.py Executable file
View File

@ -0,0 +1,45 @@
#!/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):
idx = 0
states = []
banks = []
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))