회문수는 같은 방식으로 읽습니다. 2 자리 수 숫자의 곱으로 만든 최대 회문은 9009 = 91 × 99
입니다.루비 (Ruby) - 매개 변수에서 하나씩 순차적으로 정수를 줄이고 이들과 반복합니다.
세 자리 숫자 숫자로 이루어진 최대 회 전기를 찾으십시오. 저는 루비와 코딩에 매우 익숙합니다. 그래서 꽤 오랫동안 고심하고 있습니다. 여기에 내가 무엇을 가지고 :
def biggest(num, num2)
total = num * num2
x = total.to_s.split('')
until x[0] == x[-1] && x[1] == x[-2] && x[2] == x[-3]
num = num - 1
num2 = num2 - 1
total = num * num2
x = total.to_s.split('')
end
return x
end
p biggest(999, 999)
문제는이 동시에 두 PARAMS을 감소시키고 잘못된 답을 준다이다. 한 번에 하나의 숫자 만 줄여야한다고 생각합니다 : 999 - 1 * 999
, 조건을 충족시키지 못하면 다른 숫자를 낮추십시오 : 999 - 1 * 999 - 1
. 그리고이 사실을 반복 할 때까지 계속 반복하십시오.
나는이 방법에 대한 최선의 방법이 아니라는 것을 알고 있습니다. 수학적인 측면에서도 잘못이라고 생각하지만 방금 배우기 때문에이 코드를 개선 할 수있는 방법에 대해 통찰력을 주시기 바랍니다. 선택적인 접근 방식은 대단히 환영 할 만하다. 여기서 가장 중요한 것은 내 실수를 고치는 방법이다. 당신이 자신을 발견 당신이 모두 num
및 num2
따라서 [i, i]
쌍보다는 [i, j]
반복 감소하기 때문에
당신이 이중 (중첩) 루프가 필요합니다 (두 번째 인덱스가
x
보다는100
부터 시작합니다 그냥 최적화)입니다. 숫자를 순환시키는 논리와 숫자가 회문인지 여부를 확인하는 논리를 분리해야합니다. 반복을 위해서'while'이나'until' 대신에 범위 나'Integer # downto' 메쏘드를 사용하십시오. –덕분에, 나는 그것을 시도 할 것이다 –