問題はこちら
No.632 穴埋め門松列 - yukicoder
ありえる入力は6通りしかないので全て手で確認してみよう
2,3,?→1
2,?,3→14
3,2,?→4
3,?,2→14
?,2,3→4
?,3,2→1
ということで、「真ん中がそれぞれ2,3,?のとき答えはそれぞれ4,1,14」となることがわかる
char s[9]; main(){ gets(s); if(s[2]=='2')puts("4"); if(s[2]=='3')puts("1"); if(s[2]=='?')puts("14"); }
ゴルフの方針として、とりあえずこんなのをぱっと思いつく
main(s){gets(&s);s>>=16;write(1,"14"+(0or1),1or2);}
ぐっと睨むと次のような物を得る
main(s){gets(&s);s>>=16;write(1,"14"-~s%2,(s&24)/9);}
53B
getsではなくreadを使うことも考えたが、結局同じ長さにしかならなかった
main(s){read(0,&s,3);write(1,"14"-~s%2,(s>>=16)/31);}