Retourner au contenu associé (journal : Advent of Code 2025)
Posté par guitou le 06 décembre 2025 à 16:55. En réponse au journal Advent of Code 2025. Évalué à 2.
Hello.
Assez d'accord avec les jugements precedents: pas de difficulte ajd, mais une transformation prealable des donnees pour la partie 2 un peu delicate (la seule fonction a ne pas faire 1 ou 2 lignes).
from __future__ import annotations from functools import reduce import operator import re from typing import Iterable RE_OP = re.compile(r'([+*]) +') class Operation: operations = { '+': sum, '*': lambda l: reduce(operator.mul, l) } def __init__(self, operator: str, operands: Iterable[int]): self.operator = operator self.operands = operands @classmethod def from_data_1(cls, data: tuple[str]) -> Operation: return cls(data[-1], map(int, data[:-1])) def operate(self) -> int: return self.operations[self.operator](self.operands) def parse_input_1(data: str) -> Iterable[tuple[str]]: return zip(*[line.split() for line in data.strip('\n').split('\n')]) def parse_input_2(data: str): def to_numbers(lines: list[str]) -> Iterable[int]: for i in range(len(lines[0])): if n := ''.join([l[i] for l in lines]).replace(' ', ''): yield int(n) lines = data.strip('\n').split('\n') ops = lines[-1] lines = lines[:-1] for m in RE_OP.finditer(ops): yield Operation(m.group(1), to_numbers(list(map(lambda s: s[::-1], map(lambda l: l[m.start():m.end()][::-1], lines))))) def exo1(data: str) -> int: operations = map(Operation.from_data_1, parse_input_1(data)) return sum(map(lambda o: o.operate(), operations)) def exo2(data: str) -> int: operations = parse_input_2(data) return sum(map(lambda o: o.operate(), operations))
++ Gi)
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
[^] # Re: Jour 6
Posté par guitou . En réponse au journal Advent of Code 2025. Évalué à 2.
Hello.
Assez d'accord avec les jugements precedents: pas de difficulte ajd, mais une transformation prealable des donnees pour la partie 2 un peu delicate (la seule fonction a ne pas faire 1 ou 2 lignes).
++
Gi)