This commit is contained in:
parent
04bbeec472
commit
014a263cd1
9 changed files with 18 additions and 19 deletions
|
@ -2,5 +2,6 @@
|
||||||
# C0111: Missing docstring
|
# C0111: Missing docstring
|
||||||
# C0103: snake_case names (and one letter index vars)
|
# C0103: snake_case names (and one letter index vars)
|
||||||
# R0801: Similar lines in N files
|
# R0801: Similar lines in N files
|
||||||
disable=R0801,C0111,C0103
|
# C0301: line too long
|
||||||
|
disable=R0801,C0111,C0103,C0301
|
||||||
|
|
||||||
|
|
2
1/1.py
2
1/1.py
|
@ -1,5 +1,5 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
# 2021 - Advent Of Code 1
|
# 2021 - Advent Of Code 1
|
||||||
|
|
||||||
|
|
||||||
count = 0
|
count = 0
|
||||||
|
|
2
2/2.py
2
2/2.py
|
@ -6,7 +6,7 @@ import re
|
||||||
x = 0
|
x = 0
|
||||||
y = 0
|
y = 0
|
||||||
|
|
||||||
re_parse = re.compile('(forward|up|down) (\d+)')
|
re_parse = re.compile(r'(forward|up|down) (\d+)')
|
||||||
|
|
||||||
with open('input.txt') as f:
|
with open('input.txt') as f:
|
||||||
for line in f:
|
for line in f:
|
||||||
|
|
2
2/2_2.py
2
2/2_2.py
|
@ -7,7 +7,7 @@ x = 0
|
||||||
y = 0
|
y = 0
|
||||||
aim = 0
|
aim = 0
|
||||||
|
|
||||||
re_parse = re.compile('(forward|up|down) (\d+)')
|
re_parse = re.compile(r'(forward|up|down) (\d+)')
|
||||||
|
|
||||||
with open('input.txt') as f:
|
with open('input.txt') as f:
|
||||||
for line in f:
|
for line in f:
|
||||||
|
|
9
4/4.py
9
4/4.py
|
@ -41,8 +41,7 @@ class Board:
|
||||||
for line in range(GRID_SIZE):
|
for line in range(GRID_SIZE):
|
||||||
if self.marked[line][c] == 0:
|
if self.marked[line][c] == 0:
|
||||||
break
|
break
|
||||||
else:
|
col_sum += 1
|
||||||
col_sum += 1
|
|
||||||
if col_sum == GRID_SIZE:
|
if col_sum == GRID_SIZE:
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
@ -64,7 +63,7 @@ def parse_file(file):
|
||||||
line = f.readline()
|
line = f.readline()
|
||||||
while line:
|
while line:
|
||||||
board = []
|
board = []
|
||||||
for i in range(GRID_SIZE):
|
for _ in range(GRID_SIZE):
|
||||||
line = f.readline()
|
line = f.readline()
|
||||||
m = re_parse.match(line)
|
m = re_parse.match(line)
|
||||||
grid_line = m.groups()
|
grid_line = m.groups()
|
||||||
|
@ -87,10 +86,10 @@ def play_until_win(boards_list, draws):
|
||||||
return board, d
|
return board, d
|
||||||
|
|
||||||
|
|
||||||
boards, draws = parse_file('input.txt')
|
boards, calls = parse_file('input.txt')
|
||||||
print(f'number of boards: {len(boards)}')
|
print(f'number of boards: {len(boards)}')
|
||||||
|
|
||||||
(winning_board, last_num) = play_until_win(boards, draws)
|
(winning_board, last_num) = play_until_win(boards, calls)
|
||||||
print(f'last number is: {last_num}')
|
print(f'last number is: {last_num}')
|
||||||
|
|
||||||
board_score = winning_board.calc_unmarked()
|
board_score = winning_board.calc_unmarked()
|
||||||
|
|
9
4/4_2.py
9
4/4_2.py
|
@ -41,8 +41,7 @@ class Board:
|
||||||
for line in range(GRID_SIZE):
|
for line in range(GRID_SIZE):
|
||||||
if self.marked[line][c] == 0:
|
if self.marked[line][c] == 0:
|
||||||
break
|
break
|
||||||
else:
|
col_sum += 1
|
||||||
col_sum += 1
|
|
||||||
if col_sum == GRID_SIZE:
|
if col_sum == GRID_SIZE:
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
@ -64,7 +63,7 @@ def parse_file(file):
|
||||||
line = f.readline()
|
line = f.readline()
|
||||||
while line:
|
while line:
|
||||||
board = []
|
board = []
|
||||||
for i in range(GRID_SIZE):
|
for _ in range(GRID_SIZE):
|
||||||
line = f.readline()
|
line = f.readline()
|
||||||
m = re_parse.match(line)
|
m = re_parse.match(line)
|
||||||
grid_line = m.groups()
|
grid_line = m.groups()
|
||||||
|
@ -113,11 +112,11 @@ def play(boards_list, draws):
|
||||||
return winners
|
return winners
|
||||||
|
|
||||||
|
|
||||||
boards, draws = parse_file('input.txt')
|
boards, calls = parse_file('input.txt')
|
||||||
print(f'number of boards: {len(boards)}')
|
print(f'number of boards: {len(boards)}')
|
||||||
|
|
||||||
# (winning_board, last_num) = play_until_win(boards, draws)
|
# (winning_board, last_num) = play_until_win(boards, draws)
|
||||||
winning_boards = play(boards, draws)
|
winning_boards = play(boards, calls)
|
||||||
|
|
||||||
winning_board, last_num = winning_boards[-1]
|
winning_board, last_num = winning_boards[-1]
|
||||||
print(f'last number is: {last_num}')
|
print(f'last number is: {last_num}')
|
||||||
|
|
2
5/5_2.py
2
5/5_2.py
|
@ -71,7 +71,7 @@ def draw_diagonal(g, dline):
|
||||||
|
|
||||||
lx = x1
|
lx = x1
|
||||||
ly = y1
|
ly = y1
|
||||||
for i in range(abs(x2-x1)+1):
|
for _ in range(abs(x2-x1)+1):
|
||||||
g[ly][lx] += 1
|
g[ly][lx] += 1
|
||||||
lx += hdir
|
lx += hdir
|
||||||
ly += vdir
|
ly += vdir
|
||||||
|
|
4
7/7.py
4
7/7.py
|
@ -10,7 +10,7 @@ def parse_file(file):
|
||||||
return list_state
|
return list_state
|
||||||
|
|
||||||
|
|
||||||
#init_state = parse_file('input_example.txt')
|
# init_state = parse_file('input_example.txt')
|
||||||
init_state = parse_file('input.txt')
|
init_state = parse_file('input.txt')
|
||||||
nb_crabs = len(init_state)
|
nb_crabs = len(init_state)
|
||||||
print(f'Initial state with {nb_crabs} crabs: {init_state}')
|
print(f'Initial state with {nb_crabs} crabs: {init_state}')
|
||||||
|
@ -22,7 +22,7 @@ min_fuel = max_h * nb_crabs
|
||||||
min_fuel_pos = 0
|
min_fuel_pos = 0
|
||||||
for m in range(max_h):
|
for m in range(max_h):
|
||||||
list_diff = [abs(m-x) for x in init_state]
|
list_diff = [abs(m-x) for x in init_state]
|
||||||
if (sum(list_diff) < min_fuel):
|
if sum(list_diff) < min_fuel:
|
||||||
min_fuel = sum(list_diff)
|
min_fuel = sum(list_diff)
|
||||||
min_fuel_pos = m
|
min_fuel_pos = m
|
||||||
|
|
||||||
|
|
4
8/8_2.py
4
8/8_2.py
|
@ -38,7 +38,7 @@ for entry, display in zip(entries, displays):
|
||||||
# size 6 pattern that doesn't include 4, nor 1 -> 6
|
# size 6 pattern that doesn't include 4, nor 1 -> 6
|
||||||
# size 6 pattern that includes 4 and 1 -> 9
|
# size 6 pattern that includes 4 and 1 -> 9
|
||||||
# the remaining size 6 pattern -> 0
|
# the remaining size 6 pattern -> 0
|
||||||
size_six = set([x for x in words if len(x) == 6])
|
size_six = {x for x in words if len(x) == 6}
|
||||||
for s in size_six:
|
for s in size_six:
|
||||||
if identified_numbers[1].issubset(s) and identified_numbers[4].issubset(s):
|
if identified_numbers[1].issubset(s) and identified_numbers[4].issubset(s):
|
||||||
identified_numbers[9] = s
|
identified_numbers[9] = s
|
||||||
|
@ -54,7 +54,7 @@ for entry, display in zip(entries, displays):
|
||||||
# size 5 pattern that includes 7 -> 3
|
# size 5 pattern that includes 7 -> 3
|
||||||
# size 5 pattern that only missed one element to be a 9 pattern -> 5
|
# size 5 pattern that only missed one element to be a 9 pattern -> 5
|
||||||
# the remaining size 5 pattern -> 2
|
# the remaining size 5 pattern -> 2
|
||||||
size_five = set([x for x in words if len(x) == 5])
|
size_five = {x for x in words if len(x) == 5}
|
||||||
for s in size_five:
|
for s in size_five:
|
||||||
if identified_numbers[7].issubset(s):
|
if identified_numbers[7].issubset(s):
|
||||||
identified_numbers[3] = s
|
identified_numbers[3] = s
|
||||||
|
|
Loading…
Reference in a new issue