fraction-tree 2.0.1 → 2.1.1
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 +4 -4
- data/lib/fraction_tree/node.rb +10 -7
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 829e0e03c9678bf23d5fd2762e0f78752fde5f9767d753af4eeb311c568adbc1
|
4
|
+
data.tar.gz: d5374255c2f4b844a215699534ebd654452824de5bc427f76036e04e4cb9b850
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f1fff34fb57bb40e13926686ee22113ceadf0f8a11ede4d4cb81b5fff388427c210e04320b3bcf92b31220d7021419b51d9c8c9d172ca525b9d8e886651d7b4b
|
7
|
+
data.tar.gz: cc40330432c1ce4adce30507041a11ca55816bbc67710178388414cc6ca78b70c028c4fb98078ad75342f2f04c352d83404fb4402dd1297201512d8edba0ae57
|
data/lib/fraction_tree/node.rb
CHANGED
@@ -42,8 +42,9 @@ class FractionTree
|
|
42
42
|
# @return [String] the Stern-Brocot encoding of number
|
43
43
|
# @example
|
44
44
|
# FractionTree::Node.encode(4/3r) => "RLL"
|
45
|
+
# @param limit of codes to generate
|
45
46
|
#
|
46
|
-
def encode(number)
|
47
|
+
def encode(number, limit: Float::INFINITY)
|
47
48
|
return nil if (number.infinite? || number.zero?)
|
48
49
|
|
49
50
|
m = number.numerator
|
@@ -52,7 +53,7 @@ class FractionTree
|
|
52
53
|
return "I" if m == n
|
53
54
|
|
54
55
|
"".tap do |string|
|
55
|
-
while m != n
|
56
|
+
while m != n && string.length < limit
|
56
57
|
if m < n
|
57
58
|
string << "L"
|
58
59
|
n = n - m
|
@@ -90,8 +91,9 @@ class FractionTree
|
|
90
91
|
# @example
|
91
92
|
# FractionTree.node(7/4r).path
|
92
93
|
# => [(0/1), (1/0), (1/1), (2/1), (3/2), (5/3), (7/4)]
|
94
|
+
# @param limit of nodes to generate
|
93
95
|
#
|
94
|
-
def path
|
96
|
+
def path(limit: Float::INFINITY)
|
95
97
|
return nil if infinite? || zero?
|
96
98
|
|
97
99
|
ln = tree.node(FractionTree.left_node)
|
@@ -104,7 +106,7 @@ class FractionTree
|
|
104
106
|
n = denominator
|
105
107
|
[].tap do |p|
|
106
108
|
p << ln << rn << mn
|
107
|
-
while m != n
|
109
|
+
while m != n && p.length < limit
|
108
110
|
if m < n
|
109
111
|
result = result * LEFT_MATRIX
|
110
112
|
n = n - m
|
@@ -181,10 +183,11 @@ class FractionTree
|
|
181
183
|
|
182
184
|
# @return [String] encoding of self
|
183
185
|
# @example
|
184
|
-
# FractionTree.node(5/4r).encoding => "
|
186
|
+
# FractionTree.node(Math.log2(5/4r)).encoding(limit: 30) => "LLLRRRRRRRRRLLRRLLLLRRRRRRLLRL"
|
187
|
+
# @param limit of codes to generate
|
185
188
|
#
|
186
|
-
def encoding
|
187
|
-
|
189
|
+
def encoding(limit: Float::INFINITY)
|
190
|
+
self.class.encode(number, limit:)
|
188
191
|
end
|
189
192
|
|
190
193
|
# @return [FractionTree::Node] sum of self and another node
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fraction-tree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jose Hales-Garcia
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-12-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: matrix
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '3
|
61
|
+
version: '3'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '3
|
68
|
+
version: '3'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: byebug
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -138,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
138
138
|
- !ruby/object:Gem::Version
|
139
139
|
version: '3.1'
|
140
140
|
requirements: []
|
141
|
-
rubygems_version: 3.5.
|
141
|
+
rubygems_version: 3.5.23
|
142
142
|
signing_key:
|
143
143
|
specification_version: 4
|
144
144
|
summary: Fraction tree
|