2016-05-27 21 views
-3

我製作紅寶石exercice創建一個方法用於在網格計算N×N的方Ruby計算在NxN方格中有多少個不同的方格?

像如果n = 1,有一個1×1平方= 1

If n = 3, there is one 3-by-3 square, four 2-by-2 squares and nine 1-by-1 squares = 14. 

如果我們繼續上面的序列爲一個任意的n,那麼我們將有一個n×n的正方形,四個(n-1)-by-(n-1)個正方形,九個(n-2)-by-(n-2 )正方形,...和n2 1乘1平方。

我想知道我可以做紅寶石獲得這個

+1

你在問什麼? – Tommyixi

+0

歡迎來到Stack Overflow。請閱讀「[問]」。我們希望看到您爲解決問題所做努力的證據。 SO不是代碼或教程編寫服務。我們希望你做研究和嘗試,嘗試更多,然後再試一次,然後問。 –

回答

2

一般爲n×n的方形網格,方格的總數由

N²+(N-1定義)²+(N-2)2 + ... + 1

在Ruby中,你可以做這樣的事情:

class Number 

    def squares_counter(n) 
    (1..n).map {|e| e*e }.inject(:+) 
    end 

end 

map創建一個正方形數組1n然後inject將它們彙總起來。使用這個我們可以計算棋盤上的正方形數:

num = Number.new 
puts num.squares_counter(8) #=> 204 
+3

您還可以計算[前n個平方的總和](https://www.google.ca/url?sa=t&rct=j&q=&esrc=s&source=web&cd=9&cad=rja&uact=8&ved=0ahUKEwjq89bc3frMAhVk54MKHc8fAysQFghVMAg&url=https%3A %2F%2Fproofwiki.org%2Fwiki%2FSum_of_Sequence_of_Squares&usg = AFQjCNHx53sN43EA66kkI0JuS_p5yK0-iQ&bvm = bv.122676328,d.amc)在O(1)時間。 (n(n + 1)(2n + 1))/ 6 –

+1

好的,sagar。讀者:如果不清楚爲什麼這種方法有效,可以考慮計算'n'x'n'平方米'm'x'm'方格的數量,'m <= n'。每個'm'x'm'方格的左上角必須在第一個「n-(m-1)」行和「n-(m-1)」列中,其中包含'(n-(m -1))** 2''1'x'1'方塊。因此,所有尺寸的平方總數等於'(n-(m-1))** 2'在'm = 1,...,n'上求和,這等於給出的答案。 –

+0

@DaunteMack優點;你的方法當然會好得多。 –

相關問題