4

このCプログラムの長さはわずか 143 文字です。

しかし、それはPiの最初の 10,000 桁に「解凍」されます。

//  Created by cheeseMan on 30/11/13.

long a[35014],b,c=35014,d,e,f=1e4,g,h;

int main(int argc, const char * argv[])

{
    for(;(b=c-=14);

        h=printf("%04ld",e+d/f))

        for(e=d%=f;(g=--b*2);d/=g)
            d=d*b+f*(h?a[b]:f/5), a[b]=d%--g;
}

これに出くわしたとき、私はロスレス圧縮アルゴリズムについていくつかの調査を行っていましたが、まだ運がありませんpitiny.c

奇妙なことは、それがエラーやバグなしで正常にコンパイルされることですが、私が言ったように、コードの頭や物語を、その構文でさえ作ることができません. 何が起こっているのか知りたいだけですか?それは正確に何をしているのですか?

4

3 に答える 3

2

次のように書くことができます

long a[35014];
long b;
long c=35014;
long d;
long e;
long f=1e4;
long g;
long h;

int main(int argc, const char * argv[])
{
    for(; (b=c-=14); h=printf("%04ld",e+d/f)) {
        for(e=d%=f; (g=--b*2); d/=g) {
            d = (d * b) + f * ( h ? a[b] : f/5);
            a[b] = d % --g;
        }
    }
}

つまり二重forループ

于 2013-11-29T14:12:00.040 に答える