From db4b0b541ea7484be9e0c7576b883990c67fff3a Mon Sep 17 00:00:00 2001 From: alyx Date: Mon, 20 Nov 2023 22:52:14 -0500 Subject: 2015.10, fix base --- 2015/rs/code/ten/Cargo.toml | 8 ++++++++ 2015/rs/code/ten/src/main.rs | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 2015/rs/code/ten/Cargo.toml create mode 100644 2015/rs/code/ten/src/main.rs (limited to '2015/rs/code/ten') 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 +} -- cgit v1.2.3-70-g09d2