Skip to content

Commit

Permalink
https://exercism.org/tracks/rust/exercises/difference-of-squares
Browse files Browse the repository at this point in the history
  • Loading branch information
hyunjun committed Feb 12, 2024
1 parent a2b7900 commit 80cf9aa
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 0 deletions.
4 changes: 4 additions & 0 deletions rust/difference-of-squares/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[package]
edition = "2021"
name = "difference-of-squares"
version = "1.2.0"
25 changes: 25 additions & 0 deletions rust/difference-of-squares/src/lib.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
pub fn square_of_sum(n: u32) -> u32 {
/*
let mut sum = 0;
for i in 1..n + 1 {
sum += i;
}
sum.pow(2)
*/
(1..n + 1).sum::<u32>().pow(2)
}

pub fn sum_of_squares(n: u32) -> u32 {
/*
let mut sum = 0;
for i in 1..n + 1 {
sum += i.pow(2);
}
sum
*/
(1..n + 1).map(|x| x.pow(2)).sum::<u32>()
}

pub fn difference(n: u32) -> u32 {
square_of_sum(n) - sum_of_squares(n)
}
46 changes: 46 additions & 0 deletions rust/difference-of-squares/tests/difference-of-squares.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
use difference_of_squares as squares;

#[test]
fn square_of_sum_1() {
assert_eq!(1, squares::square_of_sum(1));
}

#[test]
fn square_of_sum_5() {
assert_eq!(225, squares::square_of_sum(5));
}

#[test]
fn square_of_sum_100() {
assert_eq!(25_502_500, squares::square_of_sum(100));
}

#[test]
fn sum_of_squares_1() {
assert_eq!(1, squares::sum_of_squares(1));
}

#[test]
fn sum_of_squares_5() {
assert_eq!(55, squares::sum_of_squares(5));
}

#[test]
fn sum_of_squares_100() {
assert_eq!(338_350, squares::sum_of_squares(100));
}

#[test]
fn difference_1() {
assert_eq!(0, squares::difference(1));
}

#[test]
fn difference_5() {
assert_eq!(170, squares::difference(5));
}

#[test]
fn difference_100() {
assert_eq!(25_164_150, squares::difference(100));
}

0 comments on commit 80cf9aa

Please sign in to comment.