No.3802 Crossword Key
問題文
$H \times W$ の大きさのクロスワードがあります。
フレロビくんはクロスワードを作りましたが、どこにカギがあるのか忘れてしまいました。
$H \times W$ の盤面が、 $H$ 個の文字列 $S_1,S_2,\cdots,S_H$ によって与えられます。
上から $i$ 番目、左から $j$ 番目のマスは、 $S_i$ の $j$ 文字目が # の場合は黒マス、 . の場合は白マスです。
カギの数と、それぞれのカギの位置を求めるプログラムを作成してください。
ただし、カギのある位置は、次の条件のいずれかを満たすものとします。
- 横のカギ: そのマスが白マスかつ、そのマスの左が黒マスまたは盤面の外であり、そのマスの右が白マスである。
- 縦のカギ: そのマスが白マスかつ、そのマスの上が黒マスまたは盤面の外であり、そのマスの下が白マスである。
横のカギと縦のカギが重複する場合があることに注意してください。その場合はどちらも同じ添字を使います。
また、カギの添字は1から始まり、盤面の上側の方が小さく、同じ行では左側が小さいものとします。
カギの数は、カギの添字の最大値に等しいです。
この問題の制約上では、カギが少なくとも1つは存在します。
制約
- $2 \le H,W \le 100$
- $S_i$ は
#または.で構成される長さ $W$ の文字列 - $H,W$は整数
- $S$ に
.が少なくとも2つは含まれる - 全ての
.には少なくとも上下左右のいずれかに他の.が隣接している
入力
$H\ W$ $S_1$ $S_2$ $\vdots$ $S_H$
出力
カギの数を $K$ とします。 添字 $i$ のカギの位置を上から $R_i$ 番目、左から $C_i$ 番目として、次のように出力してください。
$K$ $R_1\ C_1$ $R_2\ C_2$ $\vdots$ $R_K\ C_K$
最後に改行してください。
サンプル
サンプル1
入力
3 5 ##### #...# #####
出力
1 2 2
このクロスワードは、上から2番目、左から2番目のマスにある横のカギのみあります。 全くクロスしていませんが、クロスワードとして扱います。
サンプル2
入力
4 4 .... .#.# ##.# ....
出力
3 1 1 1 3 4 1
上から1番目、左から1番目のマスに横と縦のカギ、
上から1番目、左から3番目のマスに縦のカギ、
上から4番目、左から1番目のマスに横のカギがあります。
このように、横のカギと縦のカギが重複する場合もあります。
サンプル3
入力
6 6 ...### .##### .####. #####. #####. ###...
出力
3 1 1 3 6 6 4
盤面が分離していることもあります。
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。
ふらわぁ