何となくシェルでFizzBuzz問題
今更ながらFizzBuzz問題と言うものを知る。
悪い癖かどうかわからないけど、シェルでやってみた。
#!/bin/sh for i in `seq 100`;do (( i % 15 == 0 )) && echo 'FizzBuzz' && continue (( i % 3 == 0 )) && echo 'Fizz' && continue (( i % 5 == 0 )) && echo 'Buzz' || echo $i && continue done
一般的なのはこんなのかな。もっと短くかけないもんかな。
#!/bin/sh for i in {1..100};do echo $( (( i % 3 == 0 )) && echo -n 'Fizz')$( (( i % 5 == 0 )) && echo -n 'Buzz') | sed "s/^$/$i/" done
最低なほど遅いw
#!/bin/sh for i in {1..100};do line=$( (( i % 3 == 0 )) && echo -n 'Fizz')$( (( i % 5 == 0 )) && echo -n 'Buzz'); echo ${line:=$i} done
sed
分早くなったがまだ遅い
#!/bin/zsh for i in {1..100};do line=${${$(( i % 3 == 0 ))/1/Fizz}/0/}${${$(( i % 5 == 0 ))/1/Buzz}/0/}; echo ${line:=$i} done
bash
じゃ動かなくてzsh
なら動いた。外部コマンドは使ってないのでそれなりに早い。