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! 冲刺排行榜!🚀

相关推荐
青 春 记 忆6 小时前
LeetCode 350. 两个数组的交集 II|Python 解法详解
python·算法·leetcode
其实防守也摸鱼7 小时前
教育信息技术应用创新---基础软件信息赛
运维·服务器·数据库·github·copilot
智购科技自动售卖机厂家7 小时前
2026自动售货机库存热力图分析:从设备分布到补货优先级的数据可视化实践~YH
大数据·python·信息可视化
鹿鹿学长8 小时前
微软把语音转写打到 0.1 美元/小时:5 个月降价 72%,AI 音频进入地板价时代
python·自动化
weixin_440730508 小时前
使用pytest中方法控制执行步骤(test_begin.py、test_end.py,@pytest.mark.run(order=1))
开发语言·python·pytest
小柯南敲键盘8 小时前
跨境电商批量图片翻译与视频字幕翻译,就用跨马AI工具
大数据·人工智能·python·音视频
心易行者9 小时前
Python自动化测试7步落地法:用python在线运行省掉90%环境配置时间
java·开发语言·人工智能·python·log4j·ai编程
Boop_wu9 小时前
[LangGraph] 案例 2 : 支持搜索的智能代理系统
服务器·windows·python·langchain
2601_962297259 小时前
Python、Pytest、Allure、Selenium和Jenkins实现自动化测试集成实例
python·selenium·jenkins·pytest·allure
今天AI了吗9 小时前
Codex 配置自定义 AI API 完整指南:从零到一接入你的专属模型
java·人工智能·python·数据分析·embedding