설명 키워드 (검색 용) : 두 개의 행렬을 동일하게 만들기, 겹침, 배열, 찾기
도전
산타는 과거에 그의 금고에서 선물을 훔친 엘프의 역사를 가지고 있었기 때문에 올해에는 금이 오기 어려운 자물쇠를 설계했으며 올해 엘프를 지키지 못한 것 같습니다. 불행히도, 그는 조합을 잃어 버렸고 그것을 여는 방법을 알 수 없습니다! 다행히 그는 조합을 찾기위한 프로그램을 작성하도록 고용했습니다. 최단 일 필요는 없지만 가능한 빨리 찾아야합니다!
그는 매우 엄격한 일정을 가지고 있으며 오래 기다릴 여유가 없습니다. 점수는 프로그램의 총 런타임에 점수 입력에 대한 프로그램 출력 단계 수를 곱한 값입니다. 최저 점수가 이깁니다.
명세서
잠금은 1과 0의 정사각 행렬입니다. 1과 0의 임의 배열로 설정되며 지정된 코드로 설정해야합니다. 다행히 산타는 필요한 코드를 기억합니다.
그가 수행 할 수있는 몇 가지 단계가 있습니다. 각 단계는 인접한 하위 행렬에서 수행 할 수 있습니다 (즉, 왼쪽 상단 및 오른쪽 하단 모서리로 완전히 경계가 지정된 하위 행렬을 선택해야 함) (비 정사각 하위 행렬 일 수 있음).
- 오른쪽으로 90도 회전 *
- 왼쪽으로 90도 회전 *
- 180도 회전
- 각 행
n
요소를 좌우로 순환 (랩) - 각 열
m
요소를 위 또는 아래로 순환 (랩) - 수평으로 뒤집기
- 세로로 뒤집기
- 주 대각선 뒤집기 *
- 메인 대각선 뒤집기 *
* 하위 행렬이 정사각형 인 경우에만
물론, 그는 전체 매트릭스에서이 단계를 수행 할 수도 있습니다. 1과 0은 매트릭스에서만 교환 할 수 있지만 정사각형 값은 직접 변경할 수 없으므로 1과 0의 수는 시작 및 끝 구성에서 동일합니다.
포맷 사양 + 규칙
원하는 형식으로 입력을 두 개의 정사각 행렬 (시작 위치 및 끝 위치)로 제공합니다. 출력은 읽을 수있는 형식으로 이러한 단계의 순서 여야합니다. 이것은 코드 골프가 아니므로 쉽게 확인할 수있는 형식으로 만드십시오. 그러나 엄격한 요구 사항은 아닙니다. 원하는 경우 입력에서 행렬의 측면 길이를 가져 오도록 선택할 수 있습니다.
귀하의 프로그램은 내 컴퓨터에서 실행됩니다 (Linux Mint, 누군가 관심이 있으시면 요청에 따라 정확한 버전 정보가 제공됩니다 : P). 나는 명령 행에서 "enter"를 누른 시간과 명령이 종료됩니다.
테스트 사례
1 0 0 1 0 0 0 0
0 1 1 0 -> 0 0 0 0
0 1 1 0 -> 1 1 1 1
1 0 0 1 1 1 1 1
- 전체 매트릭스를 가져옵니다. 각 열을 순환 시키십시오.
- 중간 두 열을 하위 행렬로 가져갑니다. 각 열을 아래로 순환시킵니다 .2.
1 0 1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1 0 1
1 0 1 0 1 -> 0 1 1 1 0
0 1 0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0 1 0
- 전체 매트릭스를 가져옵니다. 각 열을 아래로 순환 시키십시오.
- 가운데 열을 가져 가라. 아래로 순환 시키십시오 2.
- 상위 2 개 행을 가져옵니다. 세로로 뒤집습니다.
- 맨 윗줄의 가장 오른쪽에있는 2 개의 요소를 가져옵니다. 그것들을 교환하십시오 (오른쪽 / 왼쪽으로 1 회전, 수평으로 뒤집기).
- 맨 윗줄의 가장 왼쪽에있는 2 개의 요소를 가져옵니다. 그것들을 교환하십시오.
더 효율적인 방법이있을 수 있지만 중요하지 않습니다. 당신이 비록 하나를 찾으면 의견에 자유롭게 지적하십시오 :)
테스트 케이스 판단
이 테스트 케이스는 제출을 판단하는 데 사용됩니다. 답변이 테스트 사례를 너무 많이 전문화한다고 생각되면 임의의 입력을 다시 선택하여 새 사례로 모든 답변을 다시 판단 할 권리가 있습니다. 테스트 케이스를 찾을 수 여기 가기 시작이고, 바닥이 원하는 구성이다.
답변이 너무 전문화되어 있다고 생각되면 다음 테스트 사례의 MD5는 3c1007ebd4ea7f0a2a1f0254af204eed
입니다. (이것은 속임수의 비난에서 자신을 자유롭게하기 위해 지금 여기에 기록되었습니다 : P)
표준 허점이 적용됩니다. 응답이 없습니다. 행복한 코딩!
참고 : Advent Of Code 에서이 챌린지 시리즈에 대한 영감을 얻었습니다 . 이 사이트와 관련이 없습니다
여기서 첫 번째 도전 과제의 '링크 된'섹션을 보면 시리즈의 모든 도전 과제 목록을 볼 수 있습니다 .
0
및 641
가 있으며256 choose 64 ≈ 1.9 × 10⁶¹
도달 가능한 총 행렬이 있습니다. (Megaminx와 비교할 수 있으며 교수의 큐브보다 훨씬 적지 만 Rubik의 복수보다 큼)