代码洪武:程序员算法征服元末

第1章 算法算箭道,我救了朱元璋

代码洪武:程序员算法征服元末 古贤颐生录 2026-01-17 11:41:00 幻想言情
林默最后看到的,是屏幕上滚动的“Error 500: Internal Server Error”。

凌晨三点,写字楼的灯光白得刺眼。

他试图抬手去按Ctrl+S,指尖却只碰到一片虚空。

心脏像被一只无形的手攥紧,然后——骤停。

再睁眼时,没有天花板,没有显示器。

有的是铺天盖地的血腥味。

鼻腔里灌满了铁锈、泥土和马粪烧焦的混合气体,耳朵被震耳欲聋的喊杀声、金属碰撞声和一种尖锐的破空声填满。

那声音……是箭矢。

“发什么呆!

找死吗?!”

一个粗粝的嗓音炸响在耳边,紧接着一股巨力撞上林默的肩膀。

他踉跄着向前扑倒,下巴重重磕在硬土上,牙齿震得发麻。

趴在地上,他看见了。

黑压压的、穿着皮甲或破烂布衣的古代士兵,如同两股浑浊的潮水,狠狠撞在一起。

刀光闪过,血花迸溅。

更远处,一面残破的“元”字大旗下,骑着马的骑兵正挥舞弯刀,如同收割麦子般砍杀着另一群衣衫褴褛、却死战不退的汉子。

那些被追杀的人,手里拿着锄头、木棍,甚至还有菜刀。

“我……穿、穿越了?”

林默的大脑CPU差点当场烧了。

但多年处理线上生产环境紧急故障的职业本能,强行压下了恐慌。

数据,需要数据!

扫描环境:· 地点:山谷地带,三面环土坡,一面是开阔地。

· 敌我识别:穿统一皮甲、阵型相对严整的是“元兵”;衣衫杂乱、被分割包围的是“义军”。

· 威胁评估:最大威胁来自元兵阵中那一排弓箭手,正在张弓搭箭。

而自己,好死不死,正站在双方交战线的边缘,更靠近义军溃散的方向。

就在他快速分析时,元兵阵中一声令下。

“放箭!”

嗡——那不是一支箭的声音,是数十支、上百支箭矢同时离弦的蜂鸣。

它们划破空气,带着死亡的尖啸,朝着溃散的义军——也朝着林默所在的方向——覆盖而来。

时间仿佛被拉长。

林默眼睁睁看着那些黑点在空中迅速放大,轨迹交错,像一张死亡的大网。

他的身体僵住了,但大脑却像超频的服务器,疯狂运转:弹道分析、落点预测、生存概率计算……等等。

背包!

他背上那个跟他一起加了三年的班、陪他穿越了不知多少时空的黑色程序员双肩包,此时正沉甸甸地压着。

林默几乎是连滚带爬地转身,手指颤抖着扯开拉链。

熟悉的隔层,熟悉的贴纸——“Git is Love”、“Hello World”、“这个需求做不了”。

以及,那台贴满了各种技术大会标签、外壳有些磨损的笔记本电脑。

电量:87%。

“有电!”

林默的心脏狂跳起来,比刚才面对箭雨时跳得还猛。

他猛地掀开屏幕,按下电源键。

熟悉的启动LOGO亮起,那微弱的光,在这片血腥的古代战场上,显得如此诡异又如此……救命。

他没有Wi-Fi,没有4G,但他有本地文件。

手指在触摸板上滑动,精准地打开一个名为“Tools”的文件夹,双击一个叫 “arrow_trajectory.py” 的文件。

这是他之前出于兴趣,用Python写的一个简易抛物线预测脚本,原本是用来模拟游戏里投掷物轨迹的。

脚本界面弹出,需要输入参数。

林默抬起头,强迫自己冷静。

箭雨还在飞,但还有大概两秒落地。

他的眼睛成了最原始的传感器:· 风速:凭脸上拂过的气流,估算约 3-4米/秒,东南向。

输入。

· 箭矢初速:看元兵用的弓,不是重弩,估计 40-50米/秒。

取中值45,输入。

· 发射仰角:目测约 30度。

输入。

· 自身与目标区域坐标:快速估算相对位置,输入近似值。

敲下回车。

屏幕上,黑色的命令行窗口开始疯狂刷出数据。

下一秒,一个简陋的图形窗口弹出。

以林默估算的自身位置为中心,一个半透明的红色区域在地图上蔓延开来——那是根据输入参数计算出的,箭矢最可能覆盖的“高危区”。

而在这片刺目的红色边缘,靠近东南方向土坡的位置,有一小块顽固的绿色区域。

那是算法认为的,“箭矢落点概率低于5%”的安全区。

方位:东南偏东,约37度角。

距离:约十五步。

“就是那里!”

林默猛地抬头,目光瞬间锁定了绿色区域指向的位置——一片长着几丛低矮灌木的土坡凹陷处。

同时,他的眼角余光也瞥见了离他不远、正被几名亲兵拖着向后撤的一个年轻汉子。

那汉子满脸血污,相貌奇伟,眉宇间有股子草莽英气,正声嘶力竭地指挥着零散的抵抗,但眼看就要被溃兵冲散。

朱……朱元璋?!

林默脑子里“轰”的一声。

元末,战场,被元兵追杀的义军,长相奇伟的年轻头领……所有线索瞬间串联成一条冰冷的逻辑链。

他没时间验证了。

箭矢的尖啸声己到头顶。

林默爆发出平生最快的速度,像一道离弦的箭(虽然方向完全相反),朝着那个年轻汉子冲去。

他撞开一个挡路的溃兵,在对方惊怒的骂声中,一把死死拽住了那汉子的胳膊。

“你干什——!”

汉子又惊又怒,回头瞪他。

“往东南37度跑!

现在!

那里是箭雨盲区!”

林默用尽力气嘶吼,声音都变了调,同时另一只手指向那片绿色区域对应的土坡。

“疯子!

胡言乱语什么‘多、多少度’?!”

汉子身边的亲兵就要拔刀。

但就在这一瞬间——噗!

噗噗噗!

第一波箭矢落地了。

如同死神的镰刀,狠狠砸进人群。

惨叫声瞬间炸开。

一支箭擦着那汉子的头盔飞过,带走几缕头发;另一支箭射穿了刚才挡在林默面前的溃兵的大腿,鲜血喷溅。

亲眼看到箭矢几乎贴着脸飞过,和只听声音完全是两种体验。

那满脸血污的汉子瞳孔骤缩,再看向林默时,眼中的惊怒瞬间被一股狠厉的决断取代。

他不知道“37度”是什么,但他看到了林默指的方向,也看到了那个方向……暂时没有箭矢落下。

“信他一次!”

汉子猛地吼道,反手拉住林默,“跟我来!”

一群人在箭雨间歇的宝贵几秒内,连滚带爬地扑向东南方的土坡凹陷处。

林默几乎是被人架着跑的,怀里还死死抱着他那台发光的笔记本。

他们刚扑进灌木丛后的凹陷——第二波、第三波箭矢如同暴雨般倾泻在他们刚才站立及周围的所有区域。

泥土被炸开,尸体被钉穿,哀嚎遍野。

而他们躲藏的这块凹陷,就像怒海中的一块礁石,奇迹般地只有零星的几支箭歪歪斜斜地扎在边缘。

死里逃生。

土坡后,喘息声如同破旧的风箱。

朱元璋(林默现在几乎能肯定了)靠在土壁上,胸膛剧烈起伏,血污下的眼睛却锐利如鹰,死死盯住了被亲兵护在中间、同样狼狈不堪的林默。

或者说,盯住了林默怀里那个还在幽幽发光、屏幕上满是古怪符号和图形的“铁盒子”。

“你……”朱元璋的声音沙哑,带着劫后余生的悸动和浓浓的惊疑,“究竟是……何人?

方才,你怎知……箭往哪射?”

林默喘着粗气,感受着心脏在胸腔里疯狂擂鼓。

他低头看了一眼屏幕,抛物线预测的界面还没关,那个绿色的安全区在血腥的战场上显得如此讽刺。

“我……”他张了张嘴,干涩的喉咙发不出完整的声音。

怎么解释?

说我是程序员,这是算法?

说你们都是我历史书里的NPC?

他最终只是拍了拍笔记本电脑冰冷的外壳,用尽可能平静(但依然带着颤音)的语气,吐出了那句注定要让这个时代的人困惑许久的话:“不是我知道。”

“是……算法知道。”

朱元璋的眉头紧紧皱起,显然完全没听懂这个词。

但他看了看周围安然无恙的自己和几个核心亲兵,又看了看凹陷外那片被箭矢钉满的死亡地带,眼中的探究和震惊几乎要溢出来。

就在这时,林默怀里的笔记本屏幕忽然自动切换了界面。

一个被他设为开机自启动的Excel文件弹了出来——《元末势力分布图(简易版).xlsx》。

这是林默穿越前正在整理的一个兴趣文档,里面用极其简化的方式标记了元末几大势力的核心控制区。

此刻,文件中央,一个标记为“濠州”的单元格正在微微闪烁,而旁边一个不起眼的角落,电池图标旁的数值,己经从 87%,悄然掉到了 80%。

电量,在流逝。

林默盯着那个数字,又抬头看了看眼前这个满脸血污、眼神如狼的未来洪武大帝,再听听凹陷外并未停歇、反而越来越近的喊杀声和马蹄声。

一个无比清晰、无比沉重的念头,砸进了他的脑海:这破地方……没Wi-Fi,没运维,没备份。

而且看起来,不写点能跑的“代码”……是真会死人的。

(第一章完)下章预告粮草只够三天?

账目一团乱麻?

林默默默打开了Excel:“别吵,让我建个表。”

当“=”号在这个时空第一次被用于管理军队粮仓时,朱元璋的天下,从此进入了“数据驱动”的时代。

---