무너지는 매트릭스

관련 : 하자의 디자인 숫자 모자이크 , 인쇄 / 출력합니다 L-phabet . 샌드 박스 게시물은 여기

주어진 2 개의 입력이 C = columns and rows, S = starting point다음과 같이 행렬을 출력합니다.

Input 4, 3

1   2   3   0
2   2   3   0
3   3   3   0
0   0   0   0

설명

주어진 C = 4, S = 3

1) C x C채워진 행렬 만들기0

         4 columns
4     _____|____
     |          |
r  --0  0   0   0
o |  0  0   0   0
w |  0  0   0   0
s  --0  0   0   0

2) S행과 열에 값 을 입력 S한 다음에서 1을 빼고 S까지 반복 S = 0합니다. 이 경우S = 3

             Column 3
S = 3           |
                v
        0   0   3   0
        0   0   3   0
Row 3-->3   3   3   0
        0   0   0   0


         Column 2
S = 2       |
            v
        0   2   3   0
Row 2-->2   2   3   0
        3   3   3   0
        0   0   0   0


     Column 1
S=1     |
        v
Row 1-->1   2   3   0
        2   2   3   0
        3   3   3   0
        0   0   0   0



Final Result

1   2   3   0
2   2   3   0
3   3   3   0
0   0   0   0

규칙

  • 취하다 C >= S >= 0
  • 출력은 행렬, 목록 목록, 배열 (1 차원 또는 2 차원) 등이 될 수 있습니다.
  • 기본 I / O 형식을 통해 입력 할 수 있습니다
  • 프로그램, 기능 등은 1 인덱싱 또는 0 인덱싱 일 수 있습니다. 어느 것을 지정하십시오.

참고 설명은 1- 인덱싱입니다


승리 기준



답변

젤리 , 8 바이트

»>⁴¬×»µþ

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

작동 원리

젤리의 외부 제품 원자 ( þ)

Jelly의 외부 곱 원자 인을 þ정수 인수 Y (이 경우 X = Y = first argument  )가 주어지면 다음과 같은 튜플 행렬을 생성 하는 빠른 (연산자) 라고 생각할 수 있습니다 .

엑스

와이

엑스=와이=첫 번째 주장 

[(1,1)(2,1)(,1)(엑스,1)(1,2)(2,2)(,2)(엑스,2)(1,와이)(2,와이)(,와이)(엑스,와이)]

또한 모든 쌍에 바로 링크를 적용합니다. 는 두 개의 인수를 사용하여 다음과 같은 것을 생성하는 함수처럼 작동합니다.

에프

[에프(1,1)에프(2,1)에프(,1)에프(엑스,1)에프(1,2)에프(2,2)에프(,2)에프(엑스,2)에프(1,와이)에프(2,와이)에프(,와이)에프(엑스,와이)]

현재 진행중인 작업과 어떤 관련이 있습니까?

이것은 예상 된 출력의 모든 값이 최대 인덱스 테이블 일 뿐이며이 최대 값이 두 번째 인수를 초과하면 임을 알 수 있습니다. 따라서이 맵핑을 수행하기 위해 다음 링크를 작성할 수 있습니다.

0

»>⁴¬×» – Dyadic (2-argument) link.
»      – Maximum of the X, Y coordinates.
 >⁴    – Check if this exceeds the second argument of the program.
   ¬   – Negate this boolean.
    ×» – And multiply by the maximum, computed again.


답변

R , 47 41 바이트

function(C,S,m=outer(1:C,1:C,pmax))m*!m>S

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

1- 색인. S==C(0이 아님)에 대한 출력을 생성 한 다음 >S행렬 곱셈을 사용하여 값이있는 셀을 0으로 만듭니다 (4 바이트에 대해 Giuseppe에게 감사합니다!).


답변

옥타브 , 31 바이트

@(C,S)(u=max(t=1:C,t')).*(u<=S)

행렬을 반환하는 익명 함수 1 기반 인덱싱을 사용합니다.

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


답변

하스켈 , 47 45 바이트

출력 형식을 1 차원 목록으로 변경하여 -2 바이트

c&s|x<-[1..c]=[sum[j|j<=s]|j<-x>>=(<$>x).max]

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

설명

이 용어 x >>= (<$> x) . max는 골프 버전입니다

concat [ max i <$> x | i <- x ]

로 평가됩니다 [1,2,3,4..c, 2,2,3,4..c, 3,3,3,4..c, ..., c,c,c,c..c]. 이제 우리 가 달성 0한 값을 초과 하면 값을 강제로 설정하면됩니다 .ssum [ j | j <= s]


답변

APL (Dyalog Classic), 12 바이트

{⍺ ⍺↑∘.⌈⍨⍳⍵}

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

이것을 열차로 바꾸는 데 필요한 정보는 바로 welocome입니다.


답변

APL (Dyalog) , 12 바이트

o×⎕≥o←∘.⌈⍨⍳⎕

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


답변

자바 스크립트 (ES6), 61 바이트

태닝 구문 입력을 받아 (c)(s), s는 1 인덱스이다. 1 차원 배열을 반환합니다.

c=>s=>[...Array(c*c)].map((_,k)=>(k=k%c>k/c?k%c:k/c)<s?-~k:0)

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