我试图打败 Peter Norvig,结果阴差阳错成了 Ryan Gosling
来源:dev.to — 2026-09-01
📋 概述
作者分享了一场被包装成电影级冒险的编程挑战:DEV 前端挑战赛的投稿引来一位神秘挑战者,把 Peter Norvig 的经典 Python 题(Advent of Code 2022 第 5 天:补给栈)换成了超大规模输入——约 8.6 万行、3 万条指令、累计超过五亿次箱子移动。第一版用数组拷贝耗时约 7 秒,第二版改用引用式表示降到约 2 秒,最终受《信条》"倒着来"的隐喻启发,意识到题目只要求每堆最顶上的箱子,无需算出完整终态,从而大幅提速并胜出。
🔑 核心要点
- 挑战本质是 AoC 2022 第 5 天「补给栈」问题的超大规模输入版
- 第一版用数组整体拷贝,答案正确但耗时约 7 秒,远不够快
- 第二版改用 {array,start,end,reversed} 引用式表示,仍约 2 秒,说明工作本身可更少
- 关键顿悟来自《信条》:只需每堆顶部的箱子,无需计算完整终态
- 最终用引用与倒推法完成优化,在墙钟时间上胜过 Peter Norvig 与 ThePrimeagen 的解法
💡 金句
题目从不要求完整的最终状态,它只问每堆最顶上的那个箱子。既然如此,我为什么要算出每一只箱子的去向?
👍 0
👎 0
← 返回 dev.to 首页