ポリオミノをいくつか持っており、それらを一意に識別したいと考えていますが、ポリオミノは回転させることができます。
たとえば、L-テトロミノを持っている場合
x
x
xx
次のいずれかと同じフィンガープリントが必要です。
xx
x x xxx
xxx , x or x
注:平面上での回転のみが許可されている(つまり、片側のポリオミノである)ため、次のポリオミノは異なるものになります。
x
x
xx
チャレンジ
この課題のためにタスクがかかりフィンガープリント機能/プログラムを実装することであるブール/ リスト/列の-valuedマトリックス/リスト/ ..ポリオミノ戻る文字列コード-ポリオミノの指紋を。指紋は、可能なすべての回転に対して等しくなければなりません(一般的に4)。
入出力
- と(すなわち、無空ポリオミノ)
- あなたは、が可能な限り小さいことを保証されます(すなわち、すべてはとnに合うようにトリミングされます
- 入力が保証されます
- 単純に接続された
- 穴がない
- 出力は、ポリオミノの可能な各回転に対して同じ文字列でなければなりません
例
いくつかの等価クラスがあります。各クラスのフィンガープリントは同じである必要があり、2つの異なるクラスの2つのポリオミノは異なる必要があります。
例のL-テトロミノの回転:
[[1,0],[1,0],[1,1]]
[[0,0,1],[1,1,1]]
[[1,1],[0,1],[0,1]]
[[1,1,1],[1,0,0]]
J-テトロミノ:
[[0,1],[0,1],[1,1]]
[[1,1,1],[0,0,1]]
[[1,1],[1,0],[1,0]]
[[1,0,0],[1,1,1]]
単位ポリオミノ:
[[1]]
バー:
[[1,1,1,1,1]]
[[1],[1],[1],[1],[1]]
のコーナー:
[[1,1],[1,0]]
[[1,0],[1,1]]
[[0,1],[1,1]]
[[1,1],[0,1]]
W-ペントミノ:
[[1,0,0],[1,1,0],[0,1,1]]
[[0,0,1],[0,1,1],[1,1,0]]
[[1,1,0],[0,1,1],[0,0,1]]
[[0,1,1],[1,1,0],[1,0,0]]
""
(空の文字列)、すべての要件を満たしていますか?