Advent of Code 2025 挑战全手写代码 Day 1 - 秘密入口

🎄Advent of Code 2025 挑战全手写代码 Day 1 - 秘密入口


终于等到 AoC 2025 开赛啦!🎉 第一天题目 Secret Entrance 难度简单(一星⭐),主要考察对 循环结构(Circular Buffer) 的理解和模运算的运用。

📖 题目速览

题目地址:adventofcode.com/2025/day/1

我们在北极秘密入口遇到一个保险箱转盘,刻度 0-99,初始位置 50。 输入是一串旋转指令(如 L68, R48)。

  • Part 1 :统计每次旋转结束时 ,指针停在 0 的次数。
  • Part 2 :统计旋转过程中 (包含结束点)指针指向 0 的总次数。

💡 解题思路 (Python 🐍)

  1. 巧用取模 % : 转盘是环形的,Python 的模运算 % 就能搞定
    • 右转:(current + amount) % 100
    • 左转:(current - amount) % 100
    • Python 的 % 能完美处理负数(例如 -1 % 100 = 99),直接省去了繁琐的边界判断,代码瞬间清爽!
python 复制代码
current: int = 50
out: int = 0

for direction, amount in self.sequence:
    match direction:
        case "R":
            current = (current + amount) % 100
        case "L":
            current = (current - amount) % 100

    if not current:
        out += 1
  1. Part 2 的优化陷阱 : 题目提示可能会有像 R1000 这种大旋转。如果一步步模拟(for loop),效率会很低。
    • 数学解法 :使用 divmod(amount, 100)
    • 整圈 :商 (div) 表示转了几整圈,每圈必然经过一次 0。
    • 残余步数 :余数 (mod) 是剩下的位移。只需判断这最后一段位移是否跨越了 0 界限(R 跨越 99->0,L 跨越 0->99)。
python 复制代码
current: int = 50
out: int = 0

for direction, amount in self.sequence:
    div, mod = divmod(amount, 100)
    out += div

    match direction:
        case "R":
            if current + mod >= 100:
                out += 1

            current = (current + mod) % 100
        case "L":
            if current > 0 and mod >= current:
                out += 1

            current = (current - mod) % 100

return out

✨ 代码复盘 最终代码将"计算经过次数"和"更新位置"解耦,逻辑非常清晰。相比于暴力模拟,数学计算法不仅快,而且更能体现算法思维。

完整代码:访问 github

Happy Coding! 冲刺排行榜!🚀

相关推荐
阿郎_20111 小时前
python自动化脚本-下载小说
python·selenium·网络爬虫
ERP老兵-冷溪虎山1 小时前
Python/JS/Go/Java同步学习(第五十篇半)四语言“path路径详解“对照表: 看完这篇定位文件就通透了(附源码/截图/参数表/避坑指南)
java·javascript·python·golang·中医编程·编程四语言同步学·path路径详解
Data_agent1 小时前
1688获得1688公司档案信息API,python请求示例
开发语言·数据库·python
无敌暴龙兽2 小时前
Github 开源项目提交PR(Pull Request)流程指南
github
AutoMQ2 小时前
如何选择合适的 Diskless Kafka
后端·架构·github
vx_vxbs663 小时前
【SSM高校普法系统】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
android·java·python·mysql·小程序·php·idea
田里的水稻3 小时前
Python_编程中代码注释相关格式 PEP8 — Python 官方代码风格指南
开发语言·python
摇滚侠3 小时前
零基础小白自学Git_Github教程,GitHubDeskTop安装,笔记10
笔记·git·github
摇滚侠3 小时前
零基础小白自学 Git_Github 教程,GitHub 是如何工作的,笔记08
笔记·git·github