hama_duのブログ

ノンジャンル記事置き場

プログラミングが苦手な人向けの課題

ことのあらまし

研究室内にてプログラミングが苦手な人向けの課題を出してみたところ、思いの外好評だったので、ここでも公開してみます。

対象者

授業や課題以外でプログラミングに触れたことがない人。プログラミング自体にはある程度慣れてきたけど、プログラムの規模が少しでも大きくなると、どのように書いたらいいのか分からなくなってしまう人。

注意

  • プログラミング言語は何を使ってもOKです。
  • 課題は複数の小課題から成ります。
    • ひとつの小課題をクリアしてから、次に進んでください。
    • 小課題ができたら、先輩などにコードを見せてフィードバックをもらいましょう。

小課題1

問題1

2つの手を標準入力から受け取って、じゃんけんの結果を標準出力に出力せよ。入力は次の形式で与えられる。

aの手 bの手

aの手とbの手が半角スペース区切りで一行に与えられる。また aの手, bの手 は {R, S, P} のどれかであり、それぞれ R : グー, S : チョキ, P : パー を表す。aが勝つなら 1, bが勝つなら -1, 引き分けなら 0 を出力せよ。

問題2

はじめに、勝負数 m が与えられる。続くm行には、aと同様にプレイヤの手が2個ずつ与えられる。その回数だけじゃんけんが続くようにせよ。入力は次の形式で与えられる。

m
1回目のaの手 1回目のbの手
2回目のaの手 2回目のbの手
...
m回目のaの手 m回目のbの手

各じゃんけんごとに、aが勝つなら 1, bが勝つなら -1, 引き分けなら 0 を出力せよ。

問題3

m 回のじゃんけん後に、各プレイヤの勝利数、敗北数、引き分け数を出力するようにせよ。入力形式は 問題2 と同様である。ただし、一回一回のじゃんけんの結果を出力する必要はない。(最後に各プレイヤの勝利数・敗北数・引き分け数が分かれば良い)

小課題2

問題4

今度は、はじめにプレイヤ数 n (>= 2) を受け取ることにする。勝負の数 m はその次の行に与えられる。続く m 行には、プレイヤの手が n 個ずつ与えられる。じゃんけんを多人数で行えるようにプログラムを改良せよ。ただし、一回一回のじゃんけんの結果を出力する必要はない。(最後に各プレイヤの勝利数・敗北数・引き分け数が分かれば良い)

入力は次の形式で与えられる。

n
m
1回目のプレイヤ1の手 1回目のプレイヤ2の手 ... 1回目のプレイヤnの手
2回目のプレイヤ1の手 2回目のプレイヤ2の手 ... 2回目のプレイヤnの手
...
m回目のプレイヤ1の手 m回目のプレイヤ2の手 ... m回目のプレイヤnの手

問題5

次は、たまにじゃんけんに参加しない人も出てくるとする。その人の出した手は - で表す。その時、じゃんけんは残りの人で行うこと。ただし、各じゃんけんには必ず2人以上参加するような入力が与えられる(つまり、1行あたりの - の数は n - 2を超えない)ものとする。入出力の形式は問題4と同じである。

小課題3

問題6

入力をファイルからも行えるようにプログラムを変更せよ。そのファイルパスはコマンドライン引数(1番目)から与えられるものとする。

問題7

出力をファイルからも行えるようにプログラムを変更せよ。そのファイルパスはコマンドライン引数(2番目)から与えられるものとする。