• 请不要在回答技术问题时复制粘贴 AI 生成的内容
zjlsxulei
V2EX  ›  程序员

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

  •  
  •   zjlsxulei ·
    uestcxl · Apr 1, 2015 · 6951 views
    This topic created in 4243 days ago, the information mentioned may be changed or developed.

    先分享一个,应该很多人都看过了。前几天看编程之美,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的循环嵌套,厉害!

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

    36 replies  •  2015-04-02 09:25:20 +08:00
    billwsy
    billwsy
    Apr 1, 2015 via iPhone
    1
    a & -a 等等…
    sciooga
    sciooga
    Apr 1, 2015❤️1
    2
    两个课堂作业:

    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 各大神的优美解题啊...
    hyuwang
    hyuwang
    Apr 1, 2015
    4
    写Haskell 感觉自己整个人都很优雅:)
    billwsy
    billwsy
    Apr 1, 2015 via iPhone
    5
    @hyuwang 被Monid折腾的够惨…
    loading
    loading
    Apr 1, 2015 via Android
    6
    判断是否为数字
    function isNumber(x) {
    return x === +x
    }
    fkdtz
    fkdtz
    Apr 1, 2015
    7
    xxx是一个优雅的、简洁的、优秀的、强大的。。。。。。

    看到这类的词汇真心难受。
    ZackYang
    ZackYang
    Apr 1, 2015❤️8
    8
    不如把标题改成"大家都写过或者见过哪些只为炫技不管是否清晰的代码?"?
    loading
    loading
    Apr 1, 2015 via Android❤️2
    9
    最短判断是否为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
    finian
    Apr 1, 2015
    10
    readability matters
    zjlsxulei
    zjlsxulei
    OP
    Apr 1, 2015
    11
    @ZackYang 的确。。好多“优雅”无注释的代码对别人来说一时半会儿很难理解。。
    fkdtz
    fkdtz
    Apr 1, 2015
    12
    一点都不优雅,我只能联想到写这个的人真他妈闲的蛋疼,肯定是个怪咖。
    xsseroot
    xsseroot
    Apr 1, 2015
    14
    a++、++a
    zjlsxulei
    zjlsxulei
    OP
    Apr 1, 2015
    15
    @xsseroot 想到了php的 $a++ 和 ++$a 。。。
    idblife
    idblife
    Apr 1, 2015
    16
    见过80年代的ibm工程师写的c语言,目前跑的还是相当棒
    zjlsxulei
    zjlsxulei
    OP
    Apr 1, 2015
    17
    @fkdtz 编程之美里面这道题,这个是第二种方法,书中的第一种解法用了将近五页来讲解怎么只用一个变量来解决问题。所以在看了第一种方法的复杂之后,突然看到第二个解法,有了对比之后,才发现第二种方法的确比第一种方法简洁太多,所以才这样感慨。: )
    hyuwang
    hyuwang
    Apr 1, 2015
    18
    @billwsy 哈哈哈满脑子wtf
    megoo
    megoo
    Apr 1, 2015
    20
    @TimLang 类lisp语法么?怎么看不出美感来?
    yizi
    yizi
    Apr 1, 2015
    21
    @loading
    -[1,] 可以判断出IE8以下包括IE8,
    好神奇~
    acros
    acros
    Apr 1, 2015❤️1
    22
    int random()
    {
    //纯随机,骰子投掷的
    return 5;
    }
    iscraft
    iscraft
    Apr 1, 2015
    24
    病毒 例如CIH
    yuankui
    yuankui
    Apr 1, 2015 via iPhone
    25
    半天让人看不明白的代码,也叫优雅?
    就作吧!
    xpfd
    xpfd
    Apr 1, 2015
    26
    在实际项目中谁要是用这样的代码,我铁定k他,逼着他改,代码在保证功能和效率的情况下,越易懂越好

    写这样的代码就是给别人找麻烦
    lushl9301
    lushl9301
    Apr 1, 2015
    28
    Haskell quicksort
    zjlsxulei
    zjlsxulei
    OP
    Apr 1, 2015
    29
    @xpfd 是的,实际项目中还是需要简洁高效比较好啊,平时写着玩或者娱乐一下,可以写点好玩的
    zjlsxulei
    zjlsxulei
    OP
    Apr 1, 2015
    30
    @typcn 那个空格好精髓
    ming2281
    ming2281
    Apr 1, 2015
    31
    #the quickSort in Python
    def quick_sort(src):
    if len(src) <= 1:
    return src

    pivotValue = src[0]
    leftSrc = quick_sort([x for x in src[1:] if x < pivotValue])
    rightSrc = quick_sort([x for x in src[1 : ] if x > pivotValue])
    return leftSrc + [pivotValue] + rightSrc

    #oneline fibonacci series
    fib = lambda n: n if n<2 else fib(n-1) + fib(n-2)

    怎么Markdown?
    cfans1993
    cfans1993
    Apr 1, 2015 via Android
    32
    ```c
    while( sleep ){
    money++;
    }
    ```
    StrayBugs
    StrayBugs
    Apr 1, 2015
    33
    在 lcc 中看到的内存对齐(向上取整)代码,跪着看的

    #define roundup(x,n) (((x)+((n)-1))&(~((n)-1)))

    http://www.crimx.com/compiler/2014/03/21/lcc-source-learning/
    Septembers
    Septembers
    Apr 2, 2015 via Android
    34
    FSharp
    kevinzhow
    kevinzhow
    Apr 2, 2015
    35
    我写代码都是追求可读性
    blue7wings
    blue7wings
    Apr 2, 2015
    36
    readability +1
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4786 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 69ms · UTC 03:32 · PVG 11:32 · LAX 19:32 · JFK 22:32
    ♥ Do have faith in what you're doing.