• Home
  • About
    • 康青旭 - Germán Caggianese photo

      康青旭 - Germán Caggianese

      Refactoring entropy in my Mind

    • Learn More
    • Email
    • Instagram
    • Github
    • Codeberg   Codeberg
  • All Posts
  • Projects
  • Areas
  • Resources

Advent of Code 2025 - Dia 7 en Zig

07 Jan 2026

Reading time ~4 minutes

“De repente, te encontrás en una habitación desconocida. La habitación no tiene puertas.”

Traducción de la publicación original en inglés.

Github: GCaggianese/AoC-2025/D7

  • Zig Programming language

Puzzle Dia 7: Laboratories

Parte uno

Procesar de arriba hacia abajo. Para cada celda a_{i,j}:

  • . -> no hacer nada
  • S o | -> mirar $a_{i+1,j}$ (celda inferior):
    • si es . -> cambiarla a |
    • si es ^ -> $a_{i+1,j-1}$ y $a_{i+1,j+1}$ pasan a ser |
      • Importante: marcar ^ como usado

Contar cuántos splitters ^ fueron marcados como usados.

Parte dos

Contar todas las líneas temporales posibles cuando los splits ^ van en una dirección por vez.

Para cada celda a_{i,j}:

  • col >= cols -> devolver 1 (camino completado)
  • row >= rows -> devolver 1 (llegó al fondo)
  • ^ en $a_{r,col}$ -> recursión:
    • countPaths(r+1, col-1) + countPaths(r+1, col+1)
    • si col == 0 -> la rama izquierda devuelve 1 (fuera de grilla = completado)

Ejemplo

.S.        .S.   .S.
...   →    .|.   .|.
.^.        |^.   .^|
...        |..   ..|
..^        |.^   .|^

Camino izquierdo: 1 (llega al fondo) Camino derecho: toca ^ en (4,2) -> se divide de nuevo -> 2 Total: 3 líneas temporales

Optimización

Memoización con HashMap(State, usize) donde State = {row, col}. Evita recalcular caminos desde la misma posición.

A menos que se indique lo contrario, el contenido del sitio web está bajo la licencia Creative Commons Atribución/Reconocimiento 4.0 Internacional.

© 2026 Germán Caggianese(康青旭)