• # En faisant pivoter la forêt

    Posté par . En réponse au message Avent du Code, jour 8. Évalué à 1.

    Une version sans doute pas du tout optimisée pour compter les arbres visibles depuis les lisières, faisant pivoter le tuple des arbres.

    trees = ("30373", "25512", "65332", "33549", "35390")
    def count_visible_trees(trees):
     n = 0
     for row in trees:
     tmax = 0
     i = 0
     for tree in row:
     tree = int(tree)
     if not tree:
     continue
     if tree > tmax:
     i += 1
     tmax = tree
     n += i
     return n
    def rotate_trees(trees):
     return tuple("".join(row[i] for row in trees) for i in range(len(trees)))[::-1]
    n = count_visible_trees(trees)
    for _ in range(3):
     trees = rotate_trees(trees)
     n += count_visible_trees(trees)
    print(f"Il y a {n} arbres visibles depuis les orées cardinales du bois")

    J'imagine qu'en faiasant le même principe avec numpy, ce sera bien plus optimisé.