최소 중심화


11

주제와 관련이 있습니다.

목적 : 양의 정수 매트릭스 주어 출력 최소 중심 대칭 행렬 포함 M을 (이 행렬은 물론 비 - 양의 정수를 포함 할 수있다).MM

중심 대칭 행렬은 차수가 2 인 정방 행렬입니다. 즉, 두 번 회전 한 후에도 동일한 행렬이 유지됩니다. 예를 들어, 중심 대칭 행렬은 왼쪽 위 요소가 오른쪽 아래 요소와 동일하고 중심 위 요소가 중심 아래 요소와 동일합니다. 유용한 시각화는 여기 에서 찾을 수 있습니다 .

더 형식적으로, 매트릭스의 소정의 , 정방 행렬 생성 N 되도록 N이 인 중심 대칭성 및 M N을 , 그리고 다른 정방 행렬 없다 K 그러한 희미한 K < 희미 N은 .MNNMNKdimK<dimN

는각 값 A i , j 가일부 정수 쌍 ( i ' , j ' )에 대해인덱스 B i + i ' , j + j ' 에나타나는경우 B 의 서브 세트입니다(표시 : A B ) .ABABAi,jBi+i,j+j(i,j)

참고 : 일부 행렬은 여러 솔루션 (예 :이 [[3,3],[1,2]]같은 해결되고 [[2,1,0],[3,3,3],[0,1,2]]또는 [[3,3,3],[1,2,1],[3,3,3]]); 유효한 솔루션 중 하나 이상을 출력해야합니다.

테스트 사례

input
example output

[[1, 2, 3],
 [4, 5, 6]]
[[1, 2, 3, 0],
 [4, 5, 6, 0],
 [0, 6, 5, 4],
 [0, 3, 2, 1]]

[[9]]
[[9]]

[[9, 10]]
[[9, 10],
 [10, 9]]

[[100, 200, 300]]
[[100, 200, 300],
 [  0,   0,   0],
 [300, 200, 100]]

[[1, 2, 3],
 [4, 5, 4]]
[[1, 2, 3],
 [4, 5, 4]
 [3, 2, 1]]

[[1, 2, 3],
 [5, 6, 5],
 [3, 2, 1]]
[[1, 2, 3],
 [5, 6, 5],
 [3, 2, 1]]

[[4, 5, 4],
 [1, 2, 3]]
[[3, 2, 1],
 [4, 5, 4],
 [1, 2, 3]]

[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
 [1, 1, 1, 9, 9, 9, 9, 9, 9, 9],
 [1, 1, 1, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 1]]
[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9],
 [1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1],
 [9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]

중심 대칭 행렬이 정사각형이어야하는 이유는 무엇입니까?
Ad Hoc Garf Hunter 5

@WW는 일반적인 의미에서 그럴 필요는 없다고 생각합니다. 그러나이 질문에 대해서는 정의에 따라 정사각형이어야합니다.
Conor O'Brien

당신이 선택하게하는 이유 궁금 해서요
특별 Garf 헌터

2
@WW 그것은 명확성을 위해 유용하다고 생각한 단순화였습니다
Conor O'Brien

답변:


8

Brachylog , 12 바이트

ṁ↔ᵐ↔?aaᵐ.&≜∧

온라인으로 사용해보십시오!

대부분의 Brachylog 답변과 달리, 이것은 출력 변수를 통해 입력을 취하고 .입력 변수를 통해 결과를 출력합니다 ?(혼란합니다, 알고 있습니다).

설명

ṁ              We expect a square matrix
 ↔ᵐ↔?          When we reverse the rows and then the matrix, we get the initial matrix back
    ?a         Take an adfix (prefix or suffix) of that square matrix
      aᵐ       Take an adfix of each row of that adfix matrix
        .      It must be the input matrix
         &≜    Assign values to cells which are still variables (will assign 0)
           ∧   (disable implicit unification between the input and the output)

8 바이트, 유효한 모든 행렬을 제공

기술적 으로이 프로그램은 다음과 같이 작동합니다.

ṁ↔ᵐ↔?aaᵐ

그러나 이것은 모든 값을 취할 수있는 셀을 변수로 남겨 둡니다 ( _XXXXX내부 프롤로그 변수 이름 인으로 표시). 기술적으로 이것은 요청 된 것보다 낫지 만 도전이 요구하는 것이 아니라고 생각합니다.


I 소원은 ... 라벨을 지연 않았다
에릭 Outgolfer

@EriktheOutgolfer 인스턴트 레이블링은 항목을 열거해야 할 때 여전히 유용하므로 이상적으로 두 가지 술어가 필요합니다.
Fatalize

4

자바 스크립트 (ES6), 192 (180) 177 바이트

f=(m,v=[w=0],S=c=>v.some(c))=>S(Y=>S(X=>!m[w+1-Y]&!m[0][w+1-X]&!S(y=>S(x=>(k=(m[y-Y]||0)[x-X],g=y=>((r=a[y]=a[y]||[])[x]=r[x]||k|0)-k)(y)|g(w-y,x=w-x)),a=[])))?a:f(m,[...v,++w])

온라인으로 사용해보십시오!

연산

=0

  • 미디엄+1
  • (엑스,와이)미디엄

    예:

=2,(엑스,와이)=(0,1),미디엄=(4,5,41,2,)미디엄=(0,0,04,5,41,2,)
  • 중심 대칭이되도록 행렬을 완성 할 수 있는지 테스트합니다.

    예:

미디엄'=(,2,14,5,41,2,)



1

클로저 254 바이트

(defn e[l m](let[a map v reverse r repeat t concat c count f #(v(a v %))h(fn[x](t(a #(t %(r(- l(c(first x)))0))x)(r(- l(c m))(r l 0))))k(fn[x](a(fn[v w](a #(if(= %2 0)%1 %2)v w))x(f x)))n(k(h m))o(k(h(f m)))z #(= %(f %))](if(z n)n(if(z o)o(e(inc l)m)))))

징 키스, 스쿠 브

온라인으로 사용해보십시오!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.