5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Bash で四則演算と剰余

Posted at

株式会社オズビジョンのユッコ (@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

前後での改善

image.png

誤差レベルですが、実行は速くなった!

Conclusion

Bash は普段知っていることの延長でしか使わないので、より効率のいい方法とかを学ぶきっかけになればと思いました。ただ、リアルタイムに人と競うのは苦手なので、過去問をのんびり解いているかも…。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?