difference-of-squares
This commit is contained in:
29
elixir/difference-of-squares/lib/squares.ex
Normal file
29
elixir/difference-of-squares/lib/squares.ex
Normal file
@@ -0,0 +1,29 @@
|
||||
defmodule Squares do
|
||||
@moduledoc """
|
||||
Calculate sum of squares, square of sum, difference between two sums from 1 to a given end number.
|
||||
"""
|
||||
|
||||
@doc """
|
||||
Calculate sum of squares from 1 to a given end number.
|
||||
"""
|
||||
@spec sum_of_squares(pos_integer) :: pos_integer
|
||||
def sum_of_squares(number) do
|
||||
div(number * (number + 1) * (2 * number + 1), 6)
|
||||
end
|
||||
|
||||
@doc """
|
||||
Calculate square of sum from 1 to a given end number.
|
||||
"""
|
||||
@spec square_of_sum(pos_integer) :: pos_integer
|
||||
def square_of_sum(number) do
|
||||
div(number * (number + 1), 2) ** 2
|
||||
end
|
||||
|
||||
@doc """
|
||||
Calculate difference between sum of squares and square of sum from 1 to a given end number.
|
||||
"""
|
||||
@spec difference(pos_integer) :: pos_integer
|
||||
def difference(number) do
|
||||
abs(square_of_sum(number) - sum_of_squares(number))
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user