代码越少,能力越强的“潜规则”在程序员中广为流传,而那些代码量极少的经典算法自然就是程序员们心向往之的了。
今天异步君就给大家介绍几个代码量非常少的算法,不仅经典,还让人拍案叫绝!
洗牌算法
仅需两行代码,即可高效“洗牌”
- for(int i = n - 1; i >= 0 ; i -- )
- swap(arr[i], arr[rand(0, i)]) // rand(0, i) 生成 [0, i] 之间的随机整数
短短两行代码,但是却可以实现这个功能:对于给定的 n 个元素,生成的那个排列,每一个元素都能等概率地出现在每一个位置。也就是说,每一个位置都能等概率地放置每个元素。
AI“核心”代码
这可能就是人工智障的代码
- while True:
- print(input('').replace('吗','').replace('?','!'))
这两行代码能实现什么效果呢?来看看这个示范:
问:在吗?
AI:在!
问:在学习吗?
AI:在学习!
问:真的吗?
AI:真的!
no code
最厉害的代码,是没有代码
GitHub 上有这样一个项目,基于轻量级跨平台全自动不可描述工具,采用了不可描述的高级语言语法,不用写一行代码,即可部署运行,提供检测、编译、打包、安装、运行一条龙服务。
项目地址:
https://github.com/kelseyhightower/nocode
看完代码后,不少程序员纷纷留言夸奖。
心中有码,无码胜有码。学到了,明天给业务方的代码就准备以这个框架去实现了。
传说中的无字天书
看山是山,看山不是山,看山还是山
其实,代码量越少越好其实并不是编程界的铁律。优秀的代码一般具有执行效率高、代码可读性高的优点,其次才是代码量尽可能的少。
执行效率的重要性不必多说,计算机行业发展至今始终在探寻能否更高效。而为什么要求可读性高呢?
毕竟,程序员工作中的沟通,不只是电子邮件或者面对面语言交流,代码也是沟通方式之一。用代码实现需求有时候并不是一个人能完成的,必须让代码表达自己的编码思想。
如果代码结构清晰、注释合理,看代码的人一目了然,不用频繁的询问代码疑点,不用打断你的工作。
就像老师看到字迹潦草的卷面会不由自主打低分一样,大家都在追求高效,没有人会喜欢凌乱不堪的代码。写出让别人读得懂的代码,减少阅读障碍,为整个团队创造有价值代码,是在当下大部分工作需要协作的情况下,最高效的解决办法。
有很多率性的程序员会觉得追求整洁之道是不是有“洁癖”心理,见不得代码里有累赘,有脏东西等。但他们写出的代码,确实可读性更强,代码可以发挥的价值更高。
来源:异步社区