• 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 - 第 6 天:Julia

07 Jan 2026

Reading time ~2 minutes

「頭足類的數學看起來和一般數學沒有那麼不同。」

本文翻譯自英文原文。

Github: GCaggianese/AoC-2025/D6

  • The Julia Programming Language

題目 第 6 天:Trash Compactor

第一部分

  • 使用空格(" ")作為分隔符,將輸入解析成矩陣。
  • 對同一列中的每一欄套用運算子操作(最後一列)。
  • 將結果相加。

第二部分

第二部分要求**垂直**讀取輸入數字,而不是水平讀取。每個欄位位置都 變成一個數字位,數字從上到下堆疊形成新的數字。這裡很重要的一點是, 數字輸入中也可能有空格(例如 " 51")。垂直讀取時,縮排會改變, 因此會影響某個數字是否屬於另一個數字。

更新後的解析

  1. 保留字元位置
    • readdlm 會把空格當作分隔符,破壞空間資訊。-> 使用 readlines(),逐字元解析。
  2. 展開 header
    • 運算子列使用空格表示「重複前一個運算子」。所以 * + * + 會展開成 ****++++****+++ -> 每一欄都有自己的運算子。
  3. 垂直讀取欄位
    • 對每個欄位位置,將所有列中的數字由上到下堆疊。
    • 將它們串接成單一數字。
      • 數字網格中的空格表示「這裡沒有數字」。
  4. 分隔欄
    • 如果某欄所有格子都是 " ",表示操作之間的分隔符。
  5. 套用運算子並加總
    • 將分隔符之間的連續數字分組。
    • 套用它們的運算子。
    • 將所有結果加總得到答案。

除非另有說明,否則本網站的內容均根據 知識共享姓名標示 4.0 國際 授權協議獲得許可。

© 2026 Germán Caggianese(康青旭)