Ruby计算NxN正方形网格中有多少不同的正方形?
我使用ruby exercice创建了一个计算网格NxN中的平方的方法 就像n=1,有一个1乘1的正方形=1Ruby计算NxN正方形网格中有多少不同的正方形?,ruby,algorithm,Ruby,Algorithm,我使用ruby exercice创建了一个计算网格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)-(n-1)平方,九个(n-2)-(n-2)平方,和n2 1乘1的平方 我想知道如何在ruby中实现这一点通常对于nxn正方形网格,正方
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)-(n-1)平方,九个(n-2)-(n-2)平方,和n2 1乘1的平方
我想知道如何在ruby中实现这一点通常对于nxn正方形网格,正方形的总数由 n²+(n-1)²+(n-2)²+…+1. 在Ruby中,您可以执行以下操作:
class Number
def squares_counter(n)
(1..n).map {|e| e*e }.inject(:+)
end
end
map
创建一个从1
到n
的平方数数组,然后将它们相加。使用此方法,我们可以计算棋盘上的方块数:
num = Number.new
puts num.squares_counter(8) #=> 204
你在问什么?欢迎来到Stack Overflow。请读“。我们想看看你为解决这个问题所做努力的证据。代码或教程编写服务也是如此。我们希望你做研究,尝试,尝试更多,再尝试,然后问。你也可以在O(1)时间内计算。(n(n+1)(2n+1))/6好的,萨加尔。读者:如果不清楚为什么这样做,可以考虑计算
m
xm
nxn
nsquare中的m
mmn
square的个数,m@DaunteMack优秀点;你的方法当然会更好。