#!/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()