カメヲラボ

主にプログラミングとお勉強全般について書いてます

Sticks(9)

意外と読める超短いコード

昨日のコードをさらに短くすると以下のようなコードになる。ここまでくると変数名を一文字にした方が逆に読みやすい。え?読みにくい?そうですか..(´ω`)


int L,F,*I;

c(n,l,p,j){
--I[p];
F=n?F:0;for(l-=p,j=l<p?l:p;j;--j)F*I[j]&&c(n,l,j);
for(j=50;!I[j];)--j;l||c(n-1,L,j);
++I[p];
}

main(s){
for(;s;L&&printf("%d\n",L-1)){
int w[51]={s=F};
scanf("%d",I=w);
for(;w[0]--;++w[L],s+=F<L?F=L:L)scanf("%d",&L);
for(L=F;F;++L)s%L||c(s/L,L,F);
}
}

if文の代わりに&&や||を使うのはコード短縮の常套手段。これで270byte。ここからあと20byte短縮することができる。