Google Foobar

上周三Google搜索Python时,意外收到了Foobar项目的推送:
然后自己还老土的以为发现新大陆了去微博上得瑟,被同事指出来……不过因为比较好玩,所以还是做了下去。

好玩之处

我做的是 version 48(beta),foobar题目一共分5个level,level 1共1道题,level 2共2道题,以此类推,据说level 5有5道题。

根据目前搜索到的结果,绝大部分人都在达到level 5以后停下来了,因为level 5有一个题目较难最好多人协作的提示;另外据说 level 4通关以后,就会多出一个命令 recruitme,意即可以留下联系方式申请Google面试了……

界面

Linux 命令行风格,有文件名自动补全,有个简单的help命令,有个内嵌编辑器,功能还算完成。用 Google Account 登录以后,可以保存进度。

屏幕快照 2016-02-24 上午10.08.17

题目类型

输入 tags 可以查看题目类型,在请求新题目时 request algo 可以指定问题类型。

  • algo: algorithms
  • data_struct: data structures
  • low_level: low-level representation (binary representations, endianness)
  • math: math
  • crypto: security and cryptography

整体故事性

题目的背景是一个结合了小黄人(minions)并且结合了兔子(rabbit)以及疯狂博士和僵尸(zombie)等等所有动画片卖萌元素的大!杂!烩!由于每个level的题目是随机抽取,题目之间并没有多大关联性。

彩蛋

  1. 头几个level,submit的时候会有个ascii的兔子蹦来蹦去……
  2. 输入错误的命令时,会(偶发)显示一句不知所谓的谚语……

屏幕快照 2016-02-24 上午11.23.53

我的进度

我一共做了大概12道题目,成功提交了10道。大概做到第5、6题时,碰上bug,一直卡在了 level 3,于是就有了下面这个很滑稽的界面:

屏幕快照 2016-03-02 下午13.43.56

LOL……

发了几次 feedback 没人理,算了也不追求 recruit me 了,当做自我算法能力的证明好了,但由于无法继续分享出来,回头还是去做 leetcode 吧……

我已做完的题目都已经提交到了 github,没注释,没有清晰的变量命名哦😄

与别人的比对

后来跟网上能搜到的别人的解法做了对比,发现几个不同之处。

优点是,我的算法运行效率不比科班ACMer差,这可能是由于工作年份久,对工程理解要更深一点吧……缺点是,有些解法虽然快但是很山寨,自己也无法解释为什么能够run……

后记

写这篇blog的时候,打开foobar去找算法类型,结果手欠又request 了一道新题……

Do or not do ……