From 7d39af4bc044d12f4e155c21923d37f081302c20 Mon Sep 17 00:00:00 2001 From: Alpha Chen Date: Tue, 19 Jan 2016 09:21:20 -0800 Subject: [PATCH] [rust][8.1] --- rust/src/day_08.rs | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/rust/src/day_08.rs b/rust/src/day_08.rs index 1187536..f64161e 100644 --- a/rust/src/day_08.rs +++ b/rust/src/day_08.rs @@ -1,14 +1,14 @@ #[test] fn test_day_08() { - assert_eq!(2, solve(r#""""#)); - assert_eq!(2, solve(r#""abc""#)); - assert_eq!(3, solve(r#""aaa\"aaa""#)); + assert_eq!(4, solve(r#""""#)); + assert_eq!(4, solve(r#""abc""#)); + assert_eq!(6, solve(r#""aaa\"aaa""#)); assert_eq!(5, solve(r#""\x27""#)); assert_eq!(5, solve(r#""\xfa""#)); } pub fn solve(input: &str) -> usize { - input.lines().fold(0, |sum, s| sum + s.len() - decode(s).chars().count()) + input.lines().fold(0, |sum, s| sum + encode(s).chars().count() - s.len()) } #[test] @@ -44,3 +44,16 @@ fn decode(string: &str) -> String { } out } + +#[test] +fn test_encode() { + assert_eq!(r#""\"\"""#, encode(r#""""#)); + assert_eq!(r#""\"abc\"""#, encode(r#""abc""#)); + assert_eq!(r#""\"aaa\\\"aaa\"""#, encode(r#""aaa\"aaa""#)); + assert_eq!(r#""\"\\x27\"""#, encode(r#""\x27""#)); + assert_eq!(r#""\"\\xfa\"""#, encode(r#""\xfa""#)); +} + +fn encode(string: &str) -> String { + format!(r#""{}""#, string.replace(r#"\"#, r#"\\"#).replace(r#"""#, r#"\""#)) +}