Add 2022 day 08
This commit is contained in:
parent
0887add6cb
commit
09be1324f2
91
2022/day08.py
Executable file
91
2022/day08.py
Executable file
@ -0,0 +1,91 @@
|
||||
#!/usr/bin/python3
|
||||
"""
|
||||
Jour 08 du défi Advent Of Code pour l'année 2022
|
||||
"""
|
||||
|
||||
def read_sample():
|
||||
"""récupère les entrées depuis le fichier texte correspondant"""
|
||||
with open('inputs/day08.txt', 'r') as f:
|
||||
sample = f.read().split('\n')
|
||||
sample = [ [int(j) for j in i] for i in sample if i != '' ]
|
||||
return sample
|
||||
|
||||
def is_visible(sample, i, j):
|
||||
vis = True
|
||||
for k in range(len(sample[i])):
|
||||
if k != j and sample[i][j] <= sample[i][k]:
|
||||
vis = False
|
||||
if k == j and vis:
|
||||
return 1
|
||||
if k == j:
|
||||
vis = True
|
||||
if k > j and sample[i][j] <= sample[i][k]:
|
||||
vis = False
|
||||
if vis:
|
||||
return 1
|
||||
vis = True
|
||||
for k in range(len(sample)):
|
||||
if k != i and sample[i][j] <= sample[k][j]:
|
||||
vis = False
|
||||
if k == i and vis:
|
||||
return 1
|
||||
if k == i:
|
||||
vis = True
|
||||
if k > i and sample[i][j] <= sample[k][j]:
|
||||
vis = False
|
||||
if vis:
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
def part1(sample):
|
||||
"""Partie 1 du défi"""
|
||||
tot = 0
|
||||
for i in range(len(sample)):
|
||||
for j in range(len(sample[0])):
|
||||
if is_visible(sample, i, j):
|
||||
tot += 1
|
||||
return tot
|
||||
|
||||
|
||||
|
||||
def scenic_score(sample, i, j):
|
||||
left, right, up, down = j, len(sample[0])-j-1, i, len(sample)-i-1
|
||||
for k in range(1, j):
|
||||
if sample[i][k] >= sample[i][j]:
|
||||
left = j-k
|
||||
|
||||
for k in range(1, len(sample[0])-j):
|
||||
if sample[i][len(sample[0])-k] >= sample[i][j]:
|
||||
right = len(sample[0])-j-k
|
||||
|
||||
for k in range(1, i):
|
||||
if sample[k][j] >= sample[i][j]:
|
||||
up = i-k
|
||||
|
||||
for k in range(1, len(sample)-i):
|
||||
if sample[len(sample)-k][j] >= sample[i][j]:
|
||||
down = len(sample)-i-k
|
||||
|
||||
return left*right*up*down
|
||||
|
||||
|
||||
|
||||
def part2(sample):
|
||||
"""Partie 2 du défi"""
|
||||
views = []
|
||||
for i in range(1, len(sample)-1): # Edges will be 0
|
||||
for j in range(1, len(sample[0])-1):
|
||||
views.append(scenic_score(sample, i, j))
|
||||
|
||||
return max(views)
|
||||
|
||||
|
||||
def main():
|
||||
"""Fonction principale"""
|
||||
sample = read_sample()
|
||||
print(f"part1: {part1(sample)}")
|
||||
print(f"part2: {part2(sample)}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Reference in New Issue
Block a user