Add solution for day 4
This commit is contained in:
1 parent
a9c55959c2
commit
67b4bcbe21
3 files changed
+738
No files matched your search
Executable
+63
@@ -0,0 +1,63 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import sys
|
||||
|
||||
def printb(board):
|
||||
for line in board:
|
||||
print(str(line[0]) + ' ' + str(line[1]) + ' ' + str(line[2]) + ' ' + str(line[3]) + ' ' + str(line[4]))
|
||||
print("\n")
|
||||
|
||||
def check_win(board):
|
||||
for l in board:
|
||||
if l == ['x' ,'x', 'x', 'x', 'x']:
|
||||
return True
|
||||
hit = 0
|
||||
for i in range(len(board)):
|
||||
for l in board:
|
||||
if l[i] == 'x':
|
||||
hit += 1
|
||||
if hit == len(board):
|
||||
return True
|
||||
hit = 0
|
||||
return False
|
||||
|
||||
def play(boards):
|
||||
for num in nums:
|
||||
boards = [mark_board(board, num) for board in boards]
|
||||
for board in boards:
|
||||
if check_win(board):
|
||||
return num * sum([sum([i for i in l if i != 'x']) for l in board])
|
||||
|
||||
def play2(boards):
|
||||
for num in nums:
|
||||
boards = [mark_board(board, num) for board in boards]
|
||||
if sum([1 if check_win(board) else 0 for board in boards]) == (len(boards) - 1):
|
||||
for i in range(len(boards)):
|
||||
if not check_win(boards[i]):
|
||||
last = i
|
||||
if sum([1 if check_win(board) else 0 for board in boards]) == (len(boards)):
|
||||
if check_win(boards[last]):
|
||||
board = boards[last]
|
||||
return num * sum([sum([i for i in l if i != 'x']) for l in board])
|
||||
|
||||
|
||||
def mark_board(board, num):
|
||||
return [['x' if col == num else col for col in li] for li in board]
|
||||
|
||||
if __name__ == '__main__':
|
||||
lines = open(sys.argv[1]).read().split('\n\n') # or split \n\n or sth similar
|
||||
|
||||
nums = [int(i) for i in lines[0].split(',')]
|
||||
|
||||
boards = [[[int(n) for n in l.split(' ') if n != ''] for l in li.split('\n')] for li in lines[1:]]
|
||||
|
||||
boards = [[l for l in b if l != []] for b in boards]
|
||||
|
||||
# challenge 1
|
||||
res1 = str(play(boards))
|
||||
print("challenge 1:" + res1 + "\n")
|
||||
|
||||
# challenge 2
|
||||
res2 = str(play2(boards))
|
||||
print("challenge 2:" + res2 + "\n")
|
||||
|
||||
Reference in new issue
Block a user