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