◂ 8 décembre 2022 ▸
Treetop Tree House : Vue depuis les arbres façon jeu sky-skraper
020110220332333020110144320304 …
002120010112022233203323334422 …
000000000301021002423224442341 …
⋮
- code.py
################################
### MODIFIÉ LE 9 DÉCEMBRE ###
### (isStrictementPlusGrand) ###
################################
def vues(foret, i, j):
yield foret[i][j:] # droite
yield foret[i][j::-1] # gauche
yield [ foret[i2][j] for i2 in range(i, len(foret)) ] # bas
yield [ foret[i2][j] for i2 in range(i, -1, -1) ] # haut
# Pour partie 1
def isStrictementPlusGrand(valeur, autresValeurs):
return all(map(lambda x: x<valeur, autresValeurs))
def isStrictementPlusGrand_vieilleVersion(valeur, autresValeurs):
if len(autresValeurs) == 0:
return True
return valeur > max(autresValeurs)
def isVisible(foret, i, j):
for vue in vues(foret, i, j):
if isStrictementPlusGrand(vue[0], vue[1:]):
return True
return False
# Pour partie 2
def calcScoreVue(vue):
tailleBase = vue[0]
nb = 0
for i in range(1, len(vue)):
nb += 1
if vue[i] >= tailleBase:
break
return nb
def calcScore(vue, i, j):
score = 1
for vue in vues(vue, i, j):
score *= calcScoreVue(vue)
return score
f = open("input.txt", 'r')
foret = [list(map(int, line[:-1])) for line in f.readlines()]
nbVisibles = 0
scoreMax = 0
for i in range(len(foret)):
for j in range(len(foret[0])):
# Partie 1
if isVisible(foret, i, j):
nbVisibles += 1
# Partie 2
score = calcScore(foret, i, j)
if score > scoreMax:
scoreMax = score
print("Réponse partie 1:", nbVisibles)
print("Réponse partie 2:", scoreMax)