メモ

yukicoderでゆるふわgolf

yukicoder No.536 人工知能

問題はこちら
No.536 人工知能 - yukicoder

後ろ2文字が"ai"かどうかで分ける

char s[99];
int n;
main(){
	gets(s);
	n=strlen(s);
	if(s[n-2]=='a'&&s[n-1]=='i'){
		s[n-2]='A';
		s[n-1]='I';
	}else{
		s[n]='-';
		s[n+1]='A';
		s[n+2]='I';
	}
	puts(s);
}

で、この方針で縮めるとこうなって98B

char s[];
main(f){
	f=strlen(gets(s));
	strcmp(s+f-2,"ai")?s[f]=45,f+=3:0;
	s[f-2]=65,s[f-1]=73;
	puts(s);
}

でもsを編集するより、出力文字数をいじった方が短くなった

char s[];
main(f,g){
	f=strlen(gets(s));
	g=!strcmp(s+f-2,"ai");
	write(1,s,f-2*g);
	puts("-AI"+g);
}

91B
存在は知っていたが使ったことのなかったwrite関数を初めて使った。
文字列の途中までを字数を指定して出力するときに便利