aboutsummaryrefslogtreecommitdiff
path: root/grains/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'grains/src/lib.rs')
-rw-r--r--grains/src/lib.rs23
1 files changed, 0 insertions, 23 deletions
diff --git a/grains/src/lib.rs b/grains/src/lib.rs
deleted file mode 100644
index 05449be..0000000
--- a/grains/src/lib.rs
+++ /dev/null
@@ -1,23 +0,0 @@
1pub fn square(s: u32) -> u64 {
2 assert!(s > 0 && s < 65,"Square must be between 1 and 64");
3 2_u64.pow(s-1)
4}
5
6/// This version uses the already defined `square(s)` function.
7///
8/// There is also a faster way to compute this according to
9/// [Wolfram|Alpha](https://www.wolframalpha.com/input/?i=sum_0%5En+2%5En)
10///
11/// 2_u64.pow(65) - 1 == 18_446_744_073_709_551_615
12///
13/// this solution however doesn't work because
14///
15/// 2_u64.pow(65) == 18_446_744_073_709_551_616
16///
17/// which overflows since
18///
19/// std::u64::MAX == 18_446_744_073_709_551_615
20///
21pub fn total() -> u64 {
22 (1..65).map(square).sum() // std::u64::MAX
23}