belir 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/belir.rb +50 -0
  3. metadata +128 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 85e40e1704edda53d261d8be3feffd3d329bbc56
4
+ data.tar.gz: ab3770c7ac2a48de3c2cc7478ed62b7f2653d388
5
+ SHA512:
6
+ metadata.gz: 9f269852294049f7084790bcc1eaada0af758b141eb21a973f2803127301ed8a4648a8e624418845c5279de65199c4525a20847e4e422f780af781d089c302e2
7
+ data.tar.gz: 3d5c69483c43db888bbf06ea28147fee7e54b146a9f205188c8e98b38ae7b2994dff6096a31ed4566f84f399323f30e331ebfc5a0ba0680c89159490750c3ba6
data/lib/belir.rb ADDED
@@ -0,0 +1,50 @@
1
+ module Belir
2
+ ##
3
+ # Represents an Equation with one output and multiple input values
4
+ #
5
+ class Equation
6
+ attr_reader :output
7
+ attr_reader :inputs
8
+
9
+ def initialize(output, *inputs, &block)
10
+ @output = output
11
+ @inputs = inputs
12
+ @lambda = block
13
+ end
14
+
15
+ def calculate(*inputs)
16
+ # Note the splat (*inputs) to convert [2] => 2
17
+ @lambda.call(*inputs)
18
+ end
19
+ end
20
+
21
+ ##
22
+ # Represents a set or System of Equations
23
+ #
24
+ class System
25
+ def initialize(*equations)
26
+ @equations = equations
27
+ end
28
+
29
+ def add_equation(eqn)
30
+ @equations.push(eqn)
31
+ end
32
+
33
+ def solve(vars)
34
+ begin
35
+ found = false
36
+ @equations.each do |eqn|
37
+ if vars[eqn.output].nil? && eqn.inputs.all? { |input| vars.key? input }
38
+ args = []
39
+ eqn.inputs.each do |input|
40
+ args.push vars[input]
41
+ end
42
+ vars[eqn.output] = eqn.calculate(*args) # Splat to prevent [[2, 3]]
43
+ found = true
44
+ end
45
+ end
46
+ end while found
47
+ vars
48
+ end
49
+ end
50
+ end
metadata ADDED
@@ -0,0 +1,128 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: belir
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Caleb Smith
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-01-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rubocop
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.49'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.49'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rdoc
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '4.2'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '4.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.15'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.15'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '12.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '12.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: test-unit
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.2'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.2'
83
+ - !ruby/object:Gem::Dependency
84
+ name: github_changelog_generator
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.14'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.14'
97
+ description: Compute Solutions to Sets of Equations Given Certain Values
98
+ email: karagenit@outlook.com
99
+ executables: []
100
+ extensions: []
101
+ extra_rdoc_files: []
102
+ files:
103
+ - lib/belir.rb
104
+ homepage: https://github.com/karagenit/model
105
+ licenses:
106
+ - MIT
107
+ metadata: {}
108
+ post_install_message:
109
+ rdoc_options: []
110
+ require_paths:
111
+ - lib/
112
+ required_ruby_version: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ required_rubygems_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ requirements: []
123
+ rubyforge_project:
124
+ rubygems_version: 2.6.12
125
+ signing_key:
126
+ specification_version: 4
127
+ summary: Solve Systems of Equations
128
+ test_files: []