0
파스칼의 삼각형을 2D 배열로 생성하는 메소드를 작성하려고합니다. 예를 들면 다음과 같습니다 루비의 파스칼 삼각형
pascal(3) # => [[1],[1,1],[1,2,1]]
내 코드입니다 : 내가 행 발전기가 잘 작동 알고
def pascal n
pascal = []
row = [1]
(1...n).each do |i|
#first iteration set pascal equal to [[1]] and row to [1,1]
if i.zero?
pascal << row
#sets new value for row for next iteration
row = [1,1]
else
#row generator sets new value for row
row = ([0] + row).zip(row + [0]).collect { |a, b| a + b }
#push row's new value into pascal array
pascal << row
end
end
end
, 나는 IRB와 자신을 테스트했습니다. 마치 실행되지 않은 것처럼 출력은 1...5
입니다.
내 코드에 어떤 문제가 있습니까? 제발, 당신이 볼 수 있듯이, 나는 초보자입니다. 고마워요 :)
답장을 보내 주셔서 감사합니다. 왜 작동하지 않았는지, 반복에 너무 집중하여 돌아 오는 것을 잊었습니다. 바로 디버깅을 시작합니다! – cerealCode
This, BTW는 마지막 질문에서와 똑같은 버그입니다. 관용적으로,'each' 대신에'map'을 사용할 것입니다. 그렇게했다면, 여러분의 코드는 올바르게 동작 할 것입니다. –
알아두면 좋겠지 만, 각지도와지도의 차이점을 잊어 버리는 경향이 있습니다. 범위를'(1 ... n + 1) '로 변경하여 해결했지만 대신 맵을 사용합니다. – cerealCode