码迷,mamicode.com
首页 > 其他好文 > 详细

编程:从前有一个傻呆程序员,老婆交给他一项任务,他办了四次才满意

时间:2018-12-30 02:32:09      阅读:284      评论:0      收藏:0      [点我收藏+]

标签:abd   思维   距离   apt   png   解决   一起   src   box   

从前有一个傻呆程序员,他老婆交给他一项任务:“去买3斤橙子,买最大最甜最便宜的脐橙”。

 

普通人买水果直接去店里就买了,但程序员不同。程序员心道:“大,好分辨,甜,不好分辩。水果店老板肯定不让每个橙子都试吃一下的”。于是问Siri,Siri说:“一般橙子屁股上有脐圈的,是母橙,母橙比较甜”。就这样通过调研,甜度辨别的技术难题解决了。

 

接下来程序员开始策划去哪里买。经Siri调查,小区里共有4家水果店。程序员心道:“这4家店每家都可能卖橙子,也都有可能是最便宜的。如果冒然去了A店买,而C店才是最便宜的,就失去了做事的严谨性,回来可能挨骂。严谨的做法应该是货比三家,每家都看看并把价格记下来,然后选一家价格最低的购买。但是,应该先去哪家看价格呢?理论上应该先去离家的店,最后去离家最远的店。”

 

技术分享图片

 

经大致估算,4家店按离家距离排序,依次是ABCD。程序员应该先去A店。但估算毕竟是不严谨的,于是程序员请出百度地图,在地图上一一标上家和4家店的GPS坐标,再以水果店的GPS坐标分别计算离家的距离。最后得出结论,顺序依次是CABD(因为C店是直接距离,店距离排序逻辑略)。

 

技术分享图片

 

于是程序员去C店,得到一个结果,然后又分别去ABD各店,最终得出A店返回无穷大。A店可能没有脐橙或有效货存不足。其它3家店,B店最便宜。程序员决定去B店购买。此时程序员老婆打来了电话,说“叫你买个橙子怎么去这么半天!”,程序员道:“目标已经锁定,即将完成任务”。

 

程序员到了B店,不敢耽搁,马上开始了选脐橙的逻辑:

 

技术分享图片

 

半小时后,程序员拎着水果回到了家。老婆骂他:“怎么买水果比种果树都慢!”程序员开始反思,这个买水果的流程是不是还有很多优化的空间?

 

第二次买橙子时,净化数据源与冒泡排序这两个循环,程序员将它们合在了一起:

 

技术分享图片

 

由于减少了时间复杂度,并且略去了第一次技术调研、系统架构的时间,这一次只用了20分钟,但老婆大人还是嫌慢:“别人买水果几分种,你买水果20分钟!”

 

第三次买水果,程序员不再使用单只手的冒泡排序,而使用两只手的快速排序法,左手向右比较,右手向左比较(算法过于复杂,不作伪码展示了)。这次用了15分钟,但老婆大人仍然不满意。

 

第四次买水果,程序员优化了进店询价逻辑。前几次买水果,程序员要了老板的微信,这次出发前先给4家老板群发了一条微信息:“老板,今天脐橙还有没有,多少钱一斤?”

 

这次用多线程问询,替代了之前的单线程走路问询,只用了5分钟就完成了任务。老婆满意了。

 

程序员感叹道:“程序优化果然是无止境啊!但貌似目前的逻辑还可以再优化,譬如历次购买水果第一优先选择基本都是B店,下次可以直接去B店。在去的路上向4家老板发微信询价,大概率答案还是B店。如果不是,进店前还有时间调整路线,这是执行与问询的多线程。”

 

你能从这个程序员买橙子的故事中,看出编程难在哪里吗?

 

2018年12月29日

 

本文首发于微信公众号“艺述思维”:从前有一个傻呆程序员,老婆交给他一项任务,他办了四次才满意

编程:从前有一个傻呆程序员,老婆交给他一项任务,他办了四次才满意

标签:abd   思维   距离   apt   png   解决   一起   src   box   

原文地址:https://www.cnblogs.com/sban/p/10198086.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!