일반적인 2차원 패턴
Coddy Ruby 여정의 로직 및 흐름 섹션에 포함된 레슨. 56개 중 13번째.
일부 2D 배열 연산은 너무 자주 사용되므로 이름을 알아둘 가치가 있습니다.
모든 셀의 합: grid를 1D 배열로 flatten하고 sum을 호출하세요:
grid = [[1, 2], [3, 4]]
puts grid.flatten.sum # 10주대각선: 행 인덱스가 열 인덱스와 같은 셀(matrix[i][i]):
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
(0...matrix.length).each do |i|
puts matrix[i][i]
end
# 1, 5, 9Transpose: Ruby에는 이 기능이 내장되어 있습니다. 행이 열로, 열이 행으로 바뀝니다:
matrix.transpose
# [[1, 4, 7], [2, 5, 8], [3, 6, 9]]이러한 이름을 알고 있으면 동일한 중첩 루프를 다시 작성하지 않아도 됩니다.
챌린지
쉬움정사각형 matrix가 주어진다(n × n). 이론의 패턴에서 도출된 세 줄을 출력하라:
Anti-diagonal sum: <n>,r + c == matrix.length - 1인 셀의 합Column sums: [...], 각column의 합. 힌트: 먼저transpose한 다음 각 행을 해당sum으로 매핑하고, 그다음inspect하라Symmetric: true또는false:matrix가 자신의transpose와 같은가?
기본 matrix의 출력은 다음과 같다:
Anti-diagonal sum: 15
Column sums: [12, 15, 18]
Symmetric: false직접 해보기
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# TODO: anti-diagonal sum, column sums via transpose, symmetric check
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
로직 및 흐름의 모든 레슨
직접 연습해 보세요: 온라인 Ruby 컴파일러