ABC179を解いてみる(B問題まで)

A - Plural Form

atcoder.jp

一旦入力をそのまま出力し、末尾がsであるかどうかを判断するのが初心者には楽。変数sの末尾1文字は${s: -1}で取り出せる。スペースは必須。

read s
echo -n $s
[ ${s: -1} = "s" ] && echo es || echo s

B - Go to Jail

atcoder.jp

この程度であればBashでもループで探索できはするが、せっかくなのでもう少し凝ったやり方を。

入力例1を使って試してみる。最初に先頭1行は使わないのでtailを使って消し、以降の入力のスペースを-(マイナス)に置換する。

tail -n +2 | tr ' ' '-'
1-2
6-6
4-4
3-3
3-2

次にbcを使って計算する。

tail -n +2 | tr ' ' '-' | bc
-1
0
0
0
1

あとは0が3連続しているかを確認すればよい。面倒なので改行を削除し、grepで000とマッチするか判断する。grepの結果を三項演算子もどきで処理してやれば終わり!

tail -n +2 | tr ' ' '-' | bc | tr -d '\n' | grep -q "000" && echo "Yes" || echo "No"

C問題以降についてはTLEする匂いしかしないので一旦ここまで。