FizzBuzz (フィズバズ)
以下のような感じで表示されたらよい.
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 ...
とりあえず,20くらいまで表示してみる.
if [ $(( ( i % 3 ) )) -eq 0 ]; then echo Fizz fi
if [ $(( ( i % 3 )*( i % 5 ) )) -ne 0 ]; then echo $i fi
これを使うと,
#!/bin/bash i=0 while [ $i -lt 20 ]; do i=$(( i + 1 )) if [ $(( ( i % 3 ) )) -eq 0 ]; then echo -n Fizz fi if [ $(( ( i % 5 ) )) -eq 0 ]; then echo -n Buzz fi if [ $(( ( i % 3 )*( i % 5 ) )) -ne 0 ]; then echo -n $i fi echo done
もっとたくさん,たとえば100まで表示してみることにする. 普通にスクリプトを書くと一瞬で100まで表示されてしまう. あんまり速いと楽しくないので,sleep というコマンドを使ってみる. sleep は後ろに数字をひとつ書いて使う. 後ろに書いた数字の秒数だけ,処理を停止する. 例えば,
sleep 2
とすると,2秒間停止する(2秒も停止させたら鬱陶しくなるので数字は適当に調整しましょう).
世界のナベアツ
3の倍数と3のつく数字ではアホになる.
1 2 AHO 4 5 AHO 7 8 AHO 10 11 AHO AHO 14 AHO 16 ...
変数 text に文字列 word が含まれるかどうか調べる
if [ $( echo $text | grep $word ) ]; then echo 'found' else echo 'not found' fi
月の日数を答える
echo Enter year read year echo Enter month read month
if [ $month -lt 1 ]; then echo $month is invalid exit fi if [ $month -gt 12 ]; then echo $month is invalid exit fi
Gregorius XIII, 1502年1月7日 - 1585年4月10日. 第226代ローマ教皇(在位:1572年-1585年). 1582年にグレゴリオ暦を採用.
曜日判定
カレンダーを表示する cal というコマンドがあるので,それを使って正しく曜日判定できているかどうか確認することができる.使い方は,
$ cal 12 1867 December 1867 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
坂本龍馬が暗殺された1867年12月10日は火曜日(当時は曜日とか使ってないので曜日がわかっても意味ないけど).
カレンダー
--------------------------- 2020.10 --------------------------- Sun Mon Tue Wed Thu Fri Sat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ---------------------------
毎月22日はショートケーキの日.
素数判定
素数探索
素因数分解
スクリプトに引数 m を渡して,次の数列を計算させる
X_{0} = X_{1} = ... = X_{m-2} = 0, X_{m-1} = 1 X_{n+m} = X_n + X_{n+1} + ... + X_{n+m-1} for n>m
/home/atmos/ipesc/sample/number/pi100000.txt には円周率の100,000桁が書かれている.0から9の各数字の出現頻度を調べよ.
円周率の小数点以下762桁目から767桁目は「9」が6個連続して並ぶ.これをファインマン・ポイントと呼ぶらしい.リチャード・ファインマンが円周率をこの桁まで暗記したいと言った,とされているためだが,ファインマンがそう言ったかどうかは明らかではないらしい.
円周率の各桁の数字はランダムに現れているように見えるが,乱数列であるとは証明されていない.乱数列であるなら,各数字が出現する確率は等しい.
/home/atmos/ipesc/sample/number/e.txt にはネイピア数の50,000桁が書かれている.0から9の各数字の出現頻度を調べよ.
$ cut -d ' ' -f 2 /home/atmos/ipesc/sample/number/e.txt
自然対数の底. 円周率と同格の偉さの数学定数だと思うのだが,円周率に比べると人気がないような気がする? (数学定数の「偉さ」とかいう基準が意味不明ではあるが)
文書中で使用されている各アルファベットの使用回数を数える.
/home/atmos/ipesc/sample/text/My_favorite_things.txt /home/atmos/ipesc/sample/text/Hotel_Mauna_Kea.txt /home/atmos/ipesc/sample/text/Potential_Vorticity.txt /home/atmos/ipesc/sample/text/Lorem_ipsum.txt /home/atmos/ipesc/sample/text/Pangram.txt
for char in {a..z}; do echo $char done
infile という名前のファイルに中にある Win を Mac に置き換える
$ sed -e "s/Win/Mac/g" infile
以下のようにすれば削除になる
$ sed -e "s/Win//g" infile
入力はパイプで流し込むことも可
$ cat infile | sed -e "s/Win/Mac/g"
[a-z] は a から z までのいずれかの文字
$ sed -e "s/[a-z]/X/g" infile
[^a-z] は a から z までのいずれかの文字以外
$ sed -e "s/[^a-z]/X/g" infile
$ echo ${word,,}
あるいは
$ echo ${word} | tr A-Z a-z
$ wc -m infile $ cat infile | wc -m
エドガー・アラン・ポーの有名な小説.下のリンク先を見るとネタバレしちゃうので,これから小説を読むつもりの人は考えてからクリックしてください.