第6回(OOP-第2回)
スライド
参考プログラム
code:復習問題(再帰)(python)
def nisebonacchi(a1,a2,n):
# 再帰プログラムを書く
print ----
s = input() # 単に入力を待つならこう(工夫ができたりするよ。今回の趣旨とは違うのでここはおまかせ。)
# 文字を処理してa1,a2,nを数値として取り出す
print(nisebonacchi(a1,a2,n))
チャレンジ問題
<問題>
正方形のタイルが敷き詰められた長方形の部屋がある.
タイルの色は赤か黒 である.
最初に一人の人が部屋の黒いタイルの上に立っている.
あるタイルからは隣接する四つのタイルに移動することができる.
ただし,赤いタイルの上に移動することはできない.
移動できるのは黒いタイルの上だけである.
上記の移動を繰り返すことによって到達できるタイルの数を答えるプログラムを書きなさい.
<入出力>
入力は複数のデータセットからなる.データセットは,WとHと いう二つの正の整数からなる行で始まる.WとHは部屋のx方向, y方向にタイルがいくつ並ぶかを表す.WとHは20以下である.
その後ろにH行続く.それぞれの行にはW個の文字が含まれてい る.それぞれの文字は次に示すようにタイルの状態を表す.
'.' - 黒いタイル
'#' - 赤いタイル
'@' - 黒いタイルの上の人(一つのデータセットに1度だけ出現)
入力の終わりは0を二つ含む行で表される.
入力のデータセットごとに, 最初の位置から到達可能なタイルの数を1行で出力しなさい(最初のタイルも含む).
<例>
code:入力(inputを呼び出すたびにこれが1行ずつ読み込まれるとかんがえればよい)
6 9
....#.
.....#
......
......
......
......
......
.#..#.
11 9
.#.........
.#.#######.
.#.#.....#.
.#.#.###.#.
.#.#..@#.#.
.#.#####.#.
.#.......#.
.#########.
...........
11 6
..#..#..#..
..#..#..#..
..#..#..###
..#..#..#@.
..#..#..#..
..#..#..#..
7 7
..#.#..
..#.#..
...@...
..#.#..
..#.#..
0 0
code:出力
45
59
6
13
★豆知識
このように、入力の順序がすでに決まっている場合、適当なファイル名をつけて、コンソールから
code:console
python ***.py < ~~~.txt
などと打ち込めば、そのファイルをinputのたびに上から1行ずつ読み込んでくれます。うまいこと活用してください。
code:example(console)
python red_black.py < input.txt // red_black.pyというPythonのコードにinput.txtの中身を入力する