difference-of-squares v2
This commit is contained in:
@@ -1,14 +1,25 @@
|
||||
pub fn square_of_sum(n: Int) -> Int {
|
||||
let sum = sum_to(n)
|
||||
sum * sum
|
||||
// (1 + 2 + ... n)^2
|
||||
square_of_sum_loop(n, 0)
|
||||
}
|
||||
|
||||
fn sum_to(n: Int) -> Int {
|
||||
n * { n + 1 } / 2
|
||||
fn square_of_sum_loop(n: Int, acc: Int) -> Int {
|
||||
case n {
|
||||
0 -> acc * acc
|
||||
_ -> square_of_sum_loop(n - 1, acc + n)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn sum_of_squares(n: Int) -> Int {
|
||||
n * { n + 1 } * { 2 * n + 1 } / 6
|
||||
// TODO (1^2 + 2^2 ... + n^2)
|
||||
sum_of_squares_loop(n, 0)
|
||||
}
|
||||
|
||||
fn sum_of_squares_loop(n: Int, acc: Int) -> Int {
|
||||
case n {
|
||||
0 -> acc
|
||||
_ -> sum_of_squares_loop(n - 1, acc + { n * n })
|
||||
}
|
||||
}
|
||||
|
||||
pub fn difference(n: Int) -> Int {
|
||||
|
||||
Reference in New Issue
Block a user