Die question Ich arbeite an ist:Optimierung für die Suche nach perfekten-Square-Algorithmus
Finden die Summe der quadratischen Faktoren sind ein perfektes Quadrat einen bestimmten Bereich gegeben. Also, wenn der Bereich (1..10) war, würden Sie die Faktoren jeder Zahl erhalten (alle Faktoren für 1, alle Faktoren für 2, alle Faktoren für 3 usw.). Quadrieren Sie diese Faktoren und fügen Sie sie dann zusammen. Prüfen Sie abschließend, ob diese Summe ein perfektes Quadrat ist.
Ich bin auf Refactoring/Optimierung stecken, weil meine Lösung zu langsam ist. Hier
ist, was ich kam mit:
def list_squared(m, n)
ans = []
range = (m..n)
range.each do |i|
factors = (1..i).select { |j| i % j == 0 }
squares = factors.map { |k| k ** 2 }
sum = squares.inject { |sum,x| sum + x }
if sum == Math.sqrt(sum).floor ** 2
all = []
all += [i, sum]
ans << all
end
end
ans
end
Dies ist ein Beispiel dessen, was ich in der Methode setzen würde:
list_squared(1, 250)
Und dann der gewünschte Ausgang würde ein Array von Arrays sein mit jedem Feld, das die Zahl enthält, deren Summe der quadrierten Faktoren ein perfektes Quadrat war, und die Summe dieser quadrierten Faktoren:
[[1, 1], [42, 2500], [246, 84100]]
Wofür optimieren Sie? Performance? Speichernutzung? Lesbarkeit? – spickermann
Wenn Ihr Code ausgeführt wird, ziehen Sie in Betracht, Ihre Frage zu [codereview.se] zu verschieben. –