Class: TriviaFactory::MathQuestion

Inherits:
Question
  • Object
show all
Defined in:
lib/trivia_factory/math_question.rb

Constant Summary collapse

QUESTION_SUB_TYPES =
[:addition, :subtraction, :multiplication, :division].freeze

Constants inherited from Question

Question::ANSWER_TYPES, Question::QUESTION_TYPES

Instance Attribute Summary

Attributes inherited from Question

#answer, #answer_type, #choices, #label, #question_type

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Question

academy_awards, capital_cities, company, fetch_csv, math, question_types, random, sports, #to_h, us_state_capitals, vocabulary

Constructor Details

#initialize(subtype = :addition) ⇒ MathQuestion



6
7
8
9
10
11
12
# File 'lib/trivia_factory/math_question.rb', line 6

def initialize(subtype = :addition)
  @question_type = :fill_in_the_blank
  @answer_type = :integer
  @choices = []
  raise 'Invalid sub type for TriviaFactory::MathQuestion' unless QUESTION_SUB_TYPES.include?(subtype)
  self.send("build_#{subtype.to_s}")
end

Class Method Details

.generateObject



47
48
49
50
51
# File 'lib/trivia_factory/math_question.rb', line 47

def generate
  sub_type = QUESTION_SUB_TYPES.sample
  question = TriviaFactory::MathQuestion.new(sub_type)
  question
end

Instance Method Details

#build_additionObject



14
15
16
17
18
19
20
# File 'lib/trivia_factory/math_question.rb', line 14

def build_addition
  rng = Random.new
  first = rng.rand(100)
  second = rng.rand(100)
  @label = "#{first} + #{second} = _____?"
  @answer = first + second
end

#build_divisionObject



38
39
40
41
42
43
44
# File 'lib/trivia_factory/math_question.rb', line 38

def build_division
  rng = Random.new
  first = 1 + rng.rand(11)
  second = 1 + rng.rand(11)
  @label = "#{first * second} ÷ #{first} = _____?"
  @answer = second
end

#build_multiplicationObject



30
31
32
33
34
35
36
# File 'lib/trivia_factory/math_question.rb', line 30

def build_multiplication
  rng = Random.new
  first = rng.rand(12)
  second = rng.rand(12)
  @label = "#{first} X #{second} = _____?"
  @answer = first * second
end

#build_subtractionObject



22
23
24
25
26
27
28
# File 'lib/trivia_factory/math_question.rb', line 22

def build_subtraction
  rng = Random.new
  first = rng.rand(100)
  second = rng.rand(100)
  @label = "#{first + second} - #{first} = _____?"
  @answer = second
end