aboutsummaryrefslogtreecommitdiff
path: root/rust/armstrong-numbers/src
diff options
context:
space:
mode:
authorFederico Igne <git@federicoigne.com>2020-12-26 17:48:38 +0000
committerFederico Igne <git@federicoigne.com>2021-11-03 18:55:08 +0000
commit02481656966b0a8dfc95cf3c22bcc049660ff7d4 (patch)
tree8e39798fcaf27931d91c2088423fd4e97adcfc2d /rust/armstrong-numbers/src
parent4e2052c4d792540c2f742b2c2a081b11117ed41d (diff)
downloadexercism-02481656966b0a8dfc95cf3c22bcc049660ff7d4.tar.gz
exercism-02481656966b0a8dfc95cf3c22bcc049660ff7d4.zip
Move Rust exercises in a subdirectory
Diffstat (limited to 'rust/armstrong-numbers/src')
-rw-r--r--rust/armstrong-numbers/src/lib.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/rust/armstrong-numbers/src/lib.rs b/rust/armstrong-numbers/src/lib.rs
new file mode 100644
index 0000000..41b0824
--- /dev/null
+++ b/rust/armstrong-numbers/src/lib.rs
@@ -0,0 +1,15 @@
1
2fn digits(mut n: u32) -> (usize,Vec<u32>) {
3 let mut v = vec![];
4 while n > 9 {
5 v.push(n % 10);
6 n /= 10;
7 }
8 v.push(n);
9 (v.len(),v)
10}
11
12pub fn is_armstrong_number(num: u32) -> bool {
13 let (l,v) = digits(num);
14 v.iter().map(|x| x.pow(l as u32)).sum::<u32>() == num
15}