七行プログラミング
■ このスレッドは過去ログ倉庫に格納されています
0712comp
NGNGそれでも、先のバージョンから40文字ほど縮めました。
673 さんに触発されて、自分のコードを書き直して始めたのですが、随分勉強になりました。
#include <fstream>
typedef unsigned long L;typedef unsigned char C;L b=256,a[256],W,A=-1,O,u,i,T,
K,l=ios::binary;main(int,char**V){fstream g(V[2],ios::in|l),o(V[3],ios::out|l)
;g.seekg(0,ios::end);C s[l=g.tellg()],c;g.seekg(0,ios::beg);for(g.read(s,l);u<
b;)a[u++]=1;if(*V[1]-68){C t[l*2];for(o.write(&l,4);i<l;K=W){for(T=b=0;b<s[i];
)T+=a[b++];W+=A/u*T;if(K>W)for(K=O;--K,!++t[K];);for(A=A/u++*a[s[i++]]++;A<1<<
24;A<<=8)t[O++]=W>>24,W<<=8;}o.write(t,O);o<<(c=W>>24)<<(c=W>>16)<<(c=W>>8)<<(
c=W);}else{C t[l=*(L*)s];W=s[4]<<24|s[5]<<16|s[6]<<8|s[7];for(O=8;i<l;A*=a[b]
++){for(K=b=0;A<1<<24;A<<=8)W=W<<8|s[O++];for(T=W/(A/=u++);T>=K;K+=a[b++]);t[i
++]=--b;W-=A*(K-a[b]);}o.write(t,l);}}
■ このスレッドは過去ログ倉庫に格納されています