Class: Sangi::SubtractionEngine
- Inherits:
-
Object
- Object
- Sangi::SubtractionEngine
- Includes:
- SubtractionBorrowing
- Defined in:
- lib/sangi/engines/subtraction_engine.rb
Instance Method Summary collapse
- #build(minuend_abs:, subtrahend_abs:, result_sign:, expression:) ⇒ Object
-
#initialize(config) ⇒ SubtractionEngine
constructor
A new instance of SubtractionEngine.
Constructor Details
#initialize(config) ⇒ SubtractionEngine
Returns a new instance of SubtractionEngine.
5 6 7 |
# File 'lib/sangi/engines/subtraction_engine.rb', line 5 def initialize(config) @config = config end |
Instance Method Details
#build(minuend_abs:, subtrahend_abs:, result_sign:, expression:) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/sangi/engines/subtraction_engine.rb', line 9 def build(minuend_abs:, subtrahend_abs:, result_sign:, expression:) @rod_factory = RodFactory.new @result_value = result_sign * (minuend_abs - subtrahend_abs) place_count = [ digit_count(minuend_abs), digit_count(subtrahend_abs), digit_count(@result_value.abs), 1 ].max @board = Board.from_numbers( a: minuend_abs, b: subtrahend_abs, work: 0, place_count: place_count, rod_factory: @rod_factory ) @board.row(:work).sign = result_sign @builder = StepBuilder.new( config: @config, expression: expression, board: @board, result_value: @result_value, rod_factory: @rod_factory ) push_setup_step copy_minuend_to_work(minuend_abs) digit_count(subtrahend_abs).times do |place| subtract_digit_from_work(place, digit_of(subtrahend_abs, place)) end push_finish_step @builder.steps end |