관련 : 하자의 디자인 숫자 모자이크 , 인쇄 / 출력합니다 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 )가 주어지면 다음과 같은 튜플 행렬을 생성 하는 빠른 (연산자) 라고 생각할 수 있습니다 .
와이
엑스=와이=첫 번째 주장
또한 모든 쌍에 바로 링크를 적용합니다. 는 두 개의 인수를 사용하여 다음과 같은 것을 생성하는 함수처럼 작동합니다.
에프
현재 진행중인 작업과 어떤 관련이 있습니까?
이것은 예상 된 출력의 모든 값이 최대 인덱스 테이블 일 뿐이며이 최대 값이 두 번째 인수를 초과하면 임을 알 수 있습니다. 따라서이 맵핑을 수행하기 위해 다음 링크를 작성할 수 있습니다.
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에게 감사합니다!).
답변
답변
하스켈 , 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
한 값을 초과 하면 값을 강제로 설정하면됩니다 .s
sum [ j | j <= s]
답변
답변
답변
자바 스크립트 (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)