応用課題は,
を,zipファイルにまとめて提出せよ.
ポーカーとは,トランプゲームの一種であり,5枚のカードで役を作って強さを競うものである.
5枚のカードをランダムに配り,配られたカードの役を判定するプログラムを作成せよ.
役には以下のものがあり,上の方が強い役である.
※ 数字が連続する場合,Aは1(例: A-2-3-4-5)あるいはKの次(例: 10-J-Q-K-A)のいずれとしても扱える.
参考: Wikipedia ポーカー
英文は主にアルファベットで構成されている.アルファベットの登場頻度は完全に均一ではなく,例えば e は q よりも登場頻度が高い.加えて,ある文字の次に現れる文字にも偏りがある.e の次には r がよく現れるが o は少ない,などである.
ある文字の次に現れる文字の登場確率に着目して,以下のようにして,一見,英文に見える文章を生成するプログラムを作成せよ.
フリーで参照できる英文として,Project Gutenberg などがある.
1文字単位ではなく,2文字単位(2-gram)や3文字単位(3-gram)にすると精度が上がるはずである. 1文字単位での結果に満足がいかなければ試してみよ.
ローマ数字は,以下の記号を大きい数から順に並べて数を表す記法である.
ローマ数字 | アラビア数字 |
---|---|
M | 1000 |
D | 500 |
C | 100 |
L | 50 |
X | 10 |
V | 5 |
I | 1 |
例: MMXXI = 2021
位の数として4と9が現れる場合のみ,小さい数を大きい数の左側に書き,大きい数から小さい数を減算することを表す.
ローマ数字 | アラビア数字 |
---|---|
CM | 900 |
CD | 400 |
XC | 90 |
XL | 40 |
IX | 9 |
IV | 4 |
例: MMXIX = 2019
文字列で与えられたローマ数字を,整数に変換して表示するプログラムを作成せよ.
参考: Wikipedia ローマ数字
あなたは中学校の数学の教師である.学生用に因数分解の問題を自動生成するプログラムを作成せよ.
(x+a)(x+b)の形に因数分解できる2次の多項式x^2+px+qを自動生成するプログラムを作成せよ.ただし,a,bは-9以上9以下で0でない整数とする.a=bでもよい.aとbを生成する際には,関数 linear_factor(n) を使用せよ.
多項式を表示する際は,以下の条件を含めた一般的な数式の表現に従うこと.指数の表記は困難であるため, ^2 と表記してよい.
2で作成したプログラムを拡張して,問題を10問生成するようにせよ.ただし,以下の条件を満たすようにせよ.
提出するプログラムは3のみでよい.
あなたは中学校の理科の教師である.学生用に元素記号を覚える問題を自動生成し,解答の正誤を返すプログラムを作成せよ.仕様は以下の通りである.
ファイル element.csv (←ここからダウンロードせよ) に原子番号,元素記号と元素名が記述されている.
元素記号に対して,4つの元素名(うち1つが正解)を表示し,キーボードから1から4の番号を入力させ,正解であれば「正解です」,誤っていれば正解を表示する.
キーボードからの入力が解答として不正である場合は再度入力をうながす.
問題は10問出す.ただし,正解が同じである問題は出題しない.
10問終了後,1問10点として,点数を0から100点の整数で表示する.
リスト型に要素を1つ追加するメソッドとして,途中に挿入する insert() と,末尾に追加する append() がある.両メソッドの処理速度(所要時間)について調査し報告せよ.insert() によって要素を追加する位置をいくつか変更して試せ.
所要時間の計測には,モジュール time を利用することができる.