Rubyプログラミング講座2008 第2回 演習問題

肩慣らし1

1から100までの整数を10進数、改行区切りで標準出力に出力せよ。なんらかのイテレータを用いること。

出力例

1
2
3
.....(中略)
100
テストケースtest/count_up_test.rbで動作を確かめよ

肩慣らし2

1から100までの各数値について、改行区切りで標準出力に次のものを出力せよ。スクリプトファイル名はfizzbuzz.rbとする。

出力例
1 2 fizz 4 buzz fizz 7 8 fizz .....
テストケースtest/fizzbuzz_test.rbで動作を確かめよ

13日の金曜日

friday.rbというファイルに、次の仕様を満たすトップレベルメソッドfridayを定義せよ。

実行例

friday("2009-12-31") #=> ["2009-02-13", "2009-03-13", "2009-11-13"]
テストケースtest/friday_test.rbで動作を確かめよ

クラスの作成

添付の遷移図で定義される有限ステートマシンをクラスStringPatternとして定義したい。

以下の仕様の下で、ファイルstring_pattern.rbにクラスを記述せよ。

このステートマシンは1文字ずつ文字を入力され、文字列が受理可能であるかどうかを判別することができる。

テストケースtest/string_pattern_test.rbで動作を確かめよ

正規表現

上で定義したステートマシンと同じ文字列集合を受理する正規表現を記述せよ。また、irbを使って幾つかの文字列とのマッチを試みよ

素因数分解

factorization.rbというファイルに次の仕様を満たすメソッドInteger#factorizationを定義せよ。

4.factorization #=> [2, 2]
6.factorization #=> [3, 2]
-6.factorization #=> [3, 2, -1]
テストケースtest/factorization_test.rbで動作を確かめよ
テストケースに含まれる素因数は高々2**31なので、アルゴリズムはそれほど凝らなくて良い

追加

物足りなかったら申し出よ