問題はこちら
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関数を初めて使った。
文字列の途中までを字数を指定して出力するときに便利