linear1 1.0.0.pre
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
 - data/LICENSE.md +21 -0
 - data/README.md +36 -0
 - data/bin/linear1 +18 -0
 - data/lib/linear1/arthmetic_sequence.rb +21 -0
 - data/lib/linear1/direct_variation.rb +15 -0
 - data/lib/linear1/function.rb +73 -0
 - data/lib/linear1/graph.rb +89 -0
 - data/lib/linear1/point_slope.rb +22 -0
 - data/lib/linear1/slope_intercept.rb +23 -0
 - data/lib/linear1/standard.rb +41 -0
 - data/lib/linear1/system.rb +17 -0
 - data/lib/linear1.rb +8 -0
 - data/spec/lib/linear1/direct_variation_spec.rb +9 -0
 - data/spec/lib/linear1/function_spec.rb +13 -0
 - data/spec/lib/linear1/graph_spec.rb +13 -0
 - data/spec/lib/linear1/slope_intercept_spec.rb +20 -0
 - data/spec/lib/linear1/standard_spec.rb +10 -0
 - metadata +96 -0
 
    
        checksums.yaml
    ADDED
    
    | 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            SHA1:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 0958577ede7ba8fa57fd241fc9a29aae34cd911b
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: c8266881e23d9eab12c5538f0ee408eaf2271fe0
         
     | 
| 
      
 5 
     | 
    
         
            +
            SHA512:
         
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: f1311e4c1482095f42a3f034d32ec7a87c00f45b8d779d8fd004e5ee2356d76d88c1a613f18e78e5bc9e78bdc2a792696485c7e2c2b889e78fc876fdc28cc1e8
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 41fff4658e2866970b790045db11b208a5a4bc19ae2e1ee56695d640f3e4cd7d6aeb8acc3f181f950fdb9501278581c503fa368c4f8286543d633b9cd741aa69
         
     | 
    
        data/LICENSE.md
    ADDED
    
    | 
         @@ -0,0 +1,21 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            The MIT License (MIT)
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Copyright (c) 2015 Zachary Roth Perlmutter
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            Permission is hereby granted, free of charge, to any person obtaining a copy
         
     | 
| 
      
 6 
     | 
    
         
            +
            of this software and associated documentation files (the "Software"), to deal
         
     | 
| 
      
 7 
     | 
    
         
            +
            in the Software without restriction, including without limitation the rights
         
     | 
| 
      
 8 
     | 
    
         
            +
            to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
         
     | 
| 
      
 9 
     | 
    
         
            +
            copies of the Software, and to permit persons to whom the Software is
         
     | 
| 
      
 10 
     | 
    
         
            +
            furnished to do so, subject to the following conditions:
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            The above copyright notice and this permission notice shall be included in all
         
     | 
| 
      
 13 
     | 
    
         
            +
            copies or substantial portions of the Software.
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
         
     | 
| 
      
 16 
     | 
    
         
            +
            IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
         
     | 
| 
      
 17 
     | 
    
         
            +
            FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
         
     | 
| 
      
 18 
     | 
    
         
            +
            AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
         
     | 
| 
      
 19 
     | 
    
         
            +
            LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
         
     | 
| 
      
 20 
     | 
    
         
            +
            OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
         
     | 
| 
      
 21 
     | 
    
         
            +
            SOFTWARE.
         
     | 
    
        data/README.md
    ADDED
    
    | 
         @@ -0,0 +1,36 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # linear1
         
     | 
| 
      
 2 
     | 
    
         
            +
            A gem that does linear algebra to an extent
         
     | 
| 
      
 3 
     | 
    
         
            +
            ## Installation
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            |Method|Runtime|Development|
         
     | 
| 
      
 6 
     | 
    
         
            +
            |:----:|:-----:|:---------:|
         
     | 
| 
      
 7 
     | 
    
         
            +
            |`Gemfile`|`gem 'linear1'`| `gem 'linear1', group: :development`|
         
     | 
| 
      
 8 
     | 
    
         
            +
            |RubyGems|`$ gem install linear1`    |   `$ gem install linear1 --development`    |
         
     | 
| 
      
 9 
     | 
    
         
            +
            |`.gemspec`|`gem.add_runtime_dependency "linear1"`|`gem.add_development_dependency "linear1"`  |
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            ## Usage
         
     | 
| 
      
 12 
     | 
    
         
            +
            `$ linear1 help`
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            `$ linear1 graph _equation_`
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            `$ linear1 display _equation_`
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            `$ linear1 execute x _equation_`
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            ### equations
         
     | 
| 
      
 21 
     | 
    
         
            +
            Replace `_equation_` with one of these equations:
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            `standard A B C`
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            `point-slope slope x1 y1`
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            `slope-intercept slope y_intercept`
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            `function slope y_intercept power`
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            `direct-variation k`
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            ## Badges
         
     | 
| 
      
 34 
     | 
    
         
            +
            [](https://travis-ci.org/Zrp200/linear1)
         
     | 
| 
      
 35 
     | 
    
         
            +
            [](https://codeclimate.com/github/Zrp200/linear1)
         
     | 
| 
      
 36 
     | 
    
         
            +
            [](https://codeclimate.com/github/Zrp200/linear1)
         
     | 
    
        data/bin/linear1
    ADDED
    
    | 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "linear1"
         
     | 
| 
      
 3 
     | 
    
         
            +
            include Linear1
         
     | 
| 
      
 4 
     | 
    
         
            +
            equation = proc do |index|
         
     | 
| 
      
 5 
     | 
    
         
            +
            	case ARGV[index]
         
     | 
| 
      
 6 
     | 
    
         
            +
            		when "slope-intercept" then SlopeIntercept
         
     | 
| 
      
 7 
     | 
    
         
            +
            		when "standard" then Standard
         
     | 
| 
      
 8 
     | 
    
         
            +
            		when "function" then Function
         
     | 
| 
      
 9 
     | 
    
         
            +
            		when "direct-variation" then DirectVariation
         
     | 
| 
      
 10 
     | 
    
         
            +
            		when "point-slope" then PointSlope
         
     | 
| 
      
 11 
     | 
    
         
            +
            	end.find index + 1
         
     | 
| 
      
 12 
     | 
    
         
            +
            end
         
     | 
| 
      
 13 
     | 
    
         
            +
            puts case ARGV[0]
         
     | 
| 
      
 14 
     | 
    
         
            +
            	when "graph" then Graph.new equation.call 1
         
     | 
| 
      
 15 
     | 
    
         
            +
            	when "display" then equation.call 1
         
     | 
| 
      
 16 
     | 
    
         
            +
            	when "execute" then equation.call(2).execute ARGV[1].to_f
         
     | 
| 
      
 17 
     | 
    
         
            +
            	when "help" then "Help is not available. Please refer to the README."
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,21 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "linear1/function"
         
     | 
| 
      
 2 
     | 
    
         
            +
            module Linear1
         
     | 
| 
      
 3 
     | 
    
         
            +
            	class ArthmeticSequence < Function
         
     | 
| 
      
 4 
     | 
    
         
            +
            		attr_reader :a, :common_difference
         
     | 
| 
      
 5 
     | 
    
         
            +
            		alias d common_difference
         
     | 
| 
      
 6 
     | 
    
         
            +
            		alias to_a a
         
     | 
| 
      
 7 
     | 
    
         
            +
            		alias slope d
         
     | 
| 
      
 8 
     | 
    
         
            +
            		def initialize a
         
     | 
| 
      
 9 
     | 
    
         
            +
            			i = 0
         
     | 
| 
      
 10 
     | 
    
         
            +
            			while i < a.length - 2 
         
     | 
| 
      
 11 
     | 
    
         
            +
            				raise ArgumentError, "Elements must have a common difference" unless a[i+1] - a[i] == a[i+2] - a[i+1]
         
     | 
| 
      
 12 
     | 
    
         
            +
            				i += 1
         
     | 
| 
      
 13 
     | 
    
         
            +
            			end
         
     | 
| 
      
 14 
     | 
    
         
            +
            			@common_difference, @a = a[1] - a[0], a
         
     | 
| 
      
 15 
     | 
    
         
            +
            			super @common_difference, @a[0]
         
     | 
| 
      
 16 
     | 
    
         
            +
            		end
         
     | 
| 
      
 17 
     | 
    
         
            +
            		def to_s # Modified to count from zero instead of one
         
     | 
| 
      
 18 
     | 
    
         
            +
            			"a[n] = #{a[0]} + #{idx d}n"
         
     | 
| 
      
 19 
     | 
    
         
            +
            		end
         
     | 
| 
      
 20 
     | 
    
         
            +
            	end
         
     | 
| 
      
 21 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "linear1/slope_intercept"
         
     | 
| 
      
 2 
     | 
    
         
            +
            module Linear1
         
     | 
| 
      
 3 
     | 
    
         
            +
            	class DirectVariation < SlopeIntercept
         
     | 
| 
      
 4 
     | 
    
         
            +
            		# @param index1 [Fixnum] the index of the first argument
         
     | 
| 
      
 5 
     | 
    
         
            +
            		# @return [DirectVariation]
         
     | 
| 
      
 6 
     | 
    
         
            +
            		def self.find index1
         
     | 
| 
      
 7 
     | 
    
         
            +
            			new ARGV[index1]
         
     | 
| 
      
 8 
     | 
    
         
            +
            		end
         
     | 
| 
      
 9 
     | 
    
         
            +
            		def initialize k=1
         
     | 
| 
      
 10 
     | 
    
         
            +
            			super k, 0
         
     | 
| 
      
 11 
     | 
    
         
            +
            		end
         
     | 
| 
      
 12 
     | 
    
         
            +
            		alias k slope
         
     | 
| 
      
 13 
     | 
    
         
            +
            		alias constant_of_variation k
         
     | 
| 
      
 14 
     | 
    
         
            +
            	end
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,73 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Linear1
         
     | 
| 
      
 2 
     | 
    
         
            +
            	class Function
         
     | 
| 
      
 3 
     | 
    
         
            +
            		attr_reader :slope, :y_intercept, :power
         
     | 
| 
      
 4 
     | 
    
         
            +
            		# @param i1 [Fixnum] the index to start search
         
     | 
| 
      
 5 
     | 
    
         
            +
            		# @return [Function]
         
     | 
| 
      
 6 
     | 
    
         
            +
            		def self.find i1
         
     | 
| 
      
 7 
     | 
    
         
            +
            			Function.new ARGV[i1], ARGV[i1 + 1], ARGV[i1 + 2]
         
     | 
| 
      
 8 
     | 
    
         
            +
            		end
         
     | 
| 
      
 9 
     | 
    
         
            +
            		def initialize(slope=1, y_intercept=0, power=1)
         
     | 
| 
      
 10 
     | 
    
         
            +
            			@slope, @y_intercept, @power = slope.to_f, y_intercept.to_f, power.to_i
         
     | 
| 
      
 11 
     | 
    
         
            +
            		end
         
     | 
| 
      
 12 
     | 
    
         
            +
            		# @param x [Integer, Float]
         
     | 
| 
      
 13 
     | 
    
         
            +
            		# @return [Integer, Float]
         
     | 
| 
      
 14 
     | 
    
         
            +
            		def execute x
         
     | 
| 
      
 15 
     | 
    
         
            +
            			raise ArgumentError unless x.kind_of? Numeric
         
     | 
| 
      
 16 
     | 
    
         
            +
            			return slope * x ** power + y_intercept
         
     | 
| 
      
 17 
     | 
    
         
            +
            		end
         
     | 
| 
      
 18 
     | 
    
         
            +
            		alias f execute
         
     | 
| 
      
 19 
     | 
    
         
            +
            		def x_intercept
         
     | 
| 
      
 20 
     | 
    
         
            +
            			f(0)
         
     | 
| 
      
 21 
     | 
    
         
            +
            		end
         
     | 
| 
      
 22 
     | 
    
         
            +
            		alias zero x_intercept
         
     | 
| 
      
 23 
     | 
    
         
            +
            		alias solution x_intercept
         
     | 
| 
      
 24 
     | 
    
         
            +
            		alias root x_intercept
         
     | 
| 
      
 25 
     | 
    
         
            +
            		def to_s
         
     | 
| 
      
 26 
     | 
    
         
            +
            			"f(x) = #{idx slope.to_i if slope.to_i == slope}x#{power_string unless power == 1}#{" + #{@y_intercept.to_i if @y_intercept.to_i == @y_intercept}" unless direct_variation?}"
         
     | 
| 
      
 27 
     | 
    
         
            +
            		end
         
     | 
| 
      
 28 
     | 
    
         
            +
            		def direct_variation?
         
     | 
| 
      
 29 
     | 
    
         
            +
            			y_intercept.zero? and power == 1
         
     | 
| 
      
 30 
     | 
    
         
            +
            		end
         
     | 
| 
      
 31 
     | 
    
         
            +
            		alias dv? direct_variation?
         
     | 
| 
      
 32 
     | 
    
         
            +
            		def to_direct_variation
         
     | 
| 
      
 33 
     | 
    
         
            +
            			if direct_variation?
         
     | 
| 
      
 34 
     | 
    
         
            +
            				require "linear1/direct_variation"
         
     | 
| 
      
 35 
     | 
    
         
            +
            				DirectVariation.new slope
         
     | 
| 
      
 36 
     | 
    
         
            +
            			else
         
     | 
| 
      
 37 
     | 
    
         
            +
            				raise TypeError, "Unable to convert to DirectVariation"
         
     | 
| 
      
 38 
     | 
    
         
            +
            			end
         
     | 
| 
      
 39 
     | 
    
         
            +
            		end
         
     | 
| 
      
 40 
     | 
    
         
            +
            		def to_slope_intercept
         
     | 
| 
      
 41 
     | 
    
         
            +
            			raise "power must be 1" unless power == 1
         
     | 
| 
      
 42 
     | 
    
         
            +
            			SlopeIntercept.new slope, y_intercept
         
     | 
| 
      
 43 
     | 
    
         
            +
            		end
         
     | 
| 
      
 44 
     | 
    
         
            +
            		alias to_dv to_direct_variation
         
     | 
| 
      
 45 
     | 
    
         
            +
            		private
         
     | 
| 
      
 46 
     | 
    
         
            +
            		def power_string
         
     | 
| 
      
 47 
     | 
    
         
            +
            			final = String.new
         
     | 
| 
      
 48 
     | 
    
         
            +
            			final += "\u207b" if @power < 0
         
     | 
| 
      
 49 
     | 
    
         
            +
            			final << case @power
         
     | 
| 
      
 50 
     | 
    
         
            +
            				when 0 then "\u2070"
         
     | 
| 
      
 51 
     | 
    
         
            +
            				when 1 then "\u00b9"
         
     | 
| 
      
 52 
     | 
    
         
            +
            				when 2 then "\u00b2"
         
     | 
| 
      
 53 
     | 
    
         
            +
            				when 3 then "\u00b3"
         
     | 
| 
      
 54 
     | 
    
         
            +
            				when 4 then "\u2074"
         
     | 
| 
      
 55 
     | 
    
         
            +
            				when 5 then "\u2075"
         
     | 
| 
      
 56 
     | 
    
         
            +
            				when 6 then "\u2076"
         
     | 
| 
      
 57 
     | 
    
         
            +
            				when 7 then "\u2077"
         
     | 
| 
      
 58 
     | 
    
         
            +
            				when 8 then "\u2078"
         
     | 
| 
      
 59 
     | 
    
         
            +
            				when 9 then "\u2079"
         
     | 
| 
      
 60 
     | 
    
         
            +
            			end
         
     | 
| 
      
 61 
     | 
    
         
            +
            			return final
         
     | 
| 
      
 62 
     | 
    
         
            +
            		end
         
     | 
| 
      
 63 
     | 
    
         
            +
            		def idx(s)
         
     | 
| 
      
 64 
     | 
    
         
            +
            			return case s
         
     | 
| 
      
 65 
     | 
    
         
            +
            				when 1 then String.new
         
     | 
| 
      
 66 
     | 
    
         
            +
            				when -1 then ?-
         
     | 
| 
      
 67 
     | 
    
         
            +
            			else
         
     | 
| 
      
 68 
     | 
    
         
            +
            				s
         
     | 
| 
      
 69 
     | 
    
         
            +
            			end
         
     | 
| 
      
 70 
     | 
    
         
            +
            		end
         
     | 
| 
      
 71 
     | 
    
         
            +
            	end
         
     | 
| 
      
 72 
     | 
    
         
            +
            end
         
     | 
| 
      
 73 
     | 
    
         
            +
            			
         
     | 
| 
         @@ -0,0 +1,89 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "linear1/function"
         
     | 
| 
      
 2 
     | 
    
         
            +
            module Linear1
         
     | 
| 
      
 3 
     | 
    
         
            +
            	class Graph
         
     | 
| 
      
 4 
     | 
    
         
            +
            		def initialize equation
         
     | 
| 
      
 5 
     | 
    
         
            +
               			@equation = equation
         
     | 
| 
      
 6 
     | 
    
         
            +
            		end
         
     | 
| 
      
 7 
     | 
    
         
            +
            		@@axis = {x: 75, y: 25}
         
     | 
| 
      
 8 
     | 
    
         
            +
                
         
     | 
| 
      
 9 
     | 
    
         
            +
                		def self.axis(key)
         
     | 
| 
      
 10 
     | 
    
         
            +
                			@@axis[key]
         
     | 
| 
      
 11 
     | 
    
         
            +
                		end
         
     | 
| 
      
 12 
     | 
    
         
            +
            		
         
     | 
| 
      
 13 
     | 
    
         
            +
            		ORIGIN = {x: @@axis[:x] / 2, y: @@axis[:y] / 2} # The center of the graph
         
     | 
| 
      
 14 
     | 
    
         
            +
            	
         
     | 
| 
      
 15 
     | 
    
         
            +
              		def to_a
         
     | 
| 
      
 16 
     | 
    
         
            +
              			final = Array.new
         
     | 
| 
      
 17 
     | 
    
         
            +
              			y = 0
         
     | 
| 
      
 18 
     | 
    
         
            +
              			@@axis[:y].times do
         
     | 
| 
      
 19 
     | 
    
         
            +
              				final[y] = Array.new
         
     | 
| 
      
 20 
     | 
    
         
            +
              				x = 0
         
     | 
| 
      
 21 
     | 
    
         
            +
              				@@axis[:x].times do
         
     | 
| 
      
 22 
     | 
    
         
            +
              					final[y][x] = (!to_hash[y].nil? && to_hash[y] == x - ORIGIN[:x] ) ? ?\u2022 : format_grid(x - ORIGIN[:x], y - ORIGIN[:y])
         
     | 
| 
      
 23 
     | 
    
         
            +
              					x += 1
         
     | 
| 
      
 24 
     | 
    
         
            +
              				end
         
     | 
| 
      
 25 
     | 
    
         
            +
              				y += 1
         
     | 
| 
      
 26 
     | 
    
         
            +
            			end
         
     | 
| 
      
 27 
     | 
    
         
            +
            			return final.reverse
         
     | 
| 
      
 28 
     | 
    
         
            +
            		end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            	
         
     | 
| 
      
 31 
     | 
    
         
            +
              		def to_hash
         
     | 
| 
      
 32 
     | 
    
         
            +
              			table = Hash.new
         
     | 
| 
      
 33 
     | 
    
         
            +
              			for y in (0..@@axis[:y]).to_a
         
     | 
| 
      
 34 
     | 
    
         
            +
              				for x in (0..@@axis[:x]).to_a
         
     | 
| 
      
 35 
     | 
    
         
            +
              					x_exec, y_exec = @equation.execute(x - ORIGIN[:x]), y - ORIGIN[:y]
         
     | 
| 
      
 36 
     | 
    
         
            +
              					table[y] = x_exec if x_exec == y_exec
         
     | 
| 
      
 37 
     | 
    
         
            +
              				end
         
     | 
| 
      
 38 
     | 
    
         
            +
              			end
         
     | 
| 
      
 39 
     | 
    
         
            +
              			return table
         
     | 
| 
      
 40 
     | 
    
         
            +
              		end
         
     | 
| 
      
 41 
     | 
    
         
            +
              		alias to_h to_hash
         
     | 
| 
      
 42 
     | 
    
         
            +
              		alias xy to_hash
         
     | 
| 
      
 43 
     | 
    
         
            +
            		def domain # @return [Array<Integer>] the values of the xy hash
         
     | 
| 
      
 44 
     | 
    
         
            +
              			xy.values
         
     | 
| 
      
 45 
     | 
    
         
            +
              		end
         
     | 
| 
      
 46 
     | 
    
         
            +
              	
         
     | 
| 
      
 47 
     | 
    
         
            +
              		def range # @return [Array<Integer>] the keys of the xy hash
         
     | 
| 
      
 48 
     | 
    
         
            +
              			xy.keys
         
     | 
| 
      
 49 
     | 
    
         
            +
              		end
         
     | 
| 
      
 50 
     | 
    
         
            +
              		
         
     | 
| 
      
 51 
     | 
    
         
            +
              		# @return [String] the graph
         
     | 
| 
      
 52 
     | 
    
         
            +
              		def to_s
         
     | 
| 
      
 53 
     | 
    
         
            +
              			result = String.new
         
     | 
| 
      
 54 
     | 
    
         
            +
              			for y_index in to_a
         
     | 
| 
      
 55 
     | 
    
         
            +
              				for x_index in y_index
         
     | 
| 
      
 56 
     | 
    
         
            +
              					result << x_index
         
     | 
| 
      
 57 
     | 
    
         
            +
              				end
         
     | 
| 
      
 58 
     | 
    
         
            +
              				result << ?\n
         
     | 
| 
      
 59 
     | 
    
         
            +
              			end
         
     | 
| 
      
 60 
     | 
    
         
            +
              			return result.center(100)
         
     | 
| 
      
 61 
     | 
    
         
            +
              		end
         
     | 
| 
      
 62 
     | 
    
         
            +
              	
         
     | 
| 
      
 63 
     | 
    
         
            +
              		private
         
     | 
| 
      
 64 
     | 
    
         
            +
              	
         
     | 
| 
      
 65 
     | 
    
         
            +
              		def check_axis_argument(arg)
         
     | 
| 
      
 66 
     | 
    
         
            +
            			if !(num.kind_of?(Integer) )
         
     | 
| 
      
 67 
     | 
    
         
            +
            				raise ArgumentError, "Argument must be a kind of Integer"
         
     | 
| 
      
 68 
     | 
    
         
            +
            			elsif num % 2 != 0
         
     | 
| 
      
 69 
     | 
    
         
            +
            				raise ArgumentError, "Argument must be even"
         
     | 
| 
      
 70 
     | 
    
         
            +
            			end
         
     | 
| 
      
 71 
     | 
    
         
            +
             		end
         
     | 
| 
      
 72 
     | 
    
         
            +
             
         
     | 
| 
      
 73 
     | 
    
         
            +
            		alias caa check_axis_argument
         
     | 
| 
      
 74 
     | 
    
         
            +
            		
         
     | 
| 
      
 75 
     | 
    
         
            +
            		# @return [String, nil]
         
     | 
| 
      
 76 
     | 
    
         
            +
            		def format_grid x, y
         
     | 
| 
      
 77 
     | 
    
         
            +
            			if x.zero? && y.zero?
         
     | 
| 
      
 78 
     | 
    
         
            +
            				"+"
         
     | 
| 
      
 79 
     | 
    
         
            +
            			elsif x.zero? && !y.zero?
         
     | 
| 
      
 80 
     | 
    
         
            +
            				"|"
         
     | 
| 
      
 81 
     | 
    
         
            +
            			elsif y.zero? && !x.zero?
         
     | 
| 
      
 82 
     | 
    
         
            +
            				"-"
         
     | 
| 
      
 83 
     | 
    
         
            +
            			else
         
     | 
| 
      
 84 
     | 
    
         
            +
            				" "
         
     | 
| 
      
 85 
     | 
    
         
            +
            			end
         
     | 
| 
      
 86 
     | 
    
         
            +
            		end
         
     | 
| 
      
 87 
     | 
    
         
            +
            				
         
     | 
| 
      
 88 
     | 
    
         
            +
            	end
         
     | 
| 
      
 89 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,22 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "linear1/function"
         
     | 
| 
      
 2 
     | 
    
         
            +
            module Linear1
         
     | 
| 
      
 3 
     | 
    
         
            +
            	class PointSlope < Function
         
     | 
| 
      
 4 
     | 
    
         
            +
            		attr_reader :x1, :y1
         
     | 
| 
      
 5 
     | 
    
         
            +
            		private :y_intercept, :power
         
     | 
| 
      
 6 
     | 
    
         
            +
            		def initialize slope, x, y
         
     | 
| 
      
 7 
     | 
    
         
            +
            			@slope, @x1, @y1 = slope.to_f, x.to_f, y.to_f
         
     | 
| 
      
 8 
     | 
    
         
            +
            			super @slope, @x1 - @y1
         
     | 
| 
      
 9 
     | 
    
         
            +
            		end
         
     | 
| 
      
 10 
     | 
    
         
            +
            		def self.find index
         
     | 
| 
      
 11 
     | 
    
         
            +
            			new ARGV[index], ARGV[index + 1], ARGV[index + 2]
         
     | 
| 
      
 12 
     | 
    
         
            +
            		end
         
     | 
| 
      
 13 
     | 
    
         
            +
            		def to_slope_intercept
         
     | 
| 
      
 14 
     | 
    
         
            +
            			require "linear1/slope_intercept"
         
     | 
| 
      
 15 
     | 
    
         
            +
            			SlopeIntercept.new slope, y_intercept
         
     | 
| 
      
 16 
     | 
    
         
            +
            		end
         
     | 
| 
      
 17 
     | 
    
         
            +
            		alias to_si to_slope_intercept
         
     | 
| 
      
 18 
     | 
    
         
            +
            		def to_standard
         
     | 
| 
      
 19 
     | 
    
         
            +
            			to_si.to_standard
         
     | 
| 
      
 20 
     | 
    
         
            +
            		end
         
     | 
| 
      
 21 
     | 
    
         
            +
            	end
         
     | 
| 
      
 22 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,23 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "linear1/function"
         
     | 
| 
      
 2 
     | 
    
         
            +
            module Linear1
         
     | 
| 
      
 3 
     | 
    
         
            +
            	class SlopeIntercept < Function
         
     | 
| 
      
 4 
     | 
    
         
            +
            		def self.find(index1, array=ARGV)
         
     | 
| 
      
 5 
     | 
    
         
            +
            			i = 0
         
     | 
| 
      
 6 
     | 
    
         
            +
            			until i == 2
         
     | 
| 
      
 7 
     | 
    
         
            +
            				raise ArgumentError, "array[#{index1 + i}] must be a number" unless (array[index1 + i].to_i.to_s == array[index1 + i] || array[index1 + i].to_f.to_s == array[index1 + i])
         
     | 
| 
      
 8 
     | 
    
         
            +
            				i += 1
         
     | 
| 
      
 9 
     | 
    
         
            +
            			end
         
     | 
| 
      
 10 
     | 
    
         
            +
            			return new array[index1+0].to_f, array[index1+1].to_f
         
     | 
| 
      
 11 
     | 
    
         
            +
            		end
         
     | 
| 
      
 12 
     | 
    
         
            +
            		def to_s
         
     | 
| 
      
 13 
     | 
    
         
            +
            			return super.sub "f(x)", "y"
         
     | 
| 
      
 14 
     | 
    
         
            +
            		end
         
     | 
| 
      
 15 
     | 
    
         
            +
            		def initialize(slope, y_intercept)
         
     | 
| 
      
 16 
     | 
    
         
            +
            			super
         
     | 
| 
      
 17 
     | 
    
         
            +
            		end
         
     | 
| 
      
 18 
     | 
    
         
            +
            		def to_standard
         
     | 
| 
      
 19 
     | 
    
         
            +
            			require "linear1/standard"
         
     | 
| 
      
 20 
     | 
    
         
            +
            			Standard.new slope, -1, -y_intercept
         
     | 
| 
      
 21 
     | 
    
         
            +
            		end
         
     | 
| 
      
 22 
     | 
    
         
            +
            	end
         
     | 
| 
      
 23 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,41 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "linear1/function"
         
     | 
| 
      
 2 
     | 
    
         
            +
            module Linear1
         
     | 
| 
      
 3 
     | 
    
         
            +
            	class Standard < Function
         
     | 
| 
      
 4 
     | 
    
         
            +
            		attr_reader :a, :b, :c
         
     | 
| 
      
 5 
     | 
    
         
            +
            		private :slope, :y_intercept
         
     | 
| 
      
 6 
     | 
    
         
            +
            		def self.find index
         
     | 
| 
      
 7 
     | 
    
         
            +
            			array = ARGV[index..(index + 2)]
         
     | 
| 
      
 8 
     | 
    
         
            +
            			$equation_index = index + 3
         
     | 
| 
      
 9 
     | 
    
         
            +
            			return new array[0], array[1], array[2]
         
     | 
| 
      
 10 
     | 
    
         
            +
            		end
         
     | 
| 
      
 11 
     | 
    
         
            +
            		def initialize a, b, c
         
     | 
| 
      
 12 
     | 
    
         
            +
            			@a, @b, @c = a.to_f, b.to_f, c.to_f
         
     | 
| 
      
 13 
     | 
    
         
            +
            			super @c / @b / @a, @c / @b
         
     | 
| 
      
 14 
     | 
    
         
            +
            		end
         
     | 
| 
      
 15 
     | 
    
         
            +
            		def multiply int
         
     | 
| 
      
 16 
     | 
    
         
            +
            			new @a * int, @b * int, @c * int
         
     | 
| 
      
 17 
     | 
    
         
            +
            		end
         
     | 
| 
      
 18 
     | 
    
         
            +
            		def multiply! factor
         
     | 
| 
      
 19 
     | 
    
         
            +
            			@a *= factor
         
     | 
| 
      
 20 
     | 
    
         
            +
            			@b *= factor
         
     | 
| 
      
 21 
     | 
    
         
            +
            			@c *= factor
         
     | 
| 
      
 22 
     | 
    
         
            +
            		end
         
     | 
| 
      
 23 
     | 
    
         
            +
            		def add! int
         
     | 
| 
      
 24 
     | 
    
         
            +
            			@a += int
         
     | 
| 
      
 25 
     | 
    
         
            +
            			@b += int
         
     | 
| 
      
 26 
     | 
    
         
            +
            			@c += int
         
     | 
| 
      
 27 
     | 
    
         
            +
            		end
         
     | 
| 
      
 28 
     | 
    
         
            +
            		def add int
         
     | 
| 
      
 29 
     | 
    
         
            +
            			new @a + int, @b + int, @c + int
         
     | 
| 
      
 30 
     | 
    
         
            +
            		end
         
     | 
| 
      
 31 
     | 
    
         
            +
            		def to_s
         
     | 
| 
      
 32 
     | 
    
         
            +
            			"#{idx a}x + #{idx b} = #{c}"
         
     | 
| 
      
 33 
     | 
    
         
            +
            		end
         
     | 
| 
      
 34 
     | 
    
         
            +
            		def to_slope_intercept
         
     | 
| 
      
 35 
     | 
    
         
            +
            			require "linear1/slope_intercept"
         
     | 
| 
      
 36 
     | 
    
         
            +
            			SlopeIntercept.new slope, y_intercept
         
     | 
| 
      
 37 
     | 
    
         
            +
            		end
         
     | 
| 
      
 38 
     | 
    
         
            +
            		alias to_si to_slope_intercept
         
     | 
| 
      
 39 
     | 
    
         
            +
            	end
         
     | 
| 
      
 40 
     | 
    
         
            +
            end
         
     | 
| 
      
 41 
     | 
    
         
            +
            				
         
     | 
| 
         @@ -0,0 +1,17 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Linear1
         
     | 
| 
      
 2 
     | 
    
         
            +
              class System
         
     | 
| 
      
 3 
     | 
    
         
            +
                attr_reader :e1, :e2
         
     | 
| 
      
 4 
     | 
    
         
            +
                def initialize equation1, equation2
         
     | 
| 
      
 5 
     | 
    
         
            +
                  @e1, @e2 = equation1, equation2
         
     | 
| 
      
 6 
     | 
    
         
            +
                end
         
     | 
| 
      
 7 
     | 
    
         
            +
                def execute x
         
     | 
| 
      
 8 
     | 
    
         
            +
                  final = Array.new
         
     | 
| 
      
 9 
     | 
    
         
            +
                  @equations.each {|equation| final << equation.execute(x)}
         
     | 
| 
      
 10 
     | 
    
         
            +
                  return final
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
            end
         
     | 
| 
      
 14 
     | 
    
         
            +
                
         
     | 
| 
      
 15 
     | 
    
         
            +
                
         
     | 
| 
      
 16 
     | 
    
         
            +
                  
         
     | 
| 
      
 17 
     | 
    
         
            +
              
         
     | 
    
        data/lib/linear1.rb
    ADDED
    
    
| 
         @@ -0,0 +1,13 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "linear1/function"
         
     | 
| 
      
 2 
     | 
    
         
            +
            include Linear1
         
     | 
| 
      
 3 
     | 
    
         
            +
            RSpec.describe Function do
         
     | 
| 
      
 4 
     | 
    
         
            +
              describe "#new" do
         
     | 
| 
      
 5 
     | 
    
         
            +
                context "given no arguments" do
         
     | 
| 
      
 6 
     | 
    
         
            +
                  subject {Function.new}
         
     | 
| 
      
 7 
     | 
    
         
            +
                  its(:to_s) {is_expected.to eq "f(x) = x"}
         
     | 
| 
      
 8 
     | 
    
         
            +
                  its(:power) {is_expected.to eq 1}
         
     | 
| 
      
 9 
     | 
    
         
            +
                  its(:slope) {is_expected.to eq 1}
         
     | 
| 
      
 10 
     | 
    
         
            +
                  its(:y_intercept) {is_expected.to be_zero}
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,13 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "linear1/graph"
         
     | 
| 
      
 2 
     | 
    
         
            +
            include Linear1
         
     | 
| 
      
 3 
     | 
    
         
            +
            RSpec.describe Graph do
         
     | 
| 
      
 4 
     | 
    
         
            +
              describe "#new" do
         
     | 
| 
      
 5 
     | 
    
         
            +
                context "given Function" do
         
     | 
| 
      
 6 
     | 
    
         
            +
                  subject {Graph.new Function.new}
         
     | 
| 
      
 7 
     | 
    
         
            +
                  it "should not raise error" do
         
     | 
| 
      
 8 
     | 
    
         
            +
                    expect{Graph.new Function.new}.to_not raise_error
         
     | 
| 
      
 9 
     | 
    
         
            +
                  end
         
     | 
| 
      
 10 
     | 
    
         
            +
                  %i[range domain to_a].each {|method| its(method) {is_expected.to be_an_instance_of Array} }
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "linear1/slope_intercept"
         
     | 
| 
      
 2 
     | 
    
         
            +
            include Linear1
         
     | 
| 
      
 3 
     | 
    
         
            +
            RSpec.describe SlopeIntercept do
         
     | 
| 
      
 4 
     | 
    
         
            +
            	describe "#new" do
         
     | 
| 
      
 5 
     | 
    
         
            +
            		subject {SlopeIntercept.new rand, rand}
         
     | 
| 
      
 6 
     | 
    
         
            +
            		it {is_expected.to be_kind_of Function}
         
     | 
| 
      
 7 
     | 
    
         
            +
            		its(:power) {is_expected.to eq 1}
         
     | 
| 
      
 8 
     | 
    
         
            +
            		it {is_expected.to respond_to :execute, :y_intercept, :to_direct_variation, :to_standard, :slope}
         
     | 
| 
      
 9 
     | 
    
         
            +
            		context "given 1" do
         
     | 
| 
      
 10 
     | 
    
         
            +
            			it "should raise error" do
         
     | 
| 
      
 11 
     | 
    
         
            +
            				expect{SlopeIntercept.new 1}.to raise_error
         
     | 
| 
      
 12 
     | 
    
         
            +
            			end
         
     | 
| 
      
 13 
     | 
    
         
            +
            		end
         
     | 
| 
      
 14 
     | 
    
         
            +
            		context "given 1, 0" do
         
     | 
| 
      
 15 
     | 
    
         
            +
            			subject {SlopeIntercept.new 3, 6}
         
     | 
| 
      
 16 
     | 
    
         
            +
            			it {is_expected.to_not be_direct_variation}
         
     | 
| 
      
 17 
     | 
    
         
            +
            			its(:to_s) {is_expected.to eq "y = 3x + 6"}
         
     | 
| 
      
 18 
     | 
    
         
            +
            		end
         
     | 
| 
      
 19 
     | 
    
         
            +
            	end
         
     | 
| 
      
 20 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,10 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "linear1/standard"
         
     | 
| 
      
 2 
     | 
    
         
            +
            include Linear1
         
     | 
| 
      
 3 
     | 
    
         
            +
            RSpec.describe Standard do
         
     | 
| 
      
 4 
     | 
    
         
            +
            	describe "#new" do
         
     | 
| 
      
 5 
     | 
    
         
            +
            		subject {Standard.new rand, rand, rand}
         
     | 
| 
      
 6 
     | 
    
         
            +
            		it {is_expected.to be_kind_of Function}
         
     | 
| 
      
 7 
     | 
    
         
            +
            		it {is_expected.to respond_to :execute, :a, :b, :c, :direct_variation?}
         
     | 
| 
      
 8 
     | 
    
         
            +
            	end
         
     | 
| 
      
 9 
     | 
    
         
            +
            end
         
     | 
| 
      
 10 
     | 
    
         
            +
            		
         
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,96 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: linear1
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.0.0.pre
         
     | 
| 
      
 5 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 6 
     | 
    
         
            +
            authors:
         
     | 
| 
      
 7 
     | 
    
         
            +
            - Zachary Perlmutter
         
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 9 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 10 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2015-01-29 00:00:00.000000000 Z
         
     | 
| 
      
 12 
     | 
    
         
            +
            dependencies:
         
     | 
| 
      
 13 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 14 
     | 
    
         
            +
              name: rspec
         
     | 
| 
      
 15 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 16 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 17 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 18 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 19 
     | 
    
         
            +
                    version: '3.1'
         
     | 
| 
      
 20 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 21 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 22 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 23 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 24 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 25 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 26 
     | 
    
         
            +
                    version: '3.1'
         
     | 
| 
      
 27 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 28 
     | 
    
         
            +
              name: rspec-its
         
     | 
| 
      
 29 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 30 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 31 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 32 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 33 
     | 
    
         
            +
                    version: '1.1'
         
     | 
| 
      
 34 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 35 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 36 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 37 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 38 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 39 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 40 
     | 
    
         
            +
                    version: '1.1'
         
     | 
| 
      
 41 
     | 
    
         
            +
            description: 
         
     | 
| 
      
 42 
     | 
    
         
            +
            email: zrp200@gmail.com
         
     | 
| 
      
 43 
     | 
    
         
            +
            executables:
         
     | 
| 
      
 44 
     | 
    
         
            +
            - linear1
         
     | 
| 
      
 45 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 46 
     | 
    
         
            +
            extra_rdoc_files:
         
     | 
| 
      
 47 
     | 
    
         
            +
            - LICENSE.md
         
     | 
| 
      
 48 
     | 
    
         
            +
            - README.md
         
     | 
| 
      
 49 
     | 
    
         
            +
            files:
         
     | 
| 
      
 50 
     | 
    
         
            +
            - LICENSE.md
         
     | 
| 
      
 51 
     | 
    
         
            +
            - README.md
         
     | 
| 
      
 52 
     | 
    
         
            +
            - bin/linear1
         
     | 
| 
      
 53 
     | 
    
         
            +
            - lib/linear1.rb
         
     | 
| 
      
 54 
     | 
    
         
            +
            - lib/linear1/arthmetic_sequence.rb
         
     | 
| 
      
 55 
     | 
    
         
            +
            - lib/linear1/direct_variation.rb
         
     | 
| 
      
 56 
     | 
    
         
            +
            - lib/linear1/function.rb
         
     | 
| 
      
 57 
     | 
    
         
            +
            - lib/linear1/graph.rb
         
     | 
| 
      
 58 
     | 
    
         
            +
            - lib/linear1/point_slope.rb
         
     | 
| 
      
 59 
     | 
    
         
            +
            - lib/linear1/slope_intercept.rb
         
     | 
| 
      
 60 
     | 
    
         
            +
            - lib/linear1/standard.rb
         
     | 
| 
      
 61 
     | 
    
         
            +
            - lib/linear1/system.rb
         
     | 
| 
      
 62 
     | 
    
         
            +
            - spec/lib/linear1/direct_variation_spec.rb
         
     | 
| 
      
 63 
     | 
    
         
            +
            - spec/lib/linear1/function_spec.rb
         
     | 
| 
      
 64 
     | 
    
         
            +
            - spec/lib/linear1/graph_spec.rb
         
     | 
| 
      
 65 
     | 
    
         
            +
            - spec/lib/linear1/slope_intercept_spec.rb
         
     | 
| 
      
 66 
     | 
    
         
            +
            - spec/lib/linear1/standard_spec.rb
         
     | 
| 
      
 67 
     | 
    
         
            +
            homepage: 
         
     | 
| 
      
 68 
     | 
    
         
            +
            licenses:
         
     | 
| 
      
 69 
     | 
    
         
            +
            - MIT
         
     | 
| 
      
 70 
     | 
    
         
            +
            metadata: {}
         
     | 
| 
      
 71 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 72 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
      
 73 
     | 
    
         
            +
            require_paths:
         
     | 
| 
      
 74 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 75 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 76 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 77 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 78 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 79 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 80 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 81 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 82 
     | 
    
         
            +
              - - ">"
         
     | 
| 
      
 83 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 84 
     | 
    
         
            +
                  version: 1.3.1
         
     | 
| 
      
 85 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 86 
     | 
    
         
            +
            rubyforge_project: 
         
     | 
| 
      
 87 
     | 
    
         
            +
            rubygems_version: 2.2.2
         
     | 
| 
      
 88 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 89 
     | 
    
         
            +
            specification_version: 4
         
     | 
| 
      
 90 
     | 
    
         
            +
            summary: Does linear algebra, to an extent
         
     | 
| 
      
 91 
     | 
    
         
            +
            test_files:
         
     | 
| 
      
 92 
     | 
    
         
            +
            - spec/lib/linear1/direct_variation_spec.rb
         
     | 
| 
      
 93 
     | 
    
         
            +
            - spec/lib/linear1/function_spec.rb
         
     | 
| 
      
 94 
     | 
    
         
            +
            - spec/lib/linear1/graph_spec.rb
         
     | 
| 
      
 95 
     | 
    
         
            +
            - spec/lib/linear1/slope_intercept_spec.rb
         
     | 
| 
      
 96 
     | 
    
         
            +
            - spec/lib/linear1/standard_spec.rb
         
     |