===課題7=== 受付開始日時 2015-06-09 11:30 受付終了日時 2015-06-15 18:00 閲覧設定 提出者本人と教員のみ閲覧・コメント可(個別指導) 学生による再提出の許可 再提出を許可する ●必須課題7-1 [記述(pdf)] BacktrackによるSUDOKU解法の人間による実行 課題に関する説明 ・授業で示したBacktrackによるSUDOKU解法(プログラム)が,人間が実行するには向かない具体的な理由を挙げて説明しなさい. ・理由は2つ以上示すこと. ・上記を踏まえて,Wikipediaに掲載されているSUDOKU解法(の例)が人間が実行するのに適しているところを説明しなさい. ・先のBacktrackによるSUDOKU解法の特徴との差異を示しながら説明できればなおよい. ・先頭に学籍番号・氏名・課題番号を示すこと。 ●必須課題7-2 [プログラム(zip)] SUDOKU解法の実施 課題に関する説明 ・授業で示したBacktrackによるSUDOKU解法を完成させなさい. ・問題を示すテキストファイル名をプログラム起動時の引数で与えること. ・問題を示すテキストファイルの仕様は授業で述べた通りとする(空欄を0で表記). ・解答前の問題を標準出力に見やすく表示すること.空欄は-で示すこと. ・問題における充填済みのセル数を表示すること. ・解答数とその解答全てを示すこと.(解が1つ以上ある場合) ・問題ファイルを3つ作成すること. ・どこから採ってきてもよいが、URL/書名・ページ番号等の出典を問題ファイルの末尾に示すこと.改変した場合は改変元を示すこと. ・問題ファイル名については、Quiz1.txt, Quiz2.txt, Quiz3.txt とすること. ・Quiz3.txtについては,解が2つ以上ある問題を用意すること. ・実行結果はそれぞれ,Result1.txt, Result2.tt, Result3.txt に保存すること. ・解答開始から解答終了までの処理時間をミリ秒の単位でプログラム内で計測し表示すること(昨年度のプログラミング序論3を参考にせよ) ・プログラムソースの先頭に、学生番号、氏名、課題名をコメントで記入すること。 ・プログラムで工夫した部分について、プログラムソースの何行目付近を確認してほしいか明記し(複数場所可)、其々の場所では何かしらの説明をコメントの形でプログラム中に書き込むこと。 ・L棟5階の計算機室で必ずコンパイルと実行ができること。 ⇒誰かに教えてもらった場合:その学生(氏名と9桁の学籍番号)をプログラム先頭に記し、さらにプログラム中コメントを使って、教えてもらったところの解説を独自の説明で数行以上書き込むこと。 (教えてもらった部分の解説コメントのないプログラムは全く評価しません。「全体です」のようなコメントの場合も同じです。) ⇒誰かに教えてあげた場合:その学生(氏名・学籍番号)をプログラム先頭に記すこと。 ⇒お互いに相談した場合:お互いの氏名・学籍番号を、教えてもらった・教えてあげたの例に準拠して提出してください。 ◇発展課題7-A [プログラム(zip)] BacktrackによるKnapsack問題解法 課題に関する説明 ・授業で示したBacktrackによるKnapsack問題を解くプログラムについて,実行の様子がわかるようにプログラムを改訂しなさい. ・重量制限によってBacktrackが発火した回数を示せるようにプログラムを改良しなさい.  (ヒント:とあるif文のブロックに入らなかった回数に相当する) ・実行結果は授業で示した品物リストで示すこと. ・実行結果は Result.txt に保存して提出すること. ・プログラムソースの先頭に、学生番号、氏名、課題名をコメントで記入すること。 ・プログラムで工夫した部分について、プログラムソースの何行目付近を確認してほしいか明記し(複数場所可)、其々の場所では何かしらの説明をコメントの形でプログラム中に書き込むこと。 ・L棟5階の計算機室で必ずコンパイルと実行ができること。 ⇒誰かに教えてもらった場合:その学生(氏名と9桁の学籍番号)をプログラム先頭に記し、さらにプログラム中コメントを使って、教えてもらったところの解説を独自の説明で数行以上書き込むこと。 (教えてもらった部分の解説コメントのないプログラムは全く評価しません。「全体です」のようなコメントの場合も同じです。) ⇒誰かに教えてあげた場合:その学生(氏名・学籍番号)をプログラム先頭に記すこと。 ⇒お互いに相談した場合:お互いの氏名・学籍番号を、教えてもらった・教えてあげたの例に準拠して提出してください。 ◇発展課題7-B [プログラム(zip)] 順列を表示するプログラム 課題に関する説明 ・1つの正整数を引数として,それに対するすべての順列を与えるプログラムを書いてみなさい. ・例えば,3を与えた場合は,123,132,213,231,312,321(順序はこの順でなくても可)を表示すること. ・深さ優先探索と同じ要領で実現可能ですが,それ以外の実装でも構いません. ・実装した後,正整数を1から10まで変更して,実行時間を計測しなさい.結果はResult1.txt - Result10.txtに保存すること. ・上記の計測から,20と30を与えた場合に発生するであろう事象を予想しなさい(確認しなくてよい). ・プログラム記述を参考文献に頼った場合は,その出典を明記すること. ⇒誰かに教えてもらった場合:その学生(氏名と9桁の学籍番号)をプログラム先頭に記し、さらにプログラム中コメントを使って、教えてもらったところの解説を独自の説明で数行以上書き込むこと。 (教えてもらった部分の解説コメントのないプログラムは全く評価しません。「全体です」のようなコメントの場合も同じです。) ⇒誰かに教えてあげた場合:その学生(氏名・学籍番号)をプログラム先頭に記すこと。 ⇒お互いに相談した場合:お互いの氏名・学籍番号を、教えてもらった・教えてあげたの例に準拠して提出してください。 rev.1: 問題番号のミスを訂正.