Class: TriviaFactory::MathQuestion
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
.generate ⇒ Object
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_addition ⇒ Object
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_division ⇒ Object
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_multiplication ⇒ Object
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_subtraction ⇒ Object
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
|