OSDN Git Service

fractional_expression is now fractional_expression_arithmetic
authorTomohiro Nishimura <tomohiro68@gmail.com>
Fri, 19 Feb 2010 07:10:41 +0000 (16:10 +0900)
committerTomohiro Nishimura <tomohiro68@gmail.com>
Fri, 19 Feb 2010 07:10:41 +0000 (16:10 +0900)
lib/mint/generator/fractional_expression_arithmetic.rb [moved from lib/mint/generator/fractional_expression.rb with 82% similarity]
lib/mint/solver/maxima/fractional_expression_arithmetic.rb [moved from lib/mint/solver/maxima/fractional_expression.rb with 75% similarity]
spec/generator/fractional_expression_arithmetic_spec.rb [moved from spec/generator/fractional_expression_spec.rb with 93% similarity]
spec/solver/maxima/fractional_expression_arithmetic_spec.rb [moved from spec/solver/maxima/fractional_expression_spec.rb with 87% similarity]

@@ -17,7 +17,7 @@ module Mint::Generator
   #               [factor_min] 整数部の最小値 (ex. 1)
   #               [factor_max] 整数部の最大値 (ex. 9)
   #
-  class FractionalExpression < Base
+  class FractionalExpressionArithmetic < Arithmetic
 
     DEFAULT_OPERATORS = %w[+ - * div]
 
@@ -28,25 +28,17 @@ module Mint::Generator
     def generate_problem
       # TODO: I wanna set option for expression order
       defaults = {
-        :term_number => 2, :operators => DEFAULT_OPERATORS, :x => ['x'],
+        :x => ['x'],
         :numerator_term_number_min   => 1, :numerator_term_number_max   => 1,
         :denominator_term_number_min => 1, :denominator_term_number_max => 1,
         :factor_minus => false, :factor_min => 1, :factor_max => 9,
       }
-      targets = %w[factor denominator_term_number numerator_term_number]
-      @options = min_max_order(options(defaults), targets)
-      expression
+      do_generate(defaults)
     end
 
-    def expression
-      result = []
-      x = options[:x].sample
-      options[:term_number].times do
-        result << fraction(x)
-        result << options[:operators].sample
-      end
-      # except last operator
-      result[0..-2].join(" ")
+    def operand
+      @x ||= options[:x].sample
+      fraction(@x)
     end
 
     def fraction(x)
@@ -2,7 +2,7 @@
 
 module Mint::Solver::Maxima
 
-  class FractionalExpression < Base
+  class FractionalExpressionArithmetic < Base
 
     private
     def solve_problem(problem)
@@ -3,9 +3,9 @@
 require File.dirname(__FILE__) + '/../spec_helper.rb'
 
 module Mint
-  describe Generator::FractionalExpression do
+  describe Generator::FractionalExpressionArithmetic do
 
-    subject{ Generator::FractionalExpression.new }
+    subject{ Generator::FractionalExpressionArithmetic.new }
 
     describe '2 terms' do
 
@@ -4,9 +4,9 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
 
 module Mint::Solver::Maxima
 
-  describe FractionalExpression do
+  describe FractionalExpressionArithmetic do
 
-    subject { FractionalExpression.new }
+    subject { FractionalExpressionArithmetic.new }
 
     [
       ['(x + 2) / (x + 7) * -(x + 5) / (x + 8)', '-(x+2)(x+5)/((x+7)(x+8))'],