figurate_numbers 1.1.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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +22 -15
  3. data/lib/figurate_numbers.rb +93 -6
  4. metadata +14 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7085cfc533bef2883851cae4cf8cece1bbbc85cac5d3c16a9a56001abad29f79
4
- data.tar.gz: e49e4db8395eb0c49b9f217d47f14ec5ca4097926f0c2542938f63727b696a82
3
+ metadata.gz: 3ce2e9677b127bf7f73fb6776128e8691fa53353495f6ed7fc61e60961f39abb
4
+ data.tar.gz: d0596c55e684e9716c32c6e495c5feef10a4d0d25e91daac7914f49af652561b
5
5
  SHA512:
6
- metadata.gz: 0135ee29332aa3e667d1e084d23b6053c0a84901ed2c8278782958d6aed0f4c3f3b2b657525f3fc0fc2b8aca9480f5cb398c8283b04acd22fd0f3830ae0f5a4d
7
- data.tar.gz: d5711e1c67b696e46db5947df721ccb8d56bba6ed4f726c8d87189d66171b0ab6061909430b0dfd52a8f6df0e9b47a85411396290d5329160595767ac47d32bd
6
+ metadata.gz: a6b1da7cb33f30eed0179311888195fc837c06e8a419984d38c352e892a71d46724297930810a302edaf3fd699052cd7b8c7e737e5b17e327c81105f28658c92
7
+ data.tar.gz: e3fc3b4415f2576c7222c029d9a030bfa44bf86270700e4022c24ce82fa6e73b541cbfc1ee3eceb415f2186a6dec5bf7954629a3ad14d67f08fd73e9cc511eae
data/README.md CHANGED
@@ -1,8 +1,10 @@
1
1
  # Figurate Numbers
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/figurate_numbers.svg)](https://badge.fury.io/rb/figurate_numbers)
3
+ ![Gem Version](https://img.shields.io/gem/v/figurate_numbers)
4
+ ![Gem Total Downloads](https://img.shields.io/gem/dt/figurate_numbers)
5
+ ![GitHub License](https://img.shields.io/github/license/edelveart/figurate_numbers)
4
6
 
5
- `figurate_numbers` is a Ruby module that implements `234 infinite number sequences` based on the formulas from the wonderful book
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.
7
9
 
8
10
  This implementation uses the **Enumerator class** to deal with **INFINITE SEQUENCES**.
@@ -10,11 +12,11 @@ This implementation uses the **Enumerator class** to deal with **INFINITE SEQUEN
10
12
  Following the order of the book, the methods are divided into 3 types according to the spatial dimension (see complete list below):
11
13
 
12
14
  1. **Plane** figurate numbers implemented = `79`
13
- 2. **Space** figurate numbers implemented = `81`
14
- 3. **Multidimensional** figurate numbers implemented = `68`
15
+ 2. **Space** figurate numbers implemented = `86`
16
+ 3. **Multidimensional** figurate numbers implemented = `70`
15
17
  4. **Zoo of figurate-related numbers** implemented = `6`
16
18
 
17
- - [x] **TOTAL** = `234` infinite sequences of figurate numbers implemented
19
+ - [x] **TOTAL** = `241` infinite sequences of figurate numbers implemented
18
20
 
19
21
  ## Installation and use
20
22
 
@@ -170,7 +172,13 @@ end
170
172
  <li><code>icosinonagonal_pyramidal_numbers</code></li>
171
173
  <li><code>triacontagonal_pyramidal_numbers</code></li>
172
174
 
173
- <li><code>cubic_numbers != hex_pyramidal_numbers (equality only by quantity) </code></li>
175
+ <li><code>triangular_tetrahedral_numbers [finite]</code></li>
176
+ <li><code>triangular_square_pyramidal_numbers [finite]</code></li>
177
+ <li><code>square_tetrahedral_numbers [finite]</code></li>
178
+ <li><code>square_square_pyramidal_numbers [finite]</code></li>
179
+ <li><code>tetrahedral_square_pyramidal_number [finite]</code></li>
180
+
181
+ <li><code>cubic_numbers = perfect_cube_numbers != hex_pyramidal_numbers (equality only by quantity) </code></li>
174
182
  <li><code>tetrahedral_numbers</code></li>
175
183
  <li><code>octahedral_numbers</code></li>
176
184
  <li><code>dodecahedral_numbers</code></li>
@@ -186,7 +194,7 @@ end
186
194
  <li><code>centered_tetrahedron_numbers = centered_tetrahedral_numbers</code></li>
187
195
  <li><code>centered_square_pyramid_numbers = centered_pyramid_numbers</code></li>
188
196
  <li><code>centered_mgonal_pyramid_numbers(m)</code></li>
189
- <li><code>centered_pentagonal_pyramid_numbers != centered octahedron numbers (equality only in quantity)</code></li>
197
+ <li><code>centered_pentagonal_pyramid_numbers != centered_octahedron_numbers (equality only in quantity)</code></li>
190
198
  <li><code>centered_hexagonal_pyramid_numbers</code></li>
191
199
  <li><code>centered_heptagonal_pyramid_numbers</code></li>
192
200
  <li><code>centered_octagonal_pyramid_numbers</code></li>
@@ -230,8 +238,8 @@ end
230
238
 
231
239
  ### 3. Multidimensional figurate numbers
232
240
  <ol>
233
- <li><code>pentatope_numbers = hypertetrahedral_number = triangulotriangular_number</code></li>
234
- <li><code>k_dimensional_hypertetrahedron_numbers(k) = k_hypertetrahedron_numbers(k) = regular_k_polytopic_numbers(k) = figurate_number_of_order_k(k)</code></li>
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>
235
243
  <li><code>five_dimensional_hypertetrahedron_numbers</code></li>
236
244
  <li><code>six_dimensional_hypertetrahedron_numbers</code></li>
237
245
  <li><code>biquadratic_numbers</code></li>
@@ -252,7 +260,7 @@ end
252
260
  <li><code>ten_dimensional_hyperoctahedron_numbers</code></li>
253
261
  <li><code>k_dimensional_hyperoctahedron_numbers(k) = k_cross_polytope_numbers(k)</code></li>
254
262
 
255
- <li><code>four_dimensional_mgonal_pyramidal_numbers(m) = mgonal_pyramidal_number_of_the_second_order(m)</code></li>
263
+ <li><code>four_dimensional_mgonal_pyramidal_numbers(m) = mgonal_pyramidal_numbers_of_the_second_order(m)</code></li>
256
264
  <li><code>four_dimensional_square_pyramidal_numbers</code></li>
257
265
  <li><code>four_dimensional_pentagonal_pyramidal_numbers</code></li>
258
266
  <li><code>four_dimensional_hexagonal_pyramidal_numbers</code></li>
@@ -263,8 +271,8 @@ end
263
271
  <li><code>four_dimensional_hendecagonal_pyramidal_numbers</code></li>
264
272
  <li><code>four_dimensional_dodecagonal_pyramidal_numbers</code></li>
265
273
 
266
- <li><code>k_dimensional_mgonal_pyramidal_numbers(k, m) = mgonal_pyramidal_number_of_the_k_2_th_order(k, m)</code></li>
267
- <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>
268
276
  <li><code>five_dimensional_square_pyramidal_numbers</code></li>
269
277
  <li><code>five_dimensional_pentagonal_pyramidal_numbers</code></li>
270
278
  <li><code>five_dimensional_hexagonal_pyramidal_numbers</code></li>
@@ -303,9 +311,8 @@ end
303
311
  <li><code>generalized_k_dimensional_mgonal_pyramidal_numbers(k, m, left_index = 0)</code></li>
304
312
  <li><code>generalized_k_dimensional_centered_hypercube_numbers(k, left_index = 0)</code></li>
305
313
 
306
- <!-- * Problems with math definition via binomial coeff in helper functions, n < 0 -->
307
- <!-- <li><code>generalized_k_dimensional_centered_hypertetrahedron_numbers(k, left_index = 0)</code></li>
308
- <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>
309
316
 
310
317
  <li><code>generalized_nexus_numbers(k, left_index = 0) [even or odd dimension only changes sign]</code></li>
311
318
  </ol>
@@ -865,6 +865,50 @@ module FigurateNumbers
865
865
  end
866
866
  end
867
867
 
868
+ def triangular_tetrahedral_numbers
869
+ Enumerator.new do |y|
870
+ finite_set = [1, 10, 120, 1540, 7140]
871
+ (finite_set).each do |delta|
872
+ y << delta
873
+ end
874
+ end
875
+ end
876
+
877
+ def triangular_square_pyramidal_numbers
878
+ Enumerator.new do |y|
879
+ finite_set = [1, 55, 91, 208335]
880
+ (finite_set).each do |delta|
881
+ y << delta
882
+ end
883
+ end
884
+ end
885
+
886
+ def square_tetrahedral_numbers
887
+ Enumerator.new do |y|
888
+ finite_set = [1, 4, 19600]
889
+ (finite_set).each do |delta|
890
+ y << delta
891
+ end
892
+ end
893
+ end
894
+
895
+ def square_square_pyramidal_numbers
896
+ Enumerator.new do |y|
897
+ finite_set = [1, 4900]
898
+ (finite_set).each do |delta|
899
+ y << delta
900
+ end
901
+ end
902
+ end
903
+
904
+ def tetrahedral_square_pyramidal_number
905
+ Enumerator.new do |y|
906
+ finite_set = [1]
907
+ (finite_set).each do |delta|
908
+ y << delta
909
+ end
910
+ end
911
+ end
868
912
 
869
913
  def cubic_numbers
870
914
  Enumerator.new do |y|
@@ -874,6 +918,8 @@ module FigurateNumbers
874
918
  end
875
919
  end
876
920
 
921
+ alias_method :perfect_cube_numbers, :cubic_numbers
922
+
877
923
  def tetrahedral_numbers
878
924
  Enumerator.new do |y|
879
925
  (1..Float::INFINITY).each do |delta|
@@ -1321,8 +1367,8 @@ module FigurateNumbers
1321
1367
  end
1322
1368
  end
1323
1369
 
1324
- alias_method :hypertetrahedral_number, :pentatope_numbers
1325
- alias_method :triangulotriangular_number, :pentatope_numbers
1370
+ alias_method :hypertetrahedral_numbers, :pentatope_numbers
1371
+ alias_method :triangulotriangular_numbers, :pentatope_numbers
1326
1372
 
1327
1373
  def rising_factorial(n, k)
1328
1374
  t = 1
@@ -1342,7 +1388,7 @@ module FigurateNumbers
1342
1388
 
1343
1389
  alias_method :k_hypertetrahedron_numbers, :k_dimensional_hypertetrahedron_numbers
1344
1390
  alias_method :regular_k_polytopic_numbers, :k_dimensional_hypertetrahedron_numbers
1345
- alias_method :figurate_number_of_order_k, :k_dimensional_hypertetrahedron_numbers
1391
+ alias_method :figurate_numbers_of_order_k, :k_dimensional_hypertetrahedron_numbers
1346
1392
 
1347
1393
 
1348
1394
  def five_dimensional_hypertetrahedron_numbers
@@ -1529,7 +1575,7 @@ module FigurateNumbers
1529
1575
  end
1530
1576
  end
1531
1577
 
1532
- alias_method :mgonal_pyramidal_number_of_the_second_order, :four_dimensional_mgonal_pyramidal_numbers
1578
+ alias_method :mgonal_pyramidal_numbers_of_the_second_order, :four_dimensional_mgonal_pyramidal_numbers
1533
1579
 
1534
1580
  def four_dimensional_square_pyramidal_numbers
1535
1581
  Enumerator.new do |y|
@@ -1627,7 +1673,7 @@ module FigurateNumbers
1627
1673
  end
1628
1674
  end
1629
1675
 
1630
- alias_method :mgonal_pyramidal_number_of_the_k_2_th_order, :k_dimensional_mgonal_pyramidal_numbers
1676
+ alias_method :mgonal_pyramidal_numbers_of_the_k_2_th_order, :k_dimensional_mgonal_pyramidal_numbers
1631
1677
 
1632
1678
  def five_dimensional_mgonal_pyramidal_numbers(m)
1633
1679
  Enumerator.new do |y|
@@ -1863,7 +1909,6 @@ module FigurateNumbers
1863
1909
 
1864
1910
  def ext_int_double_summation(k, n)
1865
1911
  t = ((2**(1)) * binomial_coefficient(k, 1) * binomial_coefficient(1, 0))
1866
- return (t + 1) if n == 1
1867
1912
  a = 0
1868
1913
  (1..(n - 1)).each do |j|
1869
1914
  (0..(k - 1)).each do |i|
@@ -1995,6 +2040,48 @@ module FigurateNumbers
1995
2040
  end
1996
2041
  end
1997
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
+
1998
2085
  def generalized_nexus_numbers(k, left_index = 0)
1999
2086
  Enumerator.new do |y|
2000
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.1.0
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-08 00:00:00.000000000 Z
11
+ date: 2024-07-17 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: Generates 234 infinite sequences of plane, space, and multidimensional
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,14 +23,20 @@ extra_rdoc_files:
23
23
  files:
24
24
  - README.md
25
25
  - lib/figurate_numbers.rb
26
- homepage: https://github.com/edelveart/figurate_numbers_sonic_pi
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
- homepage_uri: https://github.com/edelveart/figurate_numbers_sonic_pi
31
+ source_code_uri: https://github.com/edelveart/figurate_numbers
32
+ homepage_uri: https://github.com/edelveart/figurate_numbers
32
33
  post_install_message:
33
- rdoc_options: []
34
+ rdoc_options:
35
+ - "--main"
36
+ - README.md
37
+ - "--line-numbers"
38
+ - "--inline-source"
39
+ - "--quiet"
34
40
  require_paths:
35
41
  - lib
36
42
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -47,6 +53,6 @@ requirements: []
47
53
  rubygems_version: 3.3.7
48
54
  signing_key:
49
55
  specification_version: 4
50
- summary: Generates 234 infinite sequences of plane, space, and multidimensional figurate
51
- numbers based on the book ‘Figurate Numbers’ (2012) by Elena Deza and Michel Deza.
56
+ summary: Generates 241 infinite sequences of plane, space, and multidimensional figurate
57
+ numbers
52
58
  test_files: []