大家都写过或者见过哪些高端优雅的代码?

2015-04-01 13:55:50 +08:00
 zjlsxulei

先分享一个,应该很多人都看过了。前几天看编程之美,1.2的象棋问题中,题目大概是这样的,在将帅各自的3x3的格子中,将帅不能照面,问有哪些坐标可能。要求代码中只能使用一个变量。一种解法是:

BYTE i = 81;
while( i-- ){
    if( i / 9 % 3 == i % 9 % 3)
        continue;
    printf("将 : %d , 帅 : %d \n", i / 9 +1, i % 9 +1 );
}

这段代码的巧妙之处就是用了一个变量i的取整和取余来模拟了一个9x9的循环嵌套,厉害!

那么问题来了,各位平时或者在项目中都写过,看见过哪些高端优雅的代码呢?分享出来小弟膜拜膜拜!

5618 次点击
所在节点    程序员
36 条回复
billwsy
2015-04-01 14:06:09 +08:00
a & -a 等等…
sciooga
2015-04-01 14:15:11 +08:00
两个课堂作业:

1.输入成绩 按高分到低分排序 并统计及格不及格人数:


#include <iostream>
using namespace std;
int fun(int s[],int n,int *x)
{
int i,k;
for(i=0;s[i];n+=s[i++]>60,*x=i-n);
for (k=i; k; k--)if (s[k-1]<s[k]&&(s[k-1]+=s[k]-=s[k-1]=s[k]-s[k-1]))k=i;
return n;
}
int main(void)
{
int *t = new int[1],a(0),b(0),tt(0);
for(;t[tt-1]&&cout<<"请输入第"<<tt+1<<"位学生的成绩,输入0结束:";cin>>t[tt++]);
cout<<fun(t, a, &b)<<"\t<--及格人数 不及格人数-->\t"<<b<<endl;
for (; *t;cout<<*t<<"\t",t++,tt--);
}


2.除 * newnode 外使用一个指针插入数据进链表,数据以小至大增加。


struct node * insert(node *head ,int x){
struct node * newnode;
newnode = new node;
if (head == NULL){
newnode -> data =x;
newnode -> next =NULL;
head = newnode;
}else{
if (x < head -> data) x += head -> data -= x = head -> data - x ;
struct node *p; //只使用这一个额外的指针
p = new node;
p = head;
while (p-> next!= NULL && p-> next ->data < x) p = p -> next;
newnode-> data = x;
newnode->next = p ->next;
p->next = newnode;
}
return head;
}


勉勉强强自我感觉还行...可以去看看 ACM 各大神的优美解题啊...
sciooga
2015-04-01 14:15:48 +08:00
hyuwang
2015-04-01 14:23:28 +08:00
写Haskell 感觉自己整个人都很优雅:)
billwsy
2015-04-01 14:25:26 +08:00
@hyuwang 被Monid折腾的够惨…
loading
2015-04-01 14:25:34 +08:00
判断是否为数字
function isNumber(x) {
return x === +x
}
fkdtz
2015-04-01 14:28:44 +08:00
xxx是一个优雅的、简洁的、优秀的、强大的。。。。。。

看到这类的词汇真心难受。
ZackYang
2015-04-01 14:28:46 +08:00
不如把标题改成"大家都写过或者见过哪些只为炫技不管是否清晰的代码?"?
loading
2015-04-01 14:30:27 +08:00
最短判断是否为ie


if(-[1,]){
alert("这不是IE浏览器!");
}else{
alert("这是IE浏览器!"); 以前最短的IE判定借助于IE不支持垂直制表符的特性搞出来的。

var ie = !+"\v1";

仅仅需要7bytes!参见这篇文章,《32 bytes, ehr ... 9, ehr ... 7!!! to know if your browser is IE》,讲述外国人是如何把IE的判定从32 bytes一步步缩简成7 bytes!的故事

但这纪录今年1月8日被一个俄国人打破了,现在只要6 bytes!它利用了IE与标准浏览器在处理数组的toString方法的差异做成的。对于标准游览器,如果数组里面最后一个字符为逗号,JS引擎会自动剔除它。详
var ie = !-[1,]; }



不知新ie是否可用,当时只能膜拜。
finian
2015-04-01 14:32:49 +08:00
readability matters
zjlsxulei
2015-04-01 14:33:54 +08:00
@ZackYang 的确。。好多“优雅”无注释的代码对别人来说一时半会儿很难理解。。
fkdtz
2015-04-01 14:34:43 +08:00
一点都不优雅,我只能联想到写这个的人真他妈闲的蛋疼,肯定是个怪咖。
TimLang
2015-04-01 14:36:11 +08:00
xsseroot
2015-04-01 14:36:23 +08:00
a++、++a
zjlsxulei
2015-04-01 14:37:38 +08:00
@xsseroot 想到了php的 $a++ 和 ++$a 。。。
idblife
2015-04-01 14:41:20 +08:00
见过80年代的ibm工程师写的c语言,目前跑的还是相当棒
zjlsxulei
2015-04-01 14:44:43 +08:00
@fkdtz 编程之美里面这道题,这个是第二种方法,书中的第一种解法用了将近五页来讲解怎么只用一个变量来解决问题。所以在看了第一种方法的复杂之后,突然看到第二个解法,有了对比之后,才发现第二种方法的确比第一种方法简洁太多,所以才这样感慨。: )
hyuwang
2015-04-01 14:55:09 +08:00
@billwsy 哈哈哈满脑子wtf
yukirock
2015-04-01 15:16:08 +08:00
megoo
2015-04-01 15:41:44 +08:00
@TimLang 类lisp语法么?怎么看不出美感来?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/180846

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX