belir 1.0.0
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/lib/belir.rb +50 -0
- 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: []
|