secret
Last active — forked from /isleyaardvark.rb

  • Download Gist
isleyaardvark.rb
Ruby
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
# This class prepares a pretty-print version of a polynomial with a minimum of 2 coefficients
#
class Polynomial
# Create the polynomial object and store the coefficients
#
def initialize(args)
raise ArgumentError, "Need at least 2 coefficients" if args.length < 2
@args = args
end
 
# Returns a string version of the polynomial, simplifies coefficients of 1x^n to x^n,
# simplifies x^1 to x and ax^0 to a. Doesn't include elements with a coefficient of 0.
# If all coefficients = 0, returns "0".
#
def to_s
polynomial = []
@args.each_with_index do |coefficient, index|
unless coefficient.zero?
polynomial << coefficient.to_s + "x^" + (@args.length - 1 - index).to_s
end
end
unless polynomial.empty?
return polynomial.join("+").gsub(/\+\-/, '-').gsub(/(^|[\+\-])[1]x/, '\1x').gsub("x^1", 'x').gsub("x^0", '')
# ^| in regex handles case where 1x is at beginning of line, otherwise it's -1x and is covered by rest of regex
else
return "0"
end
end
 
end

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.