도전:
이고 8 개의 고유 한 '폴딩 옵션'중 하나 인 NxN 행렬이 주어지면 빼는 값으로 2D 배열 / 목록을 출력합니다.
여덟 가지 접는 옵션은 다음과 같습니다. 왼쪽에서 오른쪽; 오른쪽에서 왼쪽으로; 위에서 아래로; 아래에서 위로; 왼쪽 상단에서 오른쪽 하단; 오른쪽 위에서 아래로; 왼쪽 아래에서 오른쪽으로; 오른쪽 아래에서 왼쪽으로.
단계별 예제 :
입력 매트릭스 :
[[ 1, 3, 5, 7],
[ 0, 8, 6, 4],
[ 1, 1, 1, 1], (a'th row in the explanation below)
[ 1,25, 0,75]]
접기 옵션을 위에서 아래로 사용하면 다음과 같은 결과가 출력됩니다.
[[ 1,-7,-5,-3],
[ 0,22,-5,68]]
왜? 우리는 위에서 아래로 접습니다. 행렬 크기는 짝수이므로 그대로 보존 할 중간 레이어가 없습니다. '번째 행 에 의해 감산된다 ( - 1 ) '번째 행 (했을 ( - 2 ) '홀수 차원 매트릭스 용 번째 행); 그렇게 됩니다 . 그런 다음 ( a + 1 ) '행 은 ( a - 2 ) '행 ( 홀수 차원 행렬의 경우 ( a - 3 ) '행 이 되었음 )을 뺍니다 . 그래서[1, 1, 1, 1]
[1-0, 1-8, 1-6, 1-4]
[1, -7, -5, -3]
[1, 25, 0, 75]
[1-1, 25-3, 0-5, 75-7]
됩니다 [0, 22, -5, 68]
.
대신 오른쪽 아래에서 왼쪽으로 접는 옵션 (위의 동일한 입력 행렬 사용)을 사용하면 다음과 같은 결과가 출력됩니다.
[[-74, 2, 1, 7],
[ 0, 7, 6],
[-24, 1],
[ 1]]
다음과 같은 접기 빼기
[[1-75, 3-1, 5-4, 7],
[ 0-0, 8-1, 6],
[1-25, 1],
[ 1]]
도전 규칙 :
- 당신은 어떤 팔 개 별개의 문자를 사용할 수있는
[A-Za-z]
범위 또는 별개의 번호를 접히는 옵션. 숫자 또는 이 가장 일반적인 옵션 일 수 있지만 일부 스마트 계산에 대해 범위 내에서 다른 숫자를 사용하려는 경우 자유롭게 수행하십시오. 답에 사용한 접는 옵션을 명시하십시오. - 입력 행렬은 항상 정사각형 NxN 행렬이므로 직사각형 NxM 행렬을 처리 할 필요가 없습니다. 비어 있거나 1x1 행렬을 접을 수 없으므로 도 항상 2 이상입니다.
- 매트릭스의 입력 범위에서 항상 음이 아닌 숫자를 포함하는 것 (출력의 개수 따라서 범위 일 것이다 ).
- (대각선) 접힘 또는 홀수 치수 수직 / 수평 접힘의 경우 중간 '레이어'는 변경되지 않습니다.
- I / O는 유연합니다. 정수의 2D 배열 / 목록 일 수 있습니다. 공백과 줄 바꾸기로 구분 된 문자열로 반환하거나 인쇄 할 수 있습니다. 입력 행렬을 수정하고 없어야
null
하는 숫자 또는[-999, 999]
범위를 벗어난 숫자를 바꿔서 사라 졌음 을 나타낼 수 있습니다. 등
일반적인 규칙:
- 이것은 code-golf 이므로 바이트 단위의 최단 답변이 이깁니다.
코드 골프 언어가 코드 골프 언어 이외의 언어로 답변을 게시하지 못하게하지 마십시오. '모든'프로그래밍 언어에 대한 가능한 한 짧은 대답을 생각해보십시오. - 표준 규칙 은 기본 I / O 규칙으로 답변에 적용 되므로 STDIN / STDOUT, 적절한 매개 변수 및 반환 유형의 전체 프로그램과 함께 함수 / 방법을 사용할 수 있습니다. 당신의 전화.
- 기본 허점 은 금지되어 있습니다.
- 가능하면 코드 테스트 (예 : TIO ) 링크를 추가하십시오 .
- 또한 답변에 대한 설명을 추가하는 것이 좋습니다.
테스트 사례 :
입력 매트릭스 1 :
Input-matrix (for the following eight test cases):
[[ 1, 3, 5, 7],
[ 0, 8, 6, 4],
[ 1, 1, 1, 1],
[ 1,25, 0,75]]
Input-folding option: left-to-right
Output: [[2,6],[-2,4],[0,0],[-25,74]]
Input-folding option: right-to-left
Output: [[-6,-2],[-4,2],[0,0],[-74,25]]
Input-folding option: top-to-bottom
Output: [[1,-7,-5,-3],[0,22,-5,68]]
Input-folding option: bottom-to-top
Output: [[0,-22,5,-68],[-1,7,5,3]]
Input-folding option: topleft-to-bottomright
Output: [[7],[6,-1],[1,-7,-2],[1,24,0,74]]
Input-folding option: topright-to-bottomleft
Output: [[1],[-3,8],[-4,-5,1],[-6,21,-1,75]]
Input-folding option: bottomleft-to-topright
Output: [[1,3,4,6],[8,5,-21],[1,1],[75]]
Input-folding option: bottomright-to-topleft
Output: [[-74,2,1,7],[0,7,6],[-24,1],[1]]
입력 매트릭스 2 :
Input-matrix (for the following eight test cases):
[[17, 4, 3],
[ 8, 1,11],
[11, 9, 7]]
Input-folding option: left-to-right
Output: [[4,-14],[1,3],[9,-4]]
Input-folding option: right-to-left
Output: [[14,4],[-3,1],[4,9]]
Input-folding option: top-to-bottom
Output: [[8,1,11],[-6,5,4]]
Input-folding option: bottom-to-top
Output: [[6,-5,-4],[8,1,11]]
Input-folding option: topleft-to-bottomright
Output: [[3],[1,7],[11,1,-10]]
Input-folding option: topright-to-bottomleft
Output: [[17],[4,1],[8,-2,7]]
Input-folding option: bottomleft-to-topright
Output: [[17,-4,-8],[1,2],[7]]
Input-folding option: bottomright-to-topleft
Output: [[10,-7,3],[-1,1],[11]]
A-Za-z
범위 내에서 문자 나 정수를 사용할 수 [-999,999]
있으므로 순서는 중요하지 않습니다. 죄송하지만 입력을 기반으로 올바른 접기를 출력해야하므로 8 개를 모두 출력 할 수 없습니다.