을 가져 오지 않고 마법의 사각형을 형성 이미 아래에있는 프로그램의 한 부분을 썼다 경우 부울 true를 반환하는 함수를 작성 :행렬 NumPy와
def matrix_is_square(matrix):
for i in range(len(matrix)):
if len(matrix[i]) != len(matrix):
return False
return True
행렬은 정방 행렬 인 경우이 기능은 True를 반환, 그렇지 않으면 False를 반환합니다.
그러나 문제는 여기에 있습니다.
나는 함수가 Magic square인지 결정하는 두 번째 함수를 작성해야합니다.
정방 행렬은 다음 조건이 충족되는 경우 마방진 형성 : 행렬의
- 요소 숫자 1,2,3됩니다, ..., N 2
- 합
012 : 각 열 및 두 대각선의 각 행 내의 요소들의def magic(matrix): if(not(is_square(matrix))): return False # The remaining code
가
코드가 처음 시작 값과 동일
이것은 내가 시도한 것입니다.
square = []
for i in range(len(matrix)):
square.append([])
for j in range(len(matrix)):
square[i].append(0)
total = 0
x = len(matrix)
for i in range(x):
total += square[i][i]
if total != x*(x*x+1)/2:
return False
else:
return True
total = 0;
for i in range(x):
total += square[i][x-1-i]
if total != x*(x*x+1)/2:
return False
else:
return True
내 코드에 몇 가지 오류가있는 것 같습니다. 중요한 것은 숫자가 정확하게 부동 소수점으로 표시 될 수 없기 때문에 숫자의 정확한 평등을 테스트한다는 것입니다. 그러나이를 수행 할 다른 방법을 찾을 수는 없습니다. 모든 힌트를 부탁드립니다.
다음은이 기능이 예상 한 결과이며 동일한 페이지에 있습니다.
진정한
[[2,7, 6],[9,5,1],[4,3,8]]
[[16,3,2,13], [5,10,11,8],[9,6,7,12], [4,15,14,1]]
거짓
[[1,2,3,4], [5,6,7,8],[9,10,11,12], [13,14,15,16]]
[[1,1],[1,1]]
[[1,1],[1,1],[1,2]]
없음 수입 NumPy와.
프로그램이 무엇을 설명하고 당신이 그것을 할 수 있다고 생각 어디하세요 잘못되어가는. 또한 코드를보다 일관된 형식으로 게시하여 문제를 쉽게 재현 할 수 있도록하십시오.이것은 이미 읽었어야하는 소개 투어에 포함되어 있습니다. – Prune
합계에 수식을 사용하지 마십시오. 첫 번째 행의 정수 합을 기억하고이를 비교로 사용하십시오. – chepner
@ cricket_007, 정의를보십시오 : 정수 1-N을 사용해야합니다. – Prune