figurate_numbers 1.2.0 → 1.3.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 +4 -4
- data/README.md +13 -12
- data/lib/figurate_numbers.rb +47 -6
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3ce2e9677b127bf7f73fb6776128e8691fa53353495f6ed7fc61e60961f39abb
|
4
|
+
data.tar.gz: d0596c55e684e9716c32c6e495c5feef10a4d0d25e91daac7914f49af652561b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a6b1da7cb33f30eed0179311888195fc837c06e8a419984d38c352e892a71d46724297930810a302edaf3fd699052cd7b8c7e737e5b17e327c81105f28658c92
|
7
|
+
data.tar.gz: e3fc3b4415f2576c7222c029d9a030bfa44bf86270700e4022c24ce82fa6e73b541cbfc1ee3eceb415f2186a6dec5bf7954629a3ad14d67f08fd73e9cc511eae
|
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# Figurate Numbers
|
2
2
|
|
3
|
-
|
3
|
+

|
4
|
+

|
5
|
+

|
4
6
|
|
5
7
|
`figurate_numbers` is a Ruby module that implements `239 infinite number sequences` based on the formulas from the wonderful book
|
6
8
|
> [Figurate Numbers (2012)](https://books.google.com.pe/books/about/Figurate_Numbers.html?id=ERS7CgAAQBAJ&redir_esc=y) by Elena Deza and Michel Deza.
|
@@ -11,10 +13,10 @@ Following the order of the book, the methods are divided into 3 types according
|
|
11
13
|
|
12
14
|
1. **Plane** figurate numbers implemented = `79`
|
13
15
|
2. **Space** figurate numbers implemented = `86`
|
14
|
-
3. **Multidimensional** figurate numbers implemented = `
|
16
|
+
3. **Multidimensional** figurate numbers implemented = `70`
|
15
17
|
4. **Zoo of figurate-related numbers** implemented = `6`
|
16
18
|
|
17
|
-
- [x] **TOTAL** = `
|
19
|
+
- [x] **TOTAL** = `241` infinite sequences of figurate numbers implemented
|
18
20
|
|
19
21
|
## Installation and use
|
20
22
|
|
@@ -192,7 +194,7 @@ end
|
|
192
194
|
<li><code>centered_tetrahedron_numbers = centered_tetrahedral_numbers</code></li>
|
193
195
|
<li><code>centered_square_pyramid_numbers = centered_pyramid_numbers</code></li>
|
194
196
|
<li><code>centered_mgonal_pyramid_numbers(m)</code></li>
|
195
|
-
<li><code>centered_pentagonal_pyramid_numbers !=
|
197
|
+
<li><code>centered_pentagonal_pyramid_numbers != centered_octahedron_numbers (equality only in quantity)</code></li>
|
196
198
|
<li><code>centered_hexagonal_pyramid_numbers</code></li>
|
197
199
|
<li><code>centered_heptagonal_pyramid_numbers</code></li>
|
198
200
|
<li><code>centered_octagonal_pyramid_numbers</code></li>
|
@@ -236,8 +238,8 @@ end
|
|
236
238
|
|
237
239
|
### 3. Multidimensional figurate numbers
|
238
240
|
<ol>
|
239
|
-
<li><code>pentatope_numbers =
|
240
|
-
<li><code>k_dimensional_hypertetrahedron_numbers(k) = k_hypertetrahedron_numbers(k) = regular_k_polytopic_numbers(k) =
|
241
|
+
<li><code>pentatope_numbers = hypertetrahedral_numbers = triangulotriangular_numbers</code></li>
|
242
|
+
<li><code>k_dimensional_hypertetrahedron_numbers(k) = k_hypertetrahedron_numbers(k) = regular_k_polytopic_numbers(k) = figurate_numbers_of_order_k(k)</code></li>
|
241
243
|
<li><code>five_dimensional_hypertetrahedron_numbers</code></li>
|
242
244
|
<li><code>six_dimensional_hypertetrahedron_numbers</code></li>
|
243
245
|
<li><code>biquadratic_numbers</code></li>
|
@@ -258,7 +260,7 @@ end
|
|
258
260
|
<li><code>ten_dimensional_hyperoctahedron_numbers</code></li>
|
259
261
|
<li><code>k_dimensional_hyperoctahedron_numbers(k) = k_cross_polytope_numbers(k)</code></li>
|
260
262
|
|
261
|
-
<li><code>four_dimensional_mgonal_pyramidal_numbers(m) =
|
263
|
+
<li><code>four_dimensional_mgonal_pyramidal_numbers(m) = mgonal_pyramidal_numbers_of_the_second_order(m)</code></li>
|
262
264
|
<li><code>four_dimensional_square_pyramidal_numbers</code></li>
|
263
265
|
<li><code>four_dimensional_pentagonal_pyramidal_numbers</code></li>
|
264
266
|
<li><code>four_dimensional_hexagonal_pyramidal_numbers</code></li>
|
@@ -269,8 +271,8 @@ end
|
|
269
271
|
<li><code>four_dimensional_hendecagonal_pyramidal_numbers</code></li>
|
270
272
|
<li><code>four_dimensional_dodecagonal_pyramidal_numbers</code></li>
|
271
273
|
|
272
|
-
<li><code>k_dimensional_mgonal_pyramidal_numbers(k, m) =
|
273
|
-
<li><code>five_dimensional_mgonal_pyramidal_numbers</code></li>
|
274
|
+
<li><code>k_dimensional_mgonal_pyramidal_numbers(k, m) = mgonal_pyramidal_numbers_of_the_k_2_th_order(k, m)</code></li>
|
275
|
+
<li><code>five_dimensional_mgonal_pyramidal_numbers(m)</code></li>
|
274
276
|
<li><code>five_dimensional_square_pyramidal_numbers</code></li>
|
275
277
|
<li><code>five_dimensional_pentagonal_pyramidal_numbers</code></li>
|
276
278
|
<li><code>five_dimensional_hexagonal_pyramidal_numbers</code></li>
|
@@ -309,9 +311,8 @@ end
|
|
309
311
|
<li><code>generalized_k_dimensional_mgonal_pyramidal_numbers(k, m, left_index = 0)</code></li>
|
310
312
|
<li><code>generalized_k_dimensional_centered_hypercube_numbers(k, left_index = 0)</code></li>
|
311
313
|
|
312
|
-
|
313
|
-
|
314
|
-
<li><code>generalized_k_dimensional_centered_hyperoctahedron_numbers(k, left_index = 0)</code></li> -->
|
314
|
+
<li><code>generalized_k_dimensional_centered_hypertetrahedron_numbers(k, left_index = 0)[provisional symmetry]</code></li>
|
315
|
+
<li><code>generalized_k_dimensional_centered_hyperoctahedron_numbers(k, left_index = 0)[provisional symmetry]</code></li>
|
315
316
|
|
316
317
|
<li><code>generalized_nexus_numbers(k, left_index = 0) [even or odd dimension only changes sign]</code></li>
|
317
318
|
</ol>
|
data/lib/figurate_numbers.rb
CHANGED
@@ -1367,8 +1367,8 @@ module FigurateNumbers
|
|
1367
1367
|
end
|
1368
1368
|
end
|
1369
1369
|
|
1370
|
-
alias_method :
|
1371
|
-
alias_method :
|
1370
|
+
alias_method :hypertetrahedral_numbers, :pentatope_numbers
|
1371
|
+
alias_method :triangulotriangular_numbers, :pentatope_numbers
|
1372
1372
|
|
1373
1373
|
def rising_factorial(n, k)
|
1374
1374
|
t = 1
|
@@ -1388,7 +1388,7 @@ module FigurateNumbers
|
|
1388
1388
|
|
1389
1389
|
alias_method :k_hypertetrahedron_numbers, :k_dimensional_hypertetrahedron_numbers
|
1390
1390
|
alias_method :regular_k_polytopic_numbers, :k_dimensional_hypertetrahedron_numbers
|
1391
|
-
alias_method :
|
1391
|
+
alias_method :figurate_numbers_of_order_k, :k_dimensional_hypertetrahedron_numbers
|
1392
1392
|
|
1393
1393
|
|
1394
1394
|
def five_dimensional_hypertetrahedron_numbers
|
@@ -1575,7 +1575,7 @@ module FigurateNumbers
|
|
1575
1575
|
end
|
1576
1576
|
end
|
1577
1577
|
|
1578
|
-
alias_method :
|
1578
|
+
alias_method :mgonal_pyramidal_numbers_of_the_second_order, :four_dimensional_mgonal_pyramidal_numbers
|
1579
1579
|
|
1580
1580
|
def four_dimensional_square_pyramidal_numbers
|
1581
1581
|
Enumerator.new do |y|
|
@@ -1673,7 +1673,7 @@ module FigurateNumbers
|
|
1673
1673
|
end
|
1674
1674
|
end
|
1675
1675
|
|
1676
|
-
alias_method :
|
1676
|
+
alias_method :mgonal_pyramidal_numbers_of_the_k_2_th_order, :k_dimensional_mgonal_pyramidal_numbers
|
1677
1677
|
|
1678
1678
|
def five_dimensional_mgonal_pyramidal_numbers(m)
|
1679
1679
|
Enumerator.new do |y|
|
@@ -1909,7 +1909,6 @@ module FigurateNumbers
|
|
1909
1909
|
|
1910
1910
|
def ext_int_double_summation(k, n)
|
1911
1911
|
t = ((2**(1)) * binomial_coefficient(k, 1) * binomial_coefficient(1, 0))
|
1912
|
-
return (t + 1) if n == 1
|
1913
1912
|
a = 0
|
1914
1913
|
(1..(n - 1)).each do |j|
|
1915
1914
|
(0..(k - 1)).each do |i|
|
@@ -2041,6 +2040,48 @@ module FigurateNumbers
|
|
2041
2040
|
end
|
2042
2041
|
end
|
2043
2042
|
|
2043
|
+
def gen_acc_helper_centered_hypertetrahedron(k, n)
|
2044
|
+
a = 0
|
2045
|
+
(1..n.abs).each do |j|
|
2046
|
+
a += helper_centered_hypertetrahedron(k, j)
|
2047
|
+
end
|
2048
|
+
n > 0 ? a : -a
|
2049
|
+
end
|
2050
|
+
|
2051
|
+
private_class_method :gen_acc_helper_centered_hypertetrahedron
|
2052
|
+
|
2053
|
+
def generalized_k_dimensional_centered_hypertetrahedron_numbers(k, left_index = 0)
|
2054
|
+
Enumerator.new do |y|
|
2055
|
+
((-1 * left_index.abs)..Float::INFINITY).each do |n|
|
2056
|
+
y << gen_acc_helper_centered_hypertetrahedron(k, n)
|
2057
|
+
end
|
2058
|
+
end
|
2059
|
+
end
|
2060
|
+
|
2061
|
+
def gen_ext_int_double_summation(k, n)
|
2062
|
+
is_positive_n = n
|
2063
|
+
n = n.abs
|
2064
|
+
t = ((2) * binomial_coefficient(k, 1) * binomial_coefficient(1, 0))
|
2065
|
+
a = 0
|
2066
|
+
(1..(n - 1)).each do |j|
|
2067
|
+
(0..(k - 1)).each do |i|
|
2068
|
+
a += (2**(1 + i)) * binomial_coefficient(k, 1 + i) * binomial_coefficient(j, i)
|
2069
|
+
end
|
2070
|
+
end
|
2071
|
+
is_positive_n > 0 ? (1 + t + a) : (1 + t + a) * -1
|
2072
|
+
end
|
2073
|
+
|
2074
|
+
private_class_method :gen_ext_int_double_summation
|
2075
|
+
|
2076
|
+
def generalized_k_dimensional_centered_hyperoctahedron_numbers(k, left_index = 0)
|
2077
|
+
Enumerator.new do |y|
|
2078
|
+
((-1 * left_index.abs)..Float::INFINITY).each do |n|
|
2079
|
+
y << 1 if n == 1
|
2080
|
+
y << gen_ext_int_double_summation(k, n) if n != 0
|
2081
|
+
end
|
2082
|
+
end
|
2083
|
+
end
|
2084
|
+
|
2044
2085
|
def generalized_nexus_numbers(k, left_index = 0)
|
2045
2086
|
Enumerator.new do |y|
|
2046
2087
|
((-1 * left_index.abs)..Float::INFINITY).each do |delta|
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: figurate_numbers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Edgar Armando Delgado Vega
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-07-
|
11
|
+
date: 2024-07-17 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description: Generates
|
13
|
+
description: Generates 241 infinite sequences of plane, space, and multidimensional
|
14
14
|
figurate numbers based on the book ‘Figurate Numbers’ (2012) by Elena Deza and Michel
|
15
15
|
Deza. The methods are implemented using the Enumerator class and are designed for
|
16
16
|
use in your math projects or in Sonic Pi.
|
@@ -23,13 +23,13 @@ extra_rdoc_files:
|
|
23
23
|
files:
|
24
24
|
- README.md
|
25
25
|
- lib/figurate_numbers.rb
|
26
|
-
homepage: https://github.com/edelveart/
|
26
|
+
homepage: https://github.com/edelveart/figurate_numbers
|
27
27
|
licenses:
|
28
28
|
- MIT
|
29
29
|
metadata:
|
30
30
|
documentation_uri: https://www.rubydoc.info/gems/figurate_numbers
|
31
|
-
source_code_uri: https://github.com/edelveart/
|
32
|
-
homepage_uri: https://github.com/edelveart/
|
31
|
+
source_code_uri: https://github.com/edelveart/figurate_numbers
|
32
|
+
homepage_uri: https://github.com/edelveart/figurate_numbers
|
33
33
|
post_install_message:
|
34
34
|
rdoc_options:
|
35
35
|
- "--main"
|
@@ -53,6 +53,6 @@ requirements: []
|
|
53
53
|
rubygems_version: 3.3.7
|
54
54
|
signing_key:
|
55
55
|
specification_version: 4
|
56
|
-
summary: Generates
|
57
|
-
numbers
|
56
|
+
summary: Generates 241 infinite sequences of plane, space, and multidimensional figurate
|
57
|
+
numbers
|
58
58
|
test_files: []
|