メモ

yukicoderでゆるふわgolf

yukicoder No.646 逆ピラミッド

問題はこちら
No.646 逆ピラミッド - yukicoder

言われたとおりに二重ループを実装するだけ

main(){
	int n;
	scanf("%d",&n);
	for(int i=n;i>0;i--){
		for(int j=0;j<i;j++)printf("%d",n);
		puts("");
	}
}

縮める。まずはささっと

i,j;
main(n){
	scanf("%d",&n);
	for(i=n;i>0;i--,puts(""))for(j=0;j++<i;)printf("%d",n);
}

頑張って縮める

for(i=n;i>0;i--,puts(""))for(j=0;j++<i;)printf("%d",n);
//for文圧縮
for(i=n;j++<i?printf("%d",n):(j=0,puts(""),--i););
//三項演算子の順序を入れ替え
for(i=n;++j>i?j=0,puts(""),--i:printf("%d",n););
//jのループを逆に
for(j=i=n;!j--?puts(""),j=--i:printf("%d",n););
//putsの返り値を使う
for(j=i=n;!j--?j=i-=puts(""):printf("%d",n););

ということで完成品がこちら

i,j;
main(n){
	scanf("%d",&n);
	for(j=i=n;!j--?j=i-=puts(""):printf("%d",n););
}

74B