V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xoxo419
V2EX  ›  程序员

你见过哪些好玩又花里胡哨的代码呢

  •  
  •   xoxo419 · 28 天前 · 2257 次点击
    18 条回复    2024-11-11 15:33:40 +08:00
    Contextualist
        1
    Contextualist  
       28 天前
    参见 IOCCC (国际 C 语言混乱代码大赛)
    PTLin
        2
    PTLin  
       28 天前
    好玩花里胡哨 等于:复杂的宏混淆,绕好几圈的代码逻辑,不格式化没法看的代码,一堆没人解释就看不懂的技巧。
    ZeawinL
        3
    ZeawinL  
       28 天前 via iPhone   ❤️ 3
    某个人的名字不换行
    needpp
        4
    needpp  
       28 天前
    fork 炸蛋?
    NoDataNoBB
        5
    NoDataNoBB  
       28 天前
    Brainfuck
    hhhh115
        6
    hhhh115  
       28 天前   ❤️ 2
    arr = [6,1,3,9,0]
    sorted = []
    for(let i = 0; i < arr.length; i++) {
    setTimeout(() => {
    sorted.push(arr[i])
    }, arr[i])
    }
    console.log(sorted)
    一种排序算法🐶
    当初看到的时候愣了两下,哈哈。
    忘记在哪看到的
    yazinnnn0
        7
    yazinnnn0  
       28 天前   ❤️ 1


    Y 组合子, 虽然不是代码, 但是可以十分简单的解释停机问题
    ymz
        8
    ymz  
       28 天前
    @hhhh115 艹数字越大,延时越久。
    haneki
        9
    haneki  
       28 天前 via Android   ❤️ 1
    #6 沃勒个睡觉排序啊。
    pythonee
        10
    pythonee  
       28 天前
    @yazinnnn0 这个东西的推导让我脑子原地绕了好几圈
    AnkhSpirit
        11
    AnkhSpirit  
       28 天前
    @hhhh115 #6 6
    NessajCN
        12
    NessajCN  
       28 天前
    i = int(input("Input an integar: "))
    print("eovdedn"[i%2::2])
    lisxour
        13
    lisxour  
       28 天前
    猴子排序算法,有点东西,但不花里胡哨😀
    loveour
        14
    loveour  
       28 天前
    @hhhh115 666.一开始还懵了一下
    olderfe
        15
    olderfe  
       27 天前
    k;double sin()
    ,cos();main(){float A=
    0,B=0,i,j,z[1760];char b[
    1760];printf("\x1b[2J");for(;;
    ){memset(b,32,1760);memset(z,0,7040)
    ;for(j=0;6.28>j;j+=0.07)for(i=0;6.28
    >i;i+=0.02){float c=sin(i),d=cos(j),e=
    sin(A),f=sin(j),g=cos(A),h=d+2,D=1/(c*
    h*e+f*g+5),l=cos (i),m=cos(B),n=s\
    in(B),t=c*h*g-f* e;int x=40+30*D*
    (l*h*m-t*n),y= 12+15*D*(l*h*n
    +t*m),o=x+80*y, N=8*((f*e-c*d*g
    )*m-c*d*e-f*g-l *d*n);if(22>y&&
    y>0&&x>0&&80>x&&D>z[o]){z[o]=D;;;b[o]=
    ".,-~:;=!*#$@"[N>0?N:0];}}/*#****!!-*/
    printf("\x1b[H");for(k=0;1761>k;k++)
    putchar(k%80?b[k]:10);A+=0.04;B+=
    0.02;}}/*****####*******!!=;:~
    ~::==!!!**********!!!==::-
    .,~~;;;========;;;:~-.
    ..,--------,*/


    甜甜圈申请出战
    liyafe1997
        16
    liyafe1997  
       27 天前
    @ZeawinL 还有照片隐藏鼠标指针
    grzhan
        17
    grzhan  
       26 天前
    Golang 标准库 sys.TrailingZeros64
    通过 deBruijn 序列快速计算一个 64 位二进制末尾有多少个 0:

    var deBruijn64tab = [64]byte{
    0, 1, 56, 2, 57, 49, 28, 3, 61, 58, 42, 50, 38, 29, 17, 4,
    62, 47, 59, 36, 45, 43, 51, 22, 53, 39, 33, 30, 24, 18, 12, 5,
    63, 55, 48, 27, 60, 41, 37, 16, 46, 35, 44, 21, 52, 32, 23, 11,
    54, 26, 40, 15, 34, 20, 31, 10, 25, 14, 19, 9, 13, 8, 7, 6,
    }

    const deBruijn64 = 0x03f79d71b4ca8b09

    // TrailingZeros64 returns the number of trailing zero bits in x; the result is 64 for x == 0.
    func TrailingZeros64(x uint64) int {
    if x == 0 {
    return 64
    }
    // If popcount is fast, replace code below with return popcount(^x & (x - 1)).
    //
    // x & -x leaves only the right-most bit set in the word. Let k be the
    // index of that bit. Since only a single bit is set, the value is two
    // to the power of k. Multiplying by a power of two is equivalent to
    // left shifting, in this case by k bits. The de Bruijn (64 bit) constant
    // is such that all six bit, consecutive substrings are distinct.
    // Therefore, if we have a left shifted version of this constant we can
    // find by how many bits it was shifted by looking at which six bit
    // substring ended up at the top of the word.
    // (Knuth, volume 4, section 7.3.1)
    return int(deBruijn64tab[(x&-x)*deBruijn64>>(64-6)])
    }


    -------

    1. (x & -x) 会把 x 除了最低位以外的 1 都清 0
    2. deBrujin64 是一个德布鲁因数,它有个重要性质:它相当于一个循环的德布鲁因序列,每个长度为 6 的二进制子串在里面恰好出现一次,也就是说这个德布鲁因数包含所有的 6 位二进制数,且通过不同次数的位移可以恰好得到。
    3. x 若有 k 个 0 , 那么 (x & -x) * deBrujin64 就相当于 deBrujin64 << k ,注意左移是会回绕的,因此 (deBrujin64 << k) >> 58 可以恰好得到 k 在 deBrujin64 中对应的六位唯一二进制子序列
    4. deBrujin64tab 就是 k 与对应六位二进制子序列(数)的映射,因此可以快速找到对应的 k ,也就是末尾多少个 0

    据说该方法来自 Knuth 的 The Art of Computer Programming 7.3.1 ,回头找一下再学习下。

    sys.TrailingZeros64 的性能在很多 Go 运行时场景都至关重要,Golang 有很多 free-list allocator ,比如 mspan 就会用 allocCache bitmap 位图来快速定位可以分配的 free object ,所以计算这个 bitmap 末尾有多少个 0 ,就能快速找到可以被重复利用分配的 free object
    MoYi123
        18
    MoYi123  
       26 天前
    quine 程序, 一段可以打印自己的代码.

    https://en.wikipedia.org/wiki/Quine_(computing)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2893 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 09:20 · PVG 17:20 · LAX 01:20 · JFK 04:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.