aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-02-22 08:45:47 +0000
committerGitHub <noreply@github.com>2020-02-22 08:45:47 +0000
commitde551f99333ef8fee0533bcc1dfe2efaf7be482e (patch)
tree565d9e497e946aa59e18898c7b9daeec72a698d9
parent5538168ffe1104ff3b90a97f0ba6b66eb2af8cd8 (diff)
parenta61cbfd37e263dd12ade63155d5d79468d2cf7c8 (diff)
downloadperlweeklychallenge-club-de551f99333ef8fee0533bcc1dfe2efaf7be482e.tar.gz
perlweeklychallenge-club-de551f99333ef8fee0533bcc1dfe2efaf7be482e.tar.bz2
perlweeklychallenge-club-de551f99333ef8fee0533bcc1dfe2efaf7be482e.zip
Merge pull request #1289 from xkr47/pwc048-2
xkr47 / 048 / Rust version!
-rw-r--r--challenge-048/xkr47/rust/Cargo.toml16
-rw-r--r--challenge-048/xkr47/rust/ch-1.rs27
-rw-r--r--challenge-048/xkr47/rust/ch-2.rs18
3 files changed, 61 insertions, 0 deletions
diff --git a/challenge-048/xkr47/rust/Cargo.toml b/challenge-048/xkr47/rust/Cargo.toml
new file mode 100644
index 0000000000..297b1f0cd8
--- /dev/null
+++ b/challenge-048/xkr47/rust/Cargo.toml
@@ -0,0 +1,16 @@
+[package]
+name = "pwc-048"
+version = "0.1.0"
+authors = ["Jonas Berlin <xkr47@outerspace.dyndns.org>"]
+edition = "2018"
+
+[dependencies]
+chrono = "0.4.10"
+
+[[bin]]
+name = "ch-1"
+path = "ch-1.rs"
+
+[[bin]]
+name = "ch-2"
+path = "ch-2.rs"
diff --git a/challenge-048/xkr47/rust/ch-1.rs b/challenge-048/xkr47/rust/ch-1.rs
new file mode 100644
index 0000000000..f64641edef
--- /dev/null
+++ b/challenge-048/xkr47/rust/ch-1.rs
@@ -0,0 +1,27 @@
+struct Pwc048_1 {
+ array: Vec<i32>,
+ index: usize,
+}
+
+impl Iterator for Pwc048_1 {
+ type Item = i32;
+ fn next(&mut self) -> Option<i32> {
+ let val = self.array[self.index];
+ self.index = (self.index + 1) % self.array.len();
+ self.array.remove(self.index);
+ if !self.array.is_empty() {
+ self.index = self.index % self.array.len();
+ Some(val)
+ } else {
+ None
+ }
+ }
+}
+
+fn main() {
+ let arr = Pwc048_1 {
+ array: (1..=50).collect(),
+ index: 0,
+ };
+ print!("Survivors, in order: {:?} ", arr.collect::<Vec<i32>>());
+}
diff --git a/challenge-048/xkr47/rust/ch-2.rs b/challenge-048/xkr47/rust/ch-2.rs
new file mode 100644
index 0000000000..53168c4cd2
--- /dev/null
+++ b/challenge-048/xkr47/rust/ch-2.rs
@@ -0,0 +1,18 @@
+use chrono::prelude::*;
+use std::iter::FromIterator;
+
+fn main() {
+ let dates: Vec<String> = (2000..=2999)
+ .map(|y| {
+ let ys = y.to_string();
+ let revchars: Vec<char> = ys.chars().rev().collect();
+ let m = String::from_iter(&revchars[0..2]).parse::<u32>().unwrap();
+ let d = String::from_iter(&revchars[2..4]).parse::<u32>().unwrap();
+ chrono::Utc.ymd_opt(y, m, d)
+ })
+ .flat_map(|date| date.earliest())
+ .map(|date| format!("{}", date.format("%m%d%Y")))
+ .collect();
+
+ println!("{:?}", dates);
+}