class Pizzabot::Delivery
Attributes
coordinates[RW]
directions[RW]
grid[RW]
starting_location[RW]
Public Class Methods
new(command)
click to toggle source
# File lib/pizzabot/delivery.rb, line 5 def initialize(command) @coordinates = format_coordinates(command.scan(/\(.*?\)/)) @starting_location = { x_axis: 0, y_axis: 0 } @directions = [] @grid = command[/\d[x]\d/] move end
Private Instance Methods
assign_x_direction(mn)
click to toggle source
# File lib/pizzabot/delivery.rb, line 49 def assign_x_direction(mn) if mn[:x_move] > 0 mn[:x_move].times { @directions << 'E'} else mn[:x_move].abs.times { @directions << 'W'} end end
assign_y_direction(mn)
click to toggle source
# File lib/pizzabot/delivery.rb, line 41 def assign_y_direction(mn) if mn[:y_move] > 0 mn[:y_move].times { @directions << 'N'} else mn[:y_move].abs.times { @directions << 'S'} end end
format_coordinates(coordinates)
click to toggle source
# File lib/pizzabot/delivery.rb, line 32 def format_coordinates(coordinates) coordinates.map do |coordinate| { x_axis: coordinate.gsub(/[^\d,\.]/, '').split(',').first.to_i, y_axis: coordinate.gsub(/[^\d,\.]/, '').split(',').last.to_i } end end
move()
click to toggle source
# File lib/pizzabot/delivery.rb, line 22 def move @coordinates.each do |coordinate| mn = move_number(coordinate) assign_x_direction(mn) assign_y_direction(mn) @directions << "D" @starting_location = coordinate end end
move_number(coordinate)
click to toggle source
# File lib/pizzabot/delivery.rb, line 15 def move_number(coordinate) { x_move: coordinate[:x_axis] - @starting_location[:x_axis], y_move: coordinate[:y_axis] - @starting_location[:y_axis] } end