C(gcc),1420 1399 463字节
啊...长度不确定的弦乐!
假设sizeof(char*) == sizeof(int)
和sizeof(char**) <= 16
。
新方法
char**L,*r;n,i//j=>]l n}q((
,j,q;R(l){for(//,l)l, +;;rr
r=l=0;(j= //i=)[r +))oa
getchar())>10;//,r(r( *l(fh}
r[l++]=j,r[l]=//n(r,c=6=R)c;
0)r=realloc(r,//;rajoL1q()t)
l+2);l&&R((L= //roh=l(,,r"u)
realloc(L,++n*//*fc]l(Lro"p]
16))[n-1]=r,q=//,{t+aR(=f(;q
l);}main(){for//L)e+e&c]{sn[
(R();i<q;i++, //*lglr&o1)t<]
puts(""))for(j//*(=[=ll-(uj+
=n;j--;putchar//rRjrr;lnnp;+
(L[j][i]));} //a;(;))a[i;0j
////////////////hq;002e)a-=[
////////////////c,01=+r)m-jL
在线尝试!
上面的输出
最后,解决方案非常简单。您使一个程序A顺时针旋转,而另一个程序B逆时针旋转:
一种
char**L,*r;n,i,j,q;R(l){for(r=l=0;(j=getchar())>10;r[l++]=j,r[l]=0)r=realloc(r,l+2);l&&R((L=realloc(L,16*++n))[n-1]=r,q=l);}main(){for(R();i<q;i++,puts(""))for(j=n;j--;)putchar(L[j][i]);}
乙
char**L,*r;n,i,j,q;R(l){for(r=l=0;(j=getchar())>10;r[l++]=j,r[l]=0)r=realloc(r,l+2);l&&R((L=realloc(L,16*++n))[n-1]=r,q=l);}main(){for(R();q--;puts(""))for(j=0;j<n;j++)putchar(L[j][q]);}
制作一个具有适当比例的矩形,并将A限制在该矩形内,并在其周围放置注释保护符:
char**L,*r;n,i//
,j,q;R(l){for(//
r=l=0;(j= //
getchar())>10;//
r[l++]=j,r[l]=//
0)r=realloc(r,//
l+2);l&&R((L= //
realloc(L,++n*//
16))[n-1]=r,q=//
l);}main(){for//
(R();i<q;i++, //
puts(""))for(j//
=n;j--;putchar//
(L[j][i]));} //
////////////////
////////////////
将程序B限制为一个正方形,该正方形的宽度与A的宽度相同,再加上两个(底部边缘的多余注释行),逆时针旋转并将其拍打到程序A的右侧,您会得到上面的解决方案。
旧方法
/* r c c r
r a o n o s a
a r h l i r l r - t r = + h q
h o c 0 + l a o + l 6 o - u " o j< + c */
char**L,*s,*r;n,i,q;R(l,c){for(r=l=0;(c=getchar())>10;r[l++]=c,r[l]=0)r=realloc(r,l+2);q=l?l:q;l=r;}main(j){for(;s=R();L[n++]=s)L=realloc(L,16*n);for(;i<q;i++,puts(""))for(j=n;j--;)putchar(L[j][i]);}
/// // //e//// / / //e//// /// // / //e//// / // // //// /// / // ;/ /// //u//// /
/// // //g//// / / //r//// /// // / //r//// / // // //// /// / // 0/ /// //p//// /
在线尝试!
上面的输出
:.+
跨越几行?