きっかけ
今月の特集「シェル30本ノック」が初心者向けにもすごくよかったです。
なぜか、羊の数を数えるというの問題に惹かれたので例題を追加してみました。
もとの問題は 羊の数を100匹数える という問題でした。
Software Design 2017年1月号|技術評論社
羊の数を100まで数えるけど3の倍数のときだけ山羊になる
if文を使って条件分岐させます。
はじめはfor文にネストされているだけでも戸惑うかもしれませんが、分解して読み解けば大丈夫。
羊もメェ〜?
いいえ、羊はベェ〜〜って感じなのです。
回答例
sheep_fizz.sh
#!/bin/bash
for i in `seq 1 100`; do
if [ $(($i % 3)) == 0 ]; then
echo "メェ〜"
else
echo "羊の数が $i 匹"
fi
done
羊の数を100まで数えるけど3の倍数のときだけ山羊になって5の倍数のときに吉田羊になって3の倍数かつ5の倍数のときは吉田山羊になる
fizzbuzzですね。
bashのand条件を表す -a
はすごくわかりにくいので嫌いです。
放牧日記は吉田羊さんのブログ。
回答例
sheep_fizzbuzz.sh
#!/bin/bash
for i in `seq 1 100`; do
if [ $(($i % 3)) == 0 -a $(($i % 5)) == 0 ]; then
echo "放牧日記( http://ameblo.jp/hitsuji1118/ )だメェ〜"
elif [ $(($i % 3)) == 0 ]; then
echo "メェ〜"
elif [ $(($i % 5)) == 0 ]; then
echo "放牧日記( http://ameblo.jp/hitsuji1118/ )!"
else
echo "羊の数が $i 匹"
fi
done
output
羊の数が 1 匹
羊の数が 2 匹
メェ〜
羊の数が 4 匹
放牧日記( http://ameblo.jp/hitsuji1118/ )!
メェ〜
羊の数が 7 匹
羊の数が 8 匹
メェ〜
放牧日記( http://ameblo.jp/hitsuji1118/ )!
羊の数が 11 匹
メェ〜
羊の数が 13 匹
羊の数が 14 匹
放牧日記( http://ameblo.jp/hitsuji1118/ )だメェ〜
羊の数が 16 匹
羊の数が 17 匹
メェ〜
羊の数が 19 匹
放牧日記( http://ameblo.jp/hitsuji1118/ )!
メェ〜
羊の数が 22 匹
羊の数が 23 匹
メェ〜
放牧日記( http://ameblo.jp/hitsuji1118/ )!
羊の数が 26 匹
メェ〜
羊の数が 28 匹
羊の数が 29 匹
放牧日記( http://ameblo.jp/hitsuji1118/ )だメェ〜
羊の数が 31 匹
羊の数が 32 匹
メェ〜
羊の数が 34 匹
放牧日記( http://ameblo.jp/hitsuji1118/ )!
メェ〜
羊の数が 37 匹
羊の数が 38 匹
メェ〜
放牧日記( http://ameblo.jp/hitsuji1118/ )!
羊の数が 41 匹
メェ〜
羊の数が 43 匹
羊の数が 44 匹
放牧日記( http://ameblo.jp/hitsuji1118/ )だメェ〜
羊の数が 46 匹
羊の数が 47 匹
メェ〜
羊の数が 49 匹
放牧日記( http://ameblo.jp/hitsuji1118/ )!
メェ〜
羊の数が 52 匹
羊の数が 53 匹
メェ〜
放牧日記( http://ameblo.jp/hitsuji1118/ )!
羊の数が 56 匹
メェ〜
羊の数が 58 匹
羊の数が 59 匹
放牧日記( http://ameblo.jp/hitsuji1118/ )だメェ〜
羊の数が 61 匹
羊の数が 62 匹
メェ〜
羊の数が 64 匹
放牧日記( http://ameblo.jp/hitsuji1118/ )!
メェ〜
羊の数が 67 匹
羊の数が 68 匹
メェ〜
放牧日記( http://ameblo.jp/hitsuji1118/ )!
羊の数が 71 匹
メェ〜
羊の数が 73 匹
羊の数が 74 匹
放牧日記( http://ameblo.jp/hitsuji1118/ )だメェ〜
羊の数が 76 匹
羊の数が 77 匹
メェ〜
羊の数が 79 匹
放牧日記( http://ameblo.jp/hitsuji1118/ )!
メェ〜
羊の数が 82 匹
羊の数が 83 匹
メェ〜
放牧日記( http://ameblo.jp/hitsuji1118/ )!
羊の数が 86 匹
メェ〜
羊の数が 88 匹
羊の数が 89 匹
放牧日記( http://ameblo.jp/hitsuji1118/ )だメェ〜
羊の数が 91 匹
羊の数が 92 匹
メェ〜
羊の数が 94 匹
放牧日記( http://ameblo.jp/hitsuji1118/ )!
メェ〜
羊の数が 97 匹
羊の数が 98 匹
メェ〜
放牧日記( http://ameblo.jp/hitsuji1118/ )!