diff options
Diffstat (limited to '2015')
-rw-r--r-- | 2015/rs/Cargo.lock | 4 | ||||
-rw-r--r-- | 2015/rs/base/Cargo.toml | 8 | ||||
-rw-r--r-- | 2015/rs/base/src/main.rs | 5 | ||||
-rw-r--r-- | 2015/rs/code/ten/Cargo.toml | 8 | ||||
-rw-r--r-- | 2015/rs/code/ten/src/main.rs | 34 |
5 files changed, 59 insertions, 0 deletions
diff --git a/2015/rs/Cargo.lock b/2015/rs/Cargo.lock index 5f198ba..9395ee8 100644 --- a/2015/rs/Cargo.lock +++ b/2015/rs/Cargo.lock @@ -89,6 +89,10 @@ name = "six" version = "0.1.0" [[package]] +name = "ten" +version = "0.1.0" + +[[package]] name = "three" version = "0.1.0" diff --git a/2015/rs/base/Cargo.toml b/2015/rs/base/Cargo.toml new file mode 100644 index 0000000..6916ddc --- /dev/null +++ b/2015/rs/base/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "base" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/2015/rs/base/src/main.rs b/2015/rs/base/src/main.rs new file mode 100644 index 0000000..af03856 --- /dev/null +++ b/2015/rs/base/src/main.rs @@ -0,0 +1,5 @@ +static INPUT: &str = include_str!("input.txt"); + +fn main() { + let valueified = INPUT; +} diff --git a/2015/rs/code/ten/Cargo.toml b/2015/rs/code/ten/Cargo.toml new file mode 100644 index 0000000..c39e57b --- /dev/null +++ b/2015/rs/code/ten/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "ten" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/2015/rs/code/ten/src/main.rs b/2015/rs/code/ten/src/main.rs new file mode 100644 index 0000000..848c288 --- /dev/null +++ b/2015/rs/code/ten/src/main.rs @@ -0,0 +1,34 @@ +use std::fmt::Write; + +static INPUT: &str = "1113122113"; + +fn main() { + let mut buf = INPUT.to_string(); + for _ in 0..40 { + buf = part1(&buf); + } + println!("Final strlen @ 40: {}", buf.len()); + + for _ in 0..10 { + buf = part1(&buf); + } + println!("Final strlen @ 50: {}", buf.len()); +} + +fn part1(nums: &str) -> String { + let mut buf = String::with_capacity(nums.len() * 2); // worst-case + let mut chars = nums.chars(); + let mut last = chars.next().unwrap(); + let mut count = 1; + for char in chars { + if char == last { + count += 1; + } else { + let _ = write!(&mut buf, "{count}{last}"); + last = char; + count = 1; + } + } + let _ = write!(&mut buf, "{count}{last}"); + buf +} |