From 699933fcfda8c473d349b63b28dd6290ef685bc9 Mon Sep 17 00:00:00 2001 From: mhart Date: Sun, 11 Oct 2020 15:14:20 +0200 Subject: [PATCH 1/7] Load the 'simple' intruction file into a string. Need to incorporate flags OR/AND stdin parsing in a later stage. --- src/main.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index 7455a8f..8782bd2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,4 +11,6 @@ enum Instructions { F, } -fn main() {} +fn main() { + let file_data = include_str!("../two_robots.txt"); +} From dcbc5aa74c68db04aa4de39256fb58427213e744 Mon Sep 17 00:00:00 2001 From: mhart Date: Sun, 11 Oct 2020 18:25:42 +0200 Subject: [PATCH 2/7] correct typo --- src/main.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index 8782bd2..409075e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,11 +1,11 @@ -enum Orientations { +enum Orientation { N, E, S, W, } -enum Instructions { +enum Instruction { L, R, F, From c1143ee396646bf71c550c06cfb87fdeb629e241 Mon Sep 17 00:00:00 2001 From: mhart Date: Sun, 11 Oct 2020 18:27:39 +0200 Subject: [PATCH 3/7] Add parse_orientation() This function parse a char and return the matching direction or None --- src/main.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main.rs b/src/main.rs index 409075e..4052eaf 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,6 +11,16 @@ enum Instruction { F, } +fn parse_orientation(c: char) -> Option { + match c { + 'N' => Some(Orientation::N), + 'E' => Some(Orientation::E), + 'S' => Some(Orientation::S), + 'W' => Some(Orientation::W), + _ => None, + } +} + fn main() { let file_data = include_str!("../two_robots.txt"); } From c2d6e3422df63c86d4042bc901a3131a5218d86e Mon Sep 17 00:00:00 2001 From: mhart Date: Sun, 11 Oct 2020 18:31:56 +0200 Subject: [PATCH 4/7] Add parse_instruction() Same as the parse_orientation() function but for the instruction model --- src/main.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main.rs b/src/main.rs index 4052eaf..313f30a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -21,6 +21,15 @@ fn parse_orientation(c: char) -> Option { } } +fn parse_instruction(c: char) -> Option { + match c { + 'L' => Some(Instruction::L), + 'R' => Some(Instruction::R), + 'F' => Some(Instruction::F), + _ => None, + } +} + fn main() { let file_data = include_str!("../two_robots.txt"); } From 6e1589ff7df198752f1aa37b94efc64be80fcc61 Mon Sep 17 00:00:00 2001 From: mhart Date: Sun, 11 Oct 2020 20:10:17 +0200 Subject: [PATCH 5/7] Change Option<> in parse_orientation() parse_instruction() for Result --- src/main.rs | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main.rs b/src/main.rs index 313f30a..c10155e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,22 +11,22 @@ enum Instruction { F, } -fn parse_orientation(c: char) -> Option { +fn parse_orientation(c: char) -> Result { match c { - 'N' => Some(Orientation::N), - 'E' => Some(Orientation::E), - 'S' => Some(Orientation::S), - 'W' => Some(Orientation::W), - _ => None, + 'N' => Ok(Orientation::N), + 'E' => Ok(Orientation::E), + 'S' => Ok(Orientation::S), + 'W' => Ok(Orientation::W), + _ => Err("Invalid character, does not match any orientations"), } } -fn parse_instruction(c: char) -> Option { +fn parse_instruction(c: char) -> Result { match c { - 'L' => Some(Instruction::L), - 'R' => Some(Instruction::R), - 'F' => Some(Instruction::F), - _ => None, + 'L' => Ok(Instruction::L), + 'R' => Ok(Instruction::R), + 'F' => Ok(Instruction::F), + _ => Err("Invalid character, does not match any instructions"), } } From edf29050c6fc66636d4287c252cec6ec87691a24 Mon Sep 17 00:00:00 2001 From: mhart Date: Sun, 11 Oct 2020 20:24:35 +0200 Subject: [PATCH 6/7] Change (c : char) in parse_orientation() parse_instruction() to (c: &char) --- src/main.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index c10155e..186271e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,7 +11,7 @@ enum Instruction { F, } -fn parse_orientation(c: char) -> Result { +fn parse_orientation(c: &char) -> Result { match c { 'N' => Ok(Orientation::N), 'E' => Ok(Orientation::E), @@ -21,7 +21,7 @@ fn parse_orientation(c: char) -> Result { } } -fn parse_instruction(c: char) -> Result { +fn parse_instruction(c: &char) -> Result { match c { 'L' => Ok(Instruction::L), 'R' => Ok(Instruction::R), From 8c16773fe930c128402e32d526680b5f57979491 Mon Sep 17 00:00:00 2001 From: mhart Date: Sun, 11 Oct 2020 21:45:56 +0200 Subject: [PATCH 7/7] Revert "Change (c : char) in" This reverts commit edf29050c6fc66636d4287c252cec6ec87691a24. Bad optimization... --- src/main.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index 186271e..c10155e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,7 +11,7 @@ enum Instruction { F, } -fn parse_orientation(c: &char) -> Result { +fn parse_orientation(c: char) -> Result { match c { 'N' => Ok(Orientation::N), 'E' => Ok(Orientation::E), @@ -21,7 +21,7 @@ fn parse_orientation(c: &char) -> Result { } } -fn parse_instruction(c: &char) -> Result { +fn parse_instruction(c: char) -> Result { match c { 'L' => Ok(Instruction::L), 'R' => Ok(Instruction::R),