Crane
Table_bottom

Search
Loading
Table_bottom

分类
Table_bottom

随机文章
Table_bottom

标签云
Table_bottom

最新评论
Table_bottom

链接
Table_bottom

功能
Table_bottom

那些优雅的代码

在Quora上看到一个问题,你见到的最优雅的代码是什么(http://www.quora.com/Elegant-Code/What-is-the-most-elegant-line-of-code-youve-seen),觉得挺有意思的,整理一下。

注:以下代码可能是各种五花八门的语言,但是关键不在语法,在语义,只要能明白意思就行了。

function gcd(a, b) { return b ? gcd(b, a % b) : a; }
while(a%=b^=a^=b^=a);
辗转相除法计算最大公约数,辗转相除法见这里(http://en.wikipedia.org/wiki/Binary_GCD_algorithm),wikipedia上更有各种版本的实现,递归的,效率高的。

main() {
  char c = getchar();
  (c == '+' || c == '-' || c == '*' || c == '/') ? main(), main() : 0;
  putchar(c);
}
前缀表达式转换成后缀表达式,概念参见这里这里

A=A+B-(B=A)
交换A和B的值,C语言才需要这样的技巧,python最直白,a, b = b, a


return (!(x & (x-1)));
判断x是否为2的幂数,位运算的技巧

for( c = 0; v; c++) v &= (v - 1);
计算hamming weight(wiki),二进制表示中有多少个1。之前也有一篇文章说这个,这里

while(*s++ = *t++);
拷贝字符串

:(){:|:&};:
bash 炸弹,定义了一个函数,名字就是冒号,这个函数会不断的fork自己,导致资源用完,系统挂掉

while( x --> 0){
//...
}
这个有趣,x --> 0,有种x趋近于0的错觉

float FastInvSqrt(float x) {
  float xhalf = 0.5f * x;
  int i = *(int*)&x;          // evil floating point bit level hacking
  i = 0x5f3759df - (i >> 1);  // what the fuck?
  x = *(float*)&i;
  x = x*(1.5f-(xhalf*x*x));
  return x;
}
有名的quake源码中的计算根号分之一的快速算法,原理是牛顿迭代法,神奇的是what the fuck那一行,选用了一个异常接近正常答案的值,使得只需要一次迭代就得到了答案。wiki有解释,http://en.wikipedia.org/wiki/Fast_inverse_square_root

def r(a):i=a.find('0');~i or exit(a);[min[(i-j)%9*(i/9^j/9)*(i/27^j/27|i%9/3^j%9/3)or a[j]for
j in range(81)]or r(a[:i]+m+a[i+1:])for m in'%d'%5**18]
from sys import*;r(argv[1])
一行代码解数读,递归算法

这个python要写得再pythonic一些才优雅。

看了一会,有些代码就是trick并不优雅,还是就到这里吧!
 

计算两个日期的差值

记得今年早些时候看到百度员工出的那个视频,中间有一幕女主角在计算自己自出生以来已经生活了多少天,只见她熟练的打开excel,在A1中输入生日,在B1中输入当天日期,在C1中输入=B1-A1,立刻得到自己来到这个世上的时间,眼看过去了这么多天,自己当初的梦想实现了多少呢,……,剧情自此展开,不再追踪。

我看到这个的时候,想着cli控们有没有什么方法能实现同样的功能呢,无所不能的shell(我记得有人说过shell是完备的)啊,需要你的力量。

想了一下,使用了coreutils中的date命令,写成了如下shell脚本:

 

继续阅读

python的一个彩蛋

今天才知道python居然还有这样一个有意思的彩蛋,使用下面这一句python代码就可以看到。


import this

执行就可以看到一段关于python理念(禅?)的介绍。

 

继续阅读