株式会社オズビジョンのユッコ (@terra_yucco) です。
知り合いのツイートみて AtCoder こっそりはじめてみましたが、まだ「初心者はまずはここから」の問題をちょっと眺めた程度。
自宅 PC で IDE がない環境だと、最初に自分が選ぶ言語は Bash なのだということに気づかされました。
単純な数値計算
以前にいた現場では計算するときには expr
が必要でしたが、今の環境及び AtCoder の Bash 環境では以下のようにすることで計算が行えます。
$ echo $(( 1 + 2 ))
3
なお、変数を使う場合などはこんな感じで。
$ a=1; b=2; echo $(( a + b ))
3
$(( ... ))
の中に書く変数は $
が付いていなくても、付いていても、動きは変わりません。
$ a=1; b=2; echo $(( $a + $b ))
3
四則演算
$(( a + b ))
$(( a - b ))
$(( a * b ))
$(( a / b ))
割り算の結果は切り捨てです。
剰余
Bash で使えるの知りませんでしたが、普通に %
が使えました。
$ a=5; b=2; echo $(( a % b ))
1
剰余が使えるの知らなかったので
奇数偶数を判定せよという問題で、こんなコードを書いていました、反省。
#!/bin/bash
read a b
res=$(( a * b ))
if [ $(( ( res / 2 ) * 2 )) -eq ${res} ]; then
echo "Even"
else
echo "Odd"
fi
改善後コード
#!/bin/bash
read a b
if [ $(( a * b % 2 )) -eq 0 ]; then
echo "Even"
else
echo "Odd"
fi
前後での改善
誤差レベルですが、実行は速くなった!
Conclusion
Bash は普段知っていることの延長でしか使わないので、より効率のいい方法とかを学ぶきっかけになればと思いました。ただ、リアルタイムに人と競うのは苦手なので、過去問をのんびり解いているかも…。