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 登录以后,可以保存进度。
题目类型
输入 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的题目是随机抽取,题目之间并没有多大关联性。
彩蛋
- 头几个level,submit的时候会有个ascii的兔子蹦来蹦去……
- 输入错误的命令时,会(偶发)显示一句不知所谓的谚语……
我的进度
我一共做了大概12道题目,成功提交了10道。大概做到第5、6题时,碰上bug,一直卡在了 level 3,于是就有了下面这个很滑稽的界面:
LOL……
发了几次 feedback 没人理,算了也不追求 recruit me 了,当做自我算法能力的证明好了,但由于无法继续分享出来,回头还是去做 leetcode 吧……
我已做完的题目都已经提交到了 github,没注释,没有清晰的变量命名哦😄
与别人的比对
后来跟网上能搜到的别人的解法做了对比,发现几个不同之处。
优点是,我的算法运行效率不比科班ACMer差,这可能是由于工作年份久,对工程理解要更深一点吧……缺点是,有些解法虽然快但是很山寨,自己也无法解释为什么能够run……
后记
写这篇blog的时候,打开foobar去找算法类型,结果手欠又request 了一道新题……
Do or not do ……