우리가 어떤 polyomino 를 가지고 있고 그것들을 유일하게 식별하고 싶다고 상상 하지만, polyominos는 회전 될 수 있기 때문에, 그것들을 맹목적으로 해싱하면 조각에 대한 동일한 지문과 그 회전 (일반적으로)을 우리에게주지 않을 것입니다.
예를 들어 L-tetromino가 있다면
x
x
xx
우리는 다음과 같은 지문을 갖기를 원합니다.
xx
x x xxx
xxx , x or x
참고 : 평면에서의 회전 만 허용하므로 (즉, 단면 폴리오 미노 임) 다음 폴리오 미노는 다른 것입니다.
x
x
xx
도전
이 과제의 과제는 Boolean / valued matrix / list / string / list of list / string / .. 를 사용하는 지문 인식 기능 / 프로그램을 구현하는 것입니다 . polyomino를 인코딩하고 문자열을 반환합니다. 폴리오 미노. 가능한 모든 회전에 대해 지문이 동일해야합니다 (일반적으로 4).
입출력
- , N ≥ 1 및 (즉, 빈 polyomino 없음)
- 이 가능한 작다 는 것을 보장 합니다 (즉, 모든 은 과 에 맞게 다듬어집니다)
- 당신은 입력이 보장된다
- 단순히 연결
- 구멍이 없다
- 출력은 polyomino의 가능한 모든 회전에 대해 동일한 문자열이어야합니다.
예
다음은 등가 클래스입니다. 각 클래스마다 지문이 동일해야하며 두 개의 개별 클래스에서 나오는 두 개의 폴리오 미노의 경우 서로 달라야합니다.
예에서 L-teminomino의 회전 :
[[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]]
""
빈 문자열을 출력 하면 모든 요구 사항이 충족 되었습니까?