ネスト付で書くと
m,n; i,j; char*p,s[80]; u[80]; r[80]; d[80]; v;e; main(){ for(;p=gets(s);n++)for(m=0;*p;m++) v=*p-85||v/++u[m]?v:u[m], *p-82||++r[n], e=*p++-68||e/++d[m]?e:d[m]; for(;v--;j=!puts(s)) for(i=m;i--;) s[i]=u[i]>v?j=32,85:j; for(j=v;++j<n;puts(s)) for(s[i=m+r[j]]=0;i--;) s[i]=i<m?j%~-n&&i%~-m?32:35:82; for(j=0;e/++j;puts(s))for(s[i=m-1]=0;i--;) s[i]=d[i]/j?68:32; }
やってることはシンプルですね。よく考えればフィールドは正方形なので横がわかれば縦もわかるんだよね。
もう一度やり直したらずいぶん縮むかも。でも簡易版Ejectionが出題されたのでそっちに行きますw
ちなみに枠線判定のj%~-n&&i%~-mはj%(n-1)&&i%(m-1)の意味。
0~(n-1)のn個の数列の両端のとき0になります。
0 件のコメント:
コメントを投稿