Ede's Blog

Mr. Myers

本文不涉及技术细节,仅心血来潮瞎编故事。(细节请通过外链了解)
各单位注意,本文有“尴尬兽”出没,老少妇幼请绕路。

很高兴认识Mr. Myers先生。我们两个本无交集。

前端小酒馆

我,偏居一隅的小前端,琐碎于编辑器酒馆的两三事,无非是今天擦擦那平淡无奇的模态框,明天看看哪位需要点燃一支列表,小心翼翼地为他们端去一杯圆角酒,里面放些带阴影的小饼干。大多数的客人都是礼貌:“哦,你做的下拉框好看极了,我很喜欢”。“哇,那是你新种的光标吗,一闪一闪的很可爱”。

但也会有一些喝醉了的顾客,他们嘴里叫骂着:“放大,再大点,再大点,这个字体再大点,我的眼睛看不清,你这点字体是给狗看的吗”??!!有时候,我差点忍不住发了脾气,但我说出脏话的一瞬间,我又想起我家那位老人家,岁月已经给她留了太多的痕迹,那些臃肿的代码,已经深深地烙在她的皮肤上,她的每一次刷新,每一次滑动都显得不是那么吃力。早些时候,我为她送上了新的滑动轮椅,是模拟动力的,她高兴极了,在我面前飞快地滑来滑去,像个小孩子一样。看着她轻快的样子,我又感受到我存在的意义。

“现在光景不好,前端调酒这行越来越难混了,我不能发脾气,我要珍惜现在的工作”。我自言自语,又换上了笑脸:“来,亲爱的上帝,这是你要的飞天螺旋亲*大爆炸的10086px字体”。

酒馆

快进来,找个妹子位置随便*

挑衅的文字

而后,平常的日子发生了一点点的变化。

那是一个奇妙的上午,我像往常那样在前台调着Css鸡尾酒。突然来了一个恶 Bug 霸,他人很单薄,瘦长的脸像把尖刀插在自己的脖子里,左右手分别提着两个破麻袋。

他径直向前台走来,拨开面前的酒杯,把麻袋里凌乱的东西分别倒在我的桌上:是文字!!一个个文字,我来不及细看,但很多,堆起来像两座小山,可能有好几万吧。接着,他用阴沉的话暗暗说道:”给你一天的时间,在十二点之前,给我找出不一样的地方,不然?不然我让在场的所有家伙,都保!存!不!了!“。

他当时低着头,说的话的声音很小,像蚊子一样,甚至有些沙哑,但每一句,我都听清了,就像一把小匕首,虽不显眼,却让你惊出一身冷汗。

我颤颤巍巍地说:”也许,可以让事务先生来,他特别擅长处理和记录变化,比如,我们是不是可以先记录一个删除,再记录一个新增…“。

不!”他突然提高了音量,打断了我:“这就是一坨东西,没有前因,我只要后果!!”

我顿住了,我可从来没有遇到这种情况。没有前因,却要结果。这怎么可能做到。

我有些紧张:”也许,也许,可以把他们变成树,我认识Mr.RTED先生,他,他比较擅长,嗯,怎么说,处理树这种东西。我和他很熟。是的。“我越说越小声,因为事实上,我和Mr.RTED并不熟,我只是从别人的只言片语中了解到他的存在,准确而言,除了名字,我对他一无所知。

我面前的陌生人不说话,他好像相信了我的话,又好像一点都不信,眼里飘过一些不屑。他一把拉过旁边的高脚椅,坐了上去,说道:“那好,你叫他们过来试试。“

求援 Mr RTED

我不敢迟疑,赶忙去联系Mr RTED。但他并不好联系,他属于那种,住在城堡里的贵族。我来到他的城堡,摇响门铃。是管家探的头。管家说,他家主人在睡午觉了,或者在研究什么文件啊,基因啊,净是些我没听过的东西,让我在门外等等。

我在门外等,等啊等,等啊等,天空飘过来一些云多,又飘走了,没人搭理我。不远处的溪水哗啦啦地流,冲刷着石头,冲刷着地面,没人搭理我。微风吹拂,从远方吹来,吹向远方,没人搭理我。不知不觉,我睡着了,我觉得我不懂他们的世界。又不知过了多久,管家叫醒了我,管家说:你走吧,少爷说不合适。

我伤心极了。不知道如何是好,甚至不想回去。我觉得,酒馆里的那些页面,和我,又有什么关系呢?那些酗酒的人,他们保存不了和我,又有什么关系呢?但,我又想起了我家的那位,她还在等着我,我说要给她换上新的UI衣服,帮她把插件都规划摆放整齐。“不,我不能就这么走了,可是…可是我又能怎么办呢”?

偶遇 Mr DP

我一脸惆怅地走着,不知走了多久。突然,有人在我耳边说了话:“嘿,乐乐,干嘛一副愁面苦脸的样子,是遇到了什么麻烦吗?也许我可以帮你一把”?

我抬头,啊,是高中的老同学:“是你,动态规划。我可愁死了!”我一五一十地将事情告诉了他。“你有什么办法吗?”

动态规划皱了皱眉头:“也许,我可以帮忙,毕竟我干过差不多的事情。对,就是上次,还记得吗,我们在编辑距离也解决过差不多的问题!让我试试。”

我高兴极了,像在汪洋大海中抓住了一块木板。“试试!咋们试试!”

我分别从两个口袋里掏出了几百字,那是我临走前塞进口袋里的。我们把这些字体摆成了N*N的小矩阵,将问题拆解,求重复的子问题。我们忙活着……

“成了”!我不敢相信我的眼睛,两者的差异,正整齐地罗列在我们面前,就好像我们正在经历着这些文字的生平。我有点怀疑,又赶忙确认了两遍。

“没有问题!真的成了!”我们抱在一起,又蹦又跳:“编辑器酒馆的大伙们有救了!”我甚至激动地流出了一点眼泪。我望向天空,啊,广阔的天空,啊,不!我的心情突然从山峰掉到了低谷:“不,不!不能够!”

动态规划一脸不解:“怎么,我们不是有答案了吗?”我失望地指了指天空:此时的天空已一片黯淡,远处的晚霞也逐渐消去了颜色。“太晚了,现在已经是傍晚了,按照我们的速度,我们只能找出几千字的不同,我们需要O(n^2)的时间,他,他,不会等我们这么久的。”

动态规划貌似也意识到了这点。“啊,是啊,毕竟酒馆里的文字可是有几万字。”

于是,我们又变得垂头丧气,瘫坐在石头上。

沉默了些许,周围一片死寂。我想说些什么,但又什么都说不出来。“也许我,以前好好学习一下算法,就好了。你知道吗?去年我买了本《算法导论》,已经看了十几章了…但,后来我搬家了,我懒,我没时间看….”。

”哎,我知道,自你从上大学起,就喜欢折腾那些看得见的,什么应用啊,界面啊,而那些逻辑复杂的,真正的本领,你却大大咧咧,没有耐心细看“。

我苦笑着,但突然又想起什么:”啊,应用,你说应用,我突然想起一个应用俱乐部,它很出名,里面的人也许会有办法!“

”什么俱乐部“?

”Git“!

”Git“?

”对,我曾在那见过一些魔法!那时我还小!哦,天哪!我觉得可以!“

Git俱乐部

Git俱乐部离我们很近,也很好辨认,那里的人从来不少,来自全国各地的编程者们,都喜欢来这里锻炼,交谈业界内新鲜的事情。一个大大的“G”字,发着黄色的淡光,嵌在牌匾上,而牌匾,则挂在一楼和二楼之间。

我们很快就达了那里,推开半掩的门,里面还像往常那样热闹。”Pull!Push!用力!Pull!Push!加油!“有一群人在有节奏地举着杠铃,相互鼓舞。

”你看看他们,Gay里Gay气的。“动态规划打趣到,我狠狠地瞪了他一眼,示意他不要说些不合时宜的话。

俱乐部的尽头,有个小房间,尽管房号已蒙上一些灰尘,门把手却非常崭新,证明常有人来往。门号上如是写着:”DIFF“。

我小心翼翼推门进去,里面是一间办公室,几张桌椅。”您好,请问,请问是Diff办事处吗“?

正门的先生抬头看了下我们:”哦?看看,我们好久没有看到你这样的年轻小伙子了,现在他们都喜欢请代理商,像sourcetree、gitlab这种,请问有什么事情吗?“

”我,我,遇到了一些麻烦,有人在我们的酒馆闹事,他在我们酒馆洒了两堆文字,很多“。我顿了顿:”大概有好几万,也许要十几万,他让我们把这些拾起来,分别找…找出不同,在十二点之前!“。”我们尝试了很多办法,我们也做了一些,成绩,对,我们分了几百字”。我看了看动态规划,“但是剩下的时间不够了,也许时间再多一点就好了,所以我们觉得,也许您可以…“。

那位先生哈哈大笑起来:”看来你走运了,我刚好擅长处理文本的不同。“他站了起来,整理整理衣服上的褶皱,”容我自我介绍一下,我叫Myers,你们可以叫我Mr.Myers“。

我眼睛里又重新燃起了希望:”真的吗,真的可以更快吗”?

”可以,也许快得不是很多,但应该足够了。”Myers先生看了看手上的表:“你瞧,算法的魅力,大多数应用场合,就是根据各种上下文,把N变成Log(n)。而我,刚好可以。我只需要O(Nlog(n))的时间,准确来说,是O(Nlog(m+n))。来,我陪你们走一趟“。

“真的吗?怎么做到的”?

“哦,因为我更‘贪心’,哈哈哈,我们边走边聊“。语毕,Mr.Myers便披上了外套,从抽屉里拿出了一个盒子:“瞧,这是我的一位Google朋友为我量身定做的!”

完成挑战

我们陪同myers先生回到了编辑器酒馆,恶霸还在那里,神态越发嚣张。“怎么,还没有我要的答案吗?没有的话,我就…”。

没等恶霸说完,Myers先生便前行一步,打开盒子。桌面上凌乱的文字突然像有了生命,像蛇一样,钻进盒子里。不一会儿,又从盒子里爬了出来,整齐地摆在两边。不同的是,他们身上有些地方,都被标上了颜色。

“是差异!我们成功了!”不知是谁喊了一声,酒馆里顿时一阵欢呼,紧张的气氛荡然无存。一切来得那么突然,转瞬之间。

那位恶霸兴许还想说些什么,但Myers先生抢先发问:“那么,你还有什么事情吗”?Myers先生的声音很宏厚,充满了自信。

恶霸知道,哪怕他拿出更多的字体,兴许几十万,Myers也会用那神奇的小盒子,把他收拾得服服帖帖。唯有恶狠狠地说:“你等着,我还会回来的”!便灰溜溜地走出了酒馆。

结语

“这就是我和Myers先生相识的故事”。我如是回忆到。

对面的小伙子听完,感叹道:“真的太神奇了,多炫酷的魔法”。

我微笑着:“Myers先生说,只有不认真学习的人,才觉得世间充满了魔法。”。

你看,这就是魔法的奥秘