メモ

yukicoderでゆるふわgolf

yukicoder No.632 穴埋め門松列

問題はこちら
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);}