end
def operand
- result =
- if options[:fractional_mode]
- create_fractional_complex_number
- else
- create_complex_number
- end
- return "#{result}^2" if options[:term_number] == 1
- return conjugate_complex(last_operand) if last_operator == '/'
- result
+ return create_fractional_complex_number if options[:fractional_mode]
+ return "#{create_complex_number}^2" if options[:term_number] == 1
+ return conjugate_complex(last_operand) if last_operator == '/'
+ create_complex_number
end
def create_complex_number
- real_part = create_integer(options[:min], options[:max], false)
- imaginary_part = create_integer(options[:min], options[:max], false)
- return (2 + rand(8)).to_s if [real_part, imaginary_part].include? 0
- operator = %w[ + - ].sample
- "(#{real_part} #{operator} #{imaginary_part.to_s.sub('1', '')}%i)"
+ real_part = create_integer(options[:min], options[:max], false)
+ imaginary_part = create_integer(options[:min], options[:max], false)
+ return create_integer(2, 9, false).to_s if [real_part, imaginary_part].include? 0
+ "(#{real_part} #{plus_or_minus} #{imaginary_part.to_s.sub('1', '')}%i)"
+ end
+
+ def plus_or_minus
+ %w[ + - ].sample
end
def create_fractional_complex_number
- numerator_part = 1 + rand(9)
- denominator_part = create_complex_number
- "#{numerator_part} / #{denominator_part}"
+ "#{create_integer(1, 9, false)} / #{create_complex_number}"
end
def conjugate_complex(expression)