Retourner au contenu associé (journal : Advent of Code 2025)
Posté par guitou le 07 décembre 2025 à 12:42. En réponse au journal Advent of Code 2025. Évalué à 2.
Rien de bien complique ajd, mais j'ai quand meme perdu un peu de temps sur la premiere partie, faute de tenir compte du fait qu'un splitter devait voir passer un beam pour etre active... Ce qui donne
splitter
beam
from typing import Iterable, NamedTuple class Position(NamedTuple): x: int y: int class Manifolder: def __init__(self, data: list[str]) -> None: self.grid = data self.height = len(self.grid) self.width = len(self.grid[0]) def is_divider(self, pos: Position) -> bool: return self.grid[pos.y][pos.x] == '^' def divisions(self) -> Iterable[int]: beams = {self.grid[0].index('S')} for y in range(2, self.height, 2): splitters = [p for p in map(lambda x: Position(x, y), range(self.width)) if self.is_divider(p) and p.x in beams] beams |= {p.x-1 for p in splitters} beams |= {p.x+1 for p in splitters} beams -= {p.x for p in splitters} yield len(splitters) def timelines(self) -> int: timelines = { i: int(self.grid[0][i] == 'S') for i in range(self.width)} for y in range(2, self.height, 2): splitters = [p for p in map(lambda x: Position(x, y), range(self.width)) if self.is_divider(p) and p.x in timelines.keys()] for s in splitters: v = timelines[s.x] timelines[s.x] = 0 timelines[s.x-1] += v timelines[s.x+1] += v return sum(timelines.values()) def exo1(data: list[str]) -> int: return sum(Manifolder(data).divisions()) def exo2(data: list[str]) -> int: return Manifolder(data).timelines()
++ Gi)
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
# Jour 7
Posté par guitou . En réponse au journal Advent of Code 2025. Évalué à 2.
Rien de bien complique ajd, mais j'ai quand meme perdu un peu de temps sur la premiere partie, faute de tenir compte du fait qu'un
splitterdevait voir passer unbeampour etre active... Ce qui donne++
Gi)