問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
この問題は、弊社営業社員が競技プログラミングに挑戦したものです。
https://youtu.be/Vf2RFjXCmZY
ある図形に対し、線対称、点対称は次のように定義されます。
・線対称:ある直線を折り目にして折りたたんだとき、折り目の両側がぴったり重なること
・点対称:ある一点で180度回転させたとき、もとの図形とまったく同じ形になること
この問題では、ドット絵に対する線対称、点対称を以下のように定義します。
・線対称:ドット絵の中心を通る垂直、または水平な直線で折りたたんだとき、折り目の両端がぴったり重なること
(斜めの直線を折り目にすることは考えません。)
・点対称:ドット絵の中心で180度回転させたとき、もとの図形とまったく同じ形になること
n×mのドット絵が入力されるので、そのドット絵が線対称であるか、点対称であるか、その両方か、そのどちらかでもないかを判定するプログラムを作成してください。
入力は以下のフォーマットで与えられます
n m
d_1
d_2
...
d_n
・入力される文字列数n
・d_1, d_2, ..., d_n は # または . で構成される長さmの文字列
・入力はn + 1行となり、末尾に改行を一つ含みます。
ドット絵が
・線対称であるとき、line symmetry
・点対称であるとき、point symmetry
・線対称かつ点対称であるとき、line point symmetry
・線対称でも点対称でもないとき、none
を出力してください。
すべてのテストケースにおいて、以下の条件をみたします。
1 ≤ n, m ≤ 20
2 3
###
...
line symmetry
3 4
##..
#..#
..##
point symmetry
5 4
##..
##..
.##.
.##.
....
none