commit 2b65145621ffbacaf13187df4dfb443996bab20c
parent 5a148a268836126aa9df771ff9bf0232e2a34959
Author: Daniel Barlow <dan@telent.net>
Date: Tue, 31 Oct 2023 23:27:07 +0000
add S W E
Diffstat:
1 file changed, 28 insertions(+), 1 deletion(-)
diff --git a/src/main.rs b/src/main.rs
@@ -9,7 +9,13 @@ mod rover {
type Rover = (i32, i32, Facing);
pub fn forward((lon, lat, direction) : Rover) -> Rover {
- (lon as i32, lat - 1 as i32, direction)
+ let (xoff, yoff) = match direction {
+ Facing::N => ( 0, -1),
+ Facing::E => ( 1, 0),
+ Facing::S => ( 0, 1),
+ Facing::W => (-1, 0)
+ };
+ (lon + xoff as i32, lat + yoff as i32, direction)
}
}
@@ -27,4 +33,25 @@ mod tests {
assert_eq!(rover::forward(r),
(1 as i32, 2 as i32, rover::Facing::N));
}
+
+ #[test]
+ fn move_south() {
+ let r = (1 as i32, 1 as i32, rover::Facing::S);
+ assert_eq!(rover::forward(r),
+ (1 as i32, 2 as i32, rover::Facing::S));
+ }
+
+ #[test]
+ fn move_west() {
+ let r = (1 as i32, 1 as i32, rover::Facing::W);
+ assert_eq!(rover::forward(r),
+ (0 as i32, 1 as i32, rover::Facing::W));
+ }
+
+ #[test]
+ fn move_east() {
+ let r = (1 as i32, 1 as i32, rover::Facing::E);
+ assert_eq!(rover::forward(r),
+ (2 as i32, 1 as i32, rover::Facing::E));
+ }
}