---
# System prepended metadata

title: 卒業研究

---

### 目標
プログラミング能力のテストを作成する

### プログラミング能力のテスト
プログラミング能力の細分化を行った結果、それぞれの要素だけを問うような問題を作成することが難しかったため、言語に左右されない測定方法として、去年の大口さんの卒論のように、ロボットを動かすプログラムゲームのような問題を用いる。
問題の内容として、大口さんの卒論の問題は去年受けてしまっているため、別の問題を考え、問題数は10問を予定している。
また、測定したい内容はコードの長さのみなので、インセンティブなしで命令数のみを用いる。

### 具体的な問題
![](https://hackmd.io/_uploads/BkLc3_rs3.png)

上記のような5×5マス上において、ロボットを壁を避けながらすべての緑マスへ一度移動させる。ロボットの移動は、命令コードが決まっているためその組み合わせによって決定する。回答では、問題ごとの命令コード、回答時間を求める。

命令コードは以下の7種類である。
命令番号-----移動内容
[1]-----1マス移動
[2]-----2マス移動
[S]-----壁に衝突するまで移動
[R]-----右に90度回転
[L]-----左に90度回転
[T]-----180度回転
[()×N]-----カッコ内の命令をN回繰り返す

その他の条件として
• 緑マスへの移動判定は、ロボットが緑マスを通過したかではなく一時停止したかで判断する
• 緑マスへの移動は、同一マスに何度一時停止しても良い
• ロボットの最終停止位置の指定は無い
• ロボットの初期方向は、三角形の頂点の方向を向いている
• 黒の太線は壁であり、その先に進むことはできない
• 移動命令(1・2・S)にて壁にぶつかって進めない場合、不正解でなく次の命令コードが実行される
• ()×Nの命令は、(()×N)×Nのように入れ子構造にして良い
• 命令数の数え方は、1コード1命令と数える

問題例1
![](https://hackmd.io/_uploads/SkS3n_Bih.png)

問題例2
![](https://hackmd.io/_uploads/Hyr22_ro3.png)

問題例3
![](https://hackmd.io/_uploads/rkH2hOBj3.png)


### 次回の目標
全ての問題を完成させ、実際に出題できるような形式に調整する

### これまでのまとめ
[第3回資料](https://hackmd.io/@pqTDMBWNR8O22goa19KCpg/BkfrXWxrn)
[第4回資料](https://hackmd.io/@pqTDMBWNR8O22goa19KCpg/ryqYjvz8h)
[第5回資料](https://hackmd.io/@pqTDMBWNR8O22goa19KCpg/SJNnyWh8h)
[第6回資料](https://hackmd.io/@pqTDMBWNR8O22goa19KCpg/Bk50XlrD2)
[第8回資料](https://hackmd.io/@pqTDMBWNR8O22goa19KCpg/HyL_JEP_h)
[第10回資料](https://hackmd.io/@pqTDMBWNR8O22goa19KCpg/BJ0JCYgth)
[第11回資料](https://hackmd.io/@pqTDMBWNR8O22goa19KCpg/HJGz8dXqn)