end
def factorization2(a, b, c, x)
+ if x.instance_of?(Array)
+ x, y = x.values_at(0, 1)
+ return factorization2_val2(a, b, c, x, y)
+ end
+ factorization2_val1(a, b, c, x)
+ end
+
+ def factorization2_val1(a, b, c, x)
e = []
e << "%1$d%4$s^2" unless a == 0
e << "%2$d%4$s" unless b == 0
gsub(%r!\+ -!, '- ').gsub(/\A1#{x}|([ -])1#{x}/, '\1'+x)
end
+ def factorization2_val2(a, b, c, x, y)
+ e = []
+ e << "%1$d%4$s^2" unless a == 0
+ e << "%2$d%4$s%5$s" unless b == 0
+ e << "%3$d%5$s^2" unless c == 0
+ (e.join(" + ") % [a, b, c, x, y]).
+ gsub(%r!\+ -!, '- ').
+ gsub(/\A1#{x}|([ -])1#{x}/, '\1'+x).
+ gsub(/1#{y}|([ -])1#{y}/, '\1'+x+y).
+ gsub(/1#{x}#{y}|([ -])1#{x}#{y}\z/, '\1'+x+y)
+ end
+
def factorization3(a, b, c, d, x)
+ if x.instance_of?(Array)
+ x, y = x.values_at(0, 1)
+ return factorization3_val2(a, b, c, d, x, y)
+ end
+ factorization3_val1(a, b, c, d, x)
+ end
+
+ def factorization3_val1(a, b, c, d, x)
e = []
e << "%1$d%5$s^3" unless a == 0
e << "%2$d%5$s^2" unless b == 0
gsub(%r!\+ -!, '- ').gsub(/\A1#{x}|([ -])1#{x}/, '\1'+x)
end
+ def factorization3_val2(a, b, c, d, x, y)
+ e = []
+ e << "%1$d%5$s^3" unless a == 0
+ e << "%2$d%5$s^2%6$s" unless b == 0
+ e << "%3$d%5$s%6$s^2" unless c == 0
+ e << "%4$d%6$s^3" unless d == 0
+ (e.join(" + ") % [a, b, c, d, x, y]).
+ gsub(%r!\+ -!, '- ').gsub(/\A1#{x}|([ -])1#{x}/, '\1'+x)
+ end
+
def expansion
result = []
order = create_integer(options[:order_min], options[:order_max], false)
context 'factorization2' do
- [
- [2, 3, 4, '2x^2 + 3x + 4'],
- [1, 3, 4, 'x^2 + 3x + 4'],
- [-1, 3, 4, '-x^2 + 3x + 4'],
- [2, 1, 4, '2x^2 + x + 4'],
- [2, -1, 4, '2x^2 - x + 4'],
-
- ].each do |a, b, c, ptn|
-
+ values = [[2, 3, 4], [1, 3, 4], [-1, 3, 4], [2, 1, 4], [2, -1, 4]]
+
+ values.zip([
+ '2x^2 + 3x + 4',
+ 'x^2 + 3x + 4',
+ '-x^2 + 3x + 4',
+ '2x^2 + x + 4',
+ '2x^2 - x + 4',
+ ]).each do |(a, b, c), ptn|
it ptn do
expression = subject.__send__(:factorization2, a, b, c, 'x')
expression.should == ptn
end
end
+
+ values.zip([
+ '2x^2 + 3xy + 4y^2',
+ 'x^2 + 3xy + 4y^2',
+ '-x^2 + 3xy + 4y^2',
+ '2x^2 + xy + 4y^2',
+ '2x^2 - xy + 4y^2',
+ ]).each do |(a, b, c), ptn|
+ it ptn do
+ expression = subject.__send__(:factorization2, a, b, c, ['x', 'y'])
+ expression.should == ptn
+ end
+ end
end
context 'factorization3' do
- [
- [2, 3, 4, 5, '2x^3 + 3x^2 + 4x + 5'],
- [1, 3, 4, 5, 'x^3 + 3x^2 + 4x + 5'],
- [-1, 3, 4, 5, '-x^3 + 3x^2 + 4x + 5'],
- [2, 1, 4, 5, '2x^3 + x^2 + 4x + 5'],
- [2, -1, 4, 5, '2x^3 - x^2 + 4x + 5'],
+ values = [[2, 3, 4, 5], [1, 3, 4, 5], [-1, 3, 4, 5], [2, 1, 4, 5], [2, -1, 4, 5]]
- ].each do |a, b, c, d, ptn|
+ values.zip([
+ '2x^3 + 3x^2y + 4xy^2 + 5y^3',
+ 'x^3 + 3x^2y + 4xy^2 + 5y^3',
+ '-x^3 + 3x^2y + 4xy^2 + 5y^3',
+ '2x^3 + x^2y + 4xy^2 + 5y^3',
+ '2x^3 - x^2y + 4xy^2 + 5y^3',
+ ]).each do |(a, b, c, d), ptn|
it ptn do
- expression = subject.__send__(:factorization3, a, b, c, d, 'x')
+ expression = subject.__send__(:factorization3, a, b, c, d, ['x', 'y'])
expression.should == ptn
end
end