figurate_numbers 1.0.0 → 1.2.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 +432 -0
  3. data/lib/figurate_numbers.rb +278 -9
  4. metadata +18 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 46d9d8f715ec77762330a7e775183f91e1d2aa2128aa172d7014a51c5b32b6d3
4
- data.tar.gz: 6681fe1f93e9fff877072d0c679ac651fe351579e3b790b27b69954ab601cc28
3
+ metadata.gz: a5641cd56367a1aeafe786f318638aec399ee4d19370ab1438495c5cad50192d
4
+ data.tar.gz: 5c3ced655af6fea90399cc5c233780b70a215d704c876acaef9f5dca54508dba
5
5
  SHA512:
6
- metadata.gz: 0bdb7ad900f304d51cc68c511f6b536ceab815393c911e5a911417afd7f25d342f93c88715eb219867f205998699ba66c8334e9e17be1839dd9964468467e326
7
- data.tar.gz: 19a404a4434d4c773f3ecb7cd27392eb1f9e58df3cc6a9cb14941a7b9d6633a9259cc87e472837aba2a1f43a07c9954b8a43e48a6ed2b9236e5ee7297de32e29
6
+ metadata.gz: 0b5d5c83119c203b0f0fcee6e47ac52b2b1cd4f43cf9518626237e535f6c08f7644021533b0f917d79863416f8fe98665b331445453c185ec3fe935b9fac1b1b
7
+ data.tar.gz: '095f5efba3092a8e0168629950742620014a366bbbddc385e55e23c83e1b7dc3388cc03026af15ca66103d1d56acaa1c87fcb90521f014d6e4b62fe173059049'
data/README.md ADDED
@@ -0,0 +1,432 @@
1
+ # Figurate Numbers
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/figurate_numbers.svg)](https://badge.fury.io/rb/figurate_numbers)
4
+
5
+ `figurate_numbers` is a Ruby module that implements `239 infinite number sequences` based on the formulas from the wonderful book
6
+ > [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
+
8
+ This implementation uses the **Enumerator class** to deal with **INFINITE SEQUENCES**.
9
+
10
+ Following the order of the book, the methods are divided into 3 types according to the spatial dimension (see complete list below):
11
+
12
+ 1. **Plane** figurate numbers implemented = `79`
13
+ 2. **Space** figurate numbers implemented = `86`
14
+ 3. **Multidimensional** figurate numbers implemented = `68`
15
+ 4. **Zoo of figurate-related numbers** implemented = `6`
16
+
17
+ - [x] **TOTAL** = `239` infinite sequences of figurate numbers implemented
18
+
19
+ ## Installation and use
20
+
21
+ * `gem install figurate_numbers`
22
+
23
+ ### How to use in Ruby
24
+
25
+ If the sequence is defined with `lazy`, to make the numbers explicit we must include the converter method `to_a` at the end.
26
+
27
+ ```rb
28
+ require 'figurate_numbers'
29
+
30
+ ## Using take(integer)
31
+ FigurateNumbers.pronic_numbers.take(10).to_a
32
+
33
+ ## Storing and iterating
34
+ f = FigurateNumbers.centered_octagonal_pyramid_numbers
35
+ f.next
36
+ f.next
37
+ f.next
38
+ ```
39
+ ### How to use in Sonic Pi
40
+
41
+ 1. Locate or download the file in the path `lib/figurate_numbers.rb`
42
+ 2. Drag the file to a buffer in Sonic Pi (this generates the `<PATH>`)
43
+
44
+ ```rb
45
+ run_file "<PATH>"
46
+
47
+ pol_num = FigurateNumbers.polygonal_numbers(8)
48
+ 80.times do
49
+ play pol_num.next % 12 * 7 # Some mathematical function or transformation
50
+ sleep 0.25
51
+ end
52
+ ```
53
+
54
+ ## List of implemented sequences
55
+
56
+ * Note that `=` means that you can call the same sequence with different names.
57
+
58
+ ### 1. Plane Figurate Numbers
59
+ <ol>
60
+ <li><code>polygonal_numbers(m)</code></li>
61
+ <li><code>triangular_numbers</code></li>
62
+ <li><code>square_numbers</code></li>
63
+ <li><code>pentagonal_numbers</code></li>
64
+ <li><code>hexagonal_numbers</code></li>
65
+ <li><code>heptagonal_numbers</code></li>
66
+ <li><code>octagonal_numbers</code></li>
67
+ <li><code>nonagonal_numbers</code></li>
68
+ <li><code>decagonal_numbers</code></li>
69
+ <li><code>hendecagonal_numbers</code></li>
70
+ <li><code>dodecagonal_numbers</code></li>
71
+ <li><code>tridecagonal_numbers</code></li>
72
+ <li><code>tetradecagonal_numbers</code></li>
73
+ <li><code>pentadecagonal_numbers</code></li>
74
+ <li><code>hexadecagonal_numbers</code></li>
75
+ <li><code>heptadecagonal_numbers</code></li>
76
+ <li><code>octadecagonal_numbers</code></li>
77
+ <li><code>nonadecagonal_numbers</code></li>
78
+ <li><code>icosagonal_numbers</code></li>
79
+ <li><code>icosihenagonal_numbers</code></li>
80
+ <li><code>icosidigonal_numbers</code></li>
81
+ <li><code>icositrigonal_numbers</code></li>
82
+ <li><code>icositetragonal_numbers</code></li>
83
+ <li><code>icosipentagonal_numbers</code></li>
84
+ <li><code>icosihexagonal_numbers</code></li>
85
+ <li><code>icosiheptagonal_numbers</code></li>
86
+ <li><code>icosioctagonal_numbers</code></li>
87
+ <li><code>icosinonagonal_numbers</code></li>
88
+ <li><code>triacontagonal_numbers</code></li>
89
+ <li><code>centered_triangular_numbers</code></li>
90
+ <li><code>centered_square_numbers = diamond_numbers (equality only by quantity)</code></li>
91
+ <li><code>centered_pentagonal_numbers</code></li>
92
+ <li><code>centered_hexagonal_numbers</code></li>
93
+ <li><code>centered_heptagonal_numbers</code></li>
94
+ <li><code>centered_octagonal_numbers</code></li>
95
+ <li><code>centered_nonagonal_numbers</code></li>
96
+ <li><code>centered_decagonal_numbers</code></li>
97
+ <li><code>centered_hendecagonal_numbers</code></li>
98
+ <li><code>centered_dodecagonal_numbers = star_numbers (equality only by quantity)</code></li>
99
+ <li><code>centered_tridecagonal_numbers</code></li>
100
+ <li><code>centered_tetradecagonal_numbers</code></li>
101
+ <li><code>centered_pentadecagonal_numbers</code></li>
102
+ <li><code>centered_hexadecagonal_numbers</code></li>
103
+ <li><code>centered_heptadecagonal_numbers</code></li>
104
+ <li><code>centered_octadecagonal_numbers</code></li>
105
+ <li><code>centered_nonadecagonal_numbers</code></li>
106
+ <li><code>centered_icosagonal_numbers</code></li>
107
+ <li><code>centered_icosihenagonal_numbers</code></li>
108
+ <li><code>centered_icosidigonal_numbers</code></li>
109
+ <li><code>centered_icositrigonal_numbers</code></li>
110
+ <li><code>centered_icositetragonal_numbers</code></li>
111
+ <li><code>centered_icosipentagonal_numbers</code></li>
112
+ <li><code>centered_icosihexagonal_numbers</code></li>
113
+ <li><code>centered_icosiheptagonal_numbers</code></li>
114
+ <li><code>centered_icosioctagonal_numbers</code></li>
115
+ <li><code>centered_icosinonagonal_numbers</code></li>
116
+ <li><code>centered_triacontagonal_numbers</code></li>
117
+ <li><code>centered_mgonal_numbers(m)</code></li>
118
+ <li><code>pronic_numbers = heteromecic_numbers = oblong_numbers</code></li>
119
+ <li><code>polite_numbers</code></li>
120
+ <li><code>impolite_numbers</code></li>
121
+ <li><code>cross_numbers</code></li>
122
+ <li><code>aztec_diamond_numbers</code></li>
123
+ <li><code>polygram_numbers(m) = centered_star_polygonal_numbers(m)</code></li>
124
+ <li><code>pentagram_numbers</code></li>
125
+ <li><code>gnomic_numbers</code></li>
126
+ <li><code>truncated_triangular_numbers</code></li>
127
+ <li><code>truncated_square_numbers</code></li>
128
+ <li><code>truncated_pronic_numbers</code></li>
129
+ <li><code>truncated_centered_pol_numbers(m) = truncated_centered_mgonal_numbers(m)</code></li>
130
+ <li><code>truncated_centered_triangular_numbers</code></li>
131
+ <li><code>truncated_centered_square_numbers</code></li>
132
+ <li><code>truncated_centered_pentagonal_numbers</code></li>
133
+ <li><code>truncated_centered_hexagonal_numbers = truncated_hex_numbers</code></li>
134
+ <li><code>generalized_mgonal_numbers(m, left_index = 0)</code></li>
135
+ <li><code>generalized_pentagonal_numbers(left_index = 0)</code></li>
136
+ <li><code>generalized_hexagonal_numbers(left_index = 0)</code></li>
137
+ <li><code>generalized_centered_pol_numbers(m, left_index = 0)</code></li>
138
+ <li><code>generalized_pronic_numbers(left_index = 0)</code></li>
139
+ </ol>
140
+
141
+ ### 2. Space Figurate Numbers
142
+ <ol>
143
+ <li><code>r_pyramidal_numbers(r)</code></li>
144
+ <li><code>triangular_pyramidal_numbers = tetrahedral_numbers</code></li>
145
+ <li><code>square_pyramidal_numbers = pyramidal_numbers</code></li>
146
+ <li><code>pentagonal_pyramidal_numbers</code></li>
147
+ <li><code>hexagonal_pyramidal_numbers</code></li>
148
+ <li><code>heptagonal_pyramidal_numbers</code></li>
149
+ <li><code>octagonal_pyramidal_numbers</code></li>
150
+ <li><code>nonagonal_pyramidal_numbers</code></li>
151
+ <li><code>decagonal_pyramidal_numbers</code></li>
152
+ <li><code>hendecagonal_pyramidal_numbers</code></li>
153
+ <li><code>dodecagonal_pyramidal_numbers</code></li>
154
+ <li><code>tridecagonal_pyramidal_numbers</code></li>
155
+ <li><code>tetradecagonal_pyramidal_numbers</code></li>
156
+ <li><code>pentadecagonal_pyramidal_numbers</code></li>
157
+ <li><code>hexadecagonal_pyramidal_numbers</code></li>
158
+ <li><code>heptadecagonal_pyramidal_numbers</code></li>
159
+ <li><code>octadecagonal_pyramidal_numbers</code></li>
160
+ <li><code>nonadecagonal_pyramidal_numbers</code></li>
161
+ <li><code>icosagonal_pyramidal_numbers</code></li>
162
+ <li><code>icosihenagonal_pyramidal_numbers</code></li>
163
+ <li><code>icosidigonal_pyramidal_numbers</code></li>
164
+ <li><code>icositrigonal_pyramidal_numbers</code></li>
165
+ <li><code>icositetragonal_pyramidal_numbers</code></li>
166
+ <li><code>icosipentagonal_pyramidal_numbers</code></li>
167
+ <li><code>icosihexagonal_pyramidal_numbers</code></li>
168
+ <li><code>icosiheptagonal_pyramidal_numbers</code></li>
169
+ <li><code>icosioctagonal_pyramidal_numbers</code></li>
170
+ <li><code>icosinonagonal_pyramidal_numbers</code></li>
171
+ <li><code>triacontagonal_pyramidal_numbers</code></li>
172
+
173
+ <li><code>triangular_tetrahedral_numbers [finite]</code></li>
174
+ <li><code>triangular_square_pyramidal_numbers [finite]</code></li>
175
+ <li><code>square_tetrahedral_numbers [finite]</code></li>
176
+ <li><code>square_square_pyramidal_numbers [finite]</code></li>
177
+ <li><code>tetrahedral_square_pyramidal_number [finite]</code></li>
178
+
179
+ <li><code>cubic_numbers = perfect_cube_numbers != hex_pyramidal_numbers (equality only by quantity) </code></li>
180
+ <li><code>tetrahedral_numbers</code></li>
181
+ <li><code>octahedral_numbers</code></li>
182
+ <li><code>dodecahedral_numbers</code></li>
183
+ <li><code>icosahedral_numbers</code></li>
184
+ <li><code>truncated_tetrahedral_numbers</code></li>
185
+ <li><code>truncated_cubic_numbers</code></li>
186
+ <li><code>truncated_octahedral_numbers</code></li>
187
+ <li><code>stella_octangula_numbers</code></li>
188
+ <li><code>centered_cube_numbers</code></li>
189
+ <li><code>rhombic_dodecahedral_numbers</code></li>
190
+ <li><code>hauy_rhombic_dodecahedral_numbers</code></li>
191
+
192
+ <li><code>centered_tetrahedron_numbers = centered_tetrahedral_numbers</code></li>
193
+ <li><code>centered_square_pyramid_numbers = centered_pyramid_numbers</code></li>
194
+ <li><code>centered_mgonal_pyramid_numbers(m)</code></li>
195
+ <li><code>centered_pentagonal_pyramid_numbers != centered octahedron numbers (equality only in quantity)</code></li>
196
+ <li><code>centered_hexagonal_pyramid_numbers</code></li>
197
+ <li><code>centered_heptagonal_pyramid_numbers</code></li>
198
+ <li><code>centered_octagonal_pyramid_numbers</code></li>
199
+
200
+ <li><code>centered_octahedron_numbers</code></li>
201
+ <li><code>centered_icosahedron_numbers = centered_cuboctahedron_numbers</code></li>
202
+ <li><code>centered_dodecahedron_numbers</code></li>
203
+ <li><code>centered_truncated_tetrahedron_numbers</code></li>
204
+ <li><code>centered_truncated_cube_numbers</code></li>
205
+ <li><code>centered_truncated_octahedron_numbers</code></li>
206
+
207
+ <li><code>centered_mgonal_pyramidal_numbers(m)</code></li>
208
+ <li><code>centered_triangular_pyramidal_numbers</code></li>
209
+ <li><code>centered_square_pyramidal_numbers</code></li>
210
+ <li><code>centered_pentagonal_pyramidal_numbers</code></li>
211
+ <li><code>centered_hexagonal_pyramidal_numbers = hex_pyramidal_numbers</code></li>
212
+ <li><code>centered_heptagonal_pyramidal_numbers</code></li>
213
+ <li><code>centered_octagonal_pyramidal_numbers</code></li>
214
+ <li><code>centered_nonagonal_pyramidal_numbers</code></li>
215
+ <li><code>centered_decagonal_pyramidal_numbers</code></li>
216
+ <li><code>centered_hendecagonal_pyramidal_numbers</code></li>
217
+ <li><code>centered_dodecagonal_pyramidal_numbers</code></li>
218
+
219
+ <li><code>hexagonal_prism_numbers</code></li>
220
+ <li><code>mgonal_prism_numbers(m)</code></li>
221
+ <li><code>generalized_mgonal_pyramidal_numbers(m, left_index = 0)</code></li>
222
+ <li><code>generalized_pentagonal_pyramidal_numbers(left_index = 0)</code></li>
223
+ <li><code>generalized_hexagonal_pyramidal_numbers(left_index = 0)</code></li>
224
+ <li><code>generalized_cubic_numbers(left_index = 0)</code></li>
225
+ <li><code>generalized_octahedral_numbers(left_index = 0)</code></li>
226
+ <li><code>generalized_icosahedral_numbers(left_index = 0)</code></li>
227
+ <li><code>generalized_dodecahedral_numbers(left_index = 0)</code></li>
228
+ <li><code>generalized_centered_cube_numbers(left_index = 0)</code></li>
229
+ <li><code>generalized_centered_tetrahedron_numbers(left_index = 0)</code></li>
230
+ <li><code>generalized_centered_square_pyramid_numbers(left_index = 0)</code></li>
231
+ <li><code>generalized_rhombic_dodecahedral_numbers(left_index = 0)</code></li>
232
+ <li><code>generalized_centered_mgonal_pyramidal_numbers(m, left_index = 0)</code></li>
233
+ <li><code>generalized_mgonal_prism_numbers(m, left_index = 0)</code></li>
234
+ <li><code>generalized_hexagonal_prism_numbers(left_index = 0)</code></li>
235
+ </ol>
236
+
237
+ ### 3. Multidimensional figurate numbers
238
+ <ol>
239
+ <li><code>pentatope_numbers = hypertetrahedral_number = triangulotriangular_number</code></li>
240
+ <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>five_dimensional_hypertetrahedron_numbers</code></li>
242
+ <li><code>six_dimensional_hypertetrahedron_numbers</code></li>
243
+ <li><code>biquadratic_numbers</code></li>
244
+ <li><code>k_dimensional_hypercube_numbers(k) = k_hypercube_numbers(k)</code></li>
245
+ <li><code>five_dimensional_hypercube_numbers</code></li>
246
+ <li><code>six_dimensional_hypercube_numbers</code></li>
247
+ <li><code>hyperoctahedral_numbers = hexadecachoron_numbers = four_cross_polytope_numbers = four_orthoplex_numbers</code></li>
248
+ <li><code>hypericosahedral_numbers = tetraplex_numbers = polytetrahedron_numbers = hexacosichoron_numbers</code></li>
249
+ <li><code>hyperdodecahedral_numbers = hecatonicosachoron_numbers = dodecaplex_numbers = polydodecahedron_numbers</code></li>
250
+ <li><code>polyoctahedral_numbers = icositetrachoron_numbers = octaplex_numbers = hyperdiamond_numbers</code></li>
251
+
252
+ <li><code>four_dimensional_hyperoctahedron_numbers</code></li>
253
+ <li><code>five_dimensional_hyperoctahedron_numbers</code></li>
254
+ <li><code>six_dimensional_hyperoctahedron_numbers</code></li>
255
+ <li><code>seven_dimensional_hyperoctahedron_numbers</code></li>
256
+ <li><code>eight_dimensional_hyperoctahedron_numbers</code></li>
257
+ <li><code>nine_dimensional_hyperoctahedron_numbers</code></li>
258
+ <li><code>ten_dimensional_hyperoctahedron_numbers</code></li>
259
+ <li><code>k_dimensional_hyperoctahedron_numbers(k) = k_cross_polytope_numbers(k)</code></li>
260
+
261
+ <li><code>four_dimensional_mgonal_pyramidal_numbers(m) = mgonal_pyramidal_number_of_the_second_order(m)</code></li>
262
+ <li><code>four_dimensional_square_pyramidal_numbers</code></li>
263
+ <li><code>four_dimensional_pentagonal_pyramidal_numbers</code></li>
264
+ <li><code>four_dimensional_hexagonal_pyramidal_numbers</code></li>
265
+ <li><code>four_dimensional_heptagonal_pyramidal_numbers</code></li>
266
+ <li><code>four_dimensional_octagonal_pyramidal_numbers</code></li>
267
+ <li><code>four_dimensional_nonagonal_pyramidal_numbers</code></li>
268
+ <li><code>four_dimensional_decagonal_pyramidal_numbers</code></li>
269
+ <li><code>four_dimensional_hendecagonal_pyramidal_numbers</code></li>
270
+ <li><code>four_dimensional_dodecagonal_pyramidal_numbers</code></li>
271
+
272
+ <li><code>k_dimensional_mgonal_pyramidal_numbers(k, m) = mgonal_pyramidal_number_of_the_k_2_th_order(k, m)</code></li>
273
+ <li><code>five_dimensional_mgonal_pyramidal_numbers</code></li>
274
+ <li><code>five_dimensional_square_pyramidal_numbers</code></li>
275
+ <li><code>five_dimensional_pentagonal_pyramidal_numbers</code></li>
276
+ <li><code>five_dimensional_hexagonal_pyramidal_numbers</code></li>
277
+ <li><code>five_dimensional_heptagonal_pyramidal_numbers</code></li>
278
+ <li><code>five_dimensional_octagonal_pyramidal_numbers</code></li>
279
+ <li><code>six_dimensional_mgonal_pyramidal_numbers(m)</code></li>
280
+ <li><code>six_dimensional_square_pyramidal_numbers</code></li>
281
+ <li><code>six_dimensional_pentagonal_pyramidal_numbers</code></li>
282
+ <li><code>six_dimensional_hexagonal_pyramidal_numbers</code></li>
283
+ <li><code>six_dimensional_heptagonal_pyramidal_numbers</code></li>
284
+ <li><code>six_dimensional_octagonal_pyramidal_numbers</code></li>
285
+
286
+ <li><code>centered_biquadratic_numbers</code></li>
287
+ <li><code>k_dimensional_centered_hypercube_numbers(k)</code></li>
288
+ <li><code>five_dimensional_centered_hypercube_numbers</code></li>
289
+ <li><code>six_dimensional_centered_hypercube_numbers</code></li>
290
+ <li><code>centered_polytope_numbers</code></li>
291
+ <li><code>k_dimensional_centered_hypertetrahedron_numbers(k)</code></li>
292
+ <li><code>five_dimensional_centered_hypertetrahedron_numbers(k)</code></li>
293
+ <li><code>six_dimensional_centered_hypertetrahedron_numbers(k)</code></li>
294
+
295
+ <li><code>centered_hyperoctahedral_numbers = orthoplex_numbers</code></li>
296
+ <li><code>nexus_numbers(k)</code></li>
297
+ <li><code>k_dimensional_centered_hyperoctahedron_numbers(k)</code></li>
298
+ <li><code>five_dimensional_centered_hyperoctahedron_numbers</code></li>
299
+ <li><code>six_dimensional_centered_hyperoctahedron_numbers</code></li>
300
+ <li><code>generalized_pentatope_numbers(left_index = 0)</code></li>
301
+ <li><code>generalized_k_dimensional_hypertetrahedron_numbers(k = 5, left_index = 0)</code></li>
302
+ <li><code>generalized_biquadratic_numbers(left_index = 0)</code></li>
303
+ <li><code>generalized_k_dimensional_hypercube_numbers(k = 5, left_index = 0)</code></li>
304
+ <li><code>generalized_hyperoctahedral_numbers(left_index = 0)</code></li>
305
+ <li><code>generalized_k_dimensional_hyperoctahedron_numbers(k = 5, left_index = 0) [even or odd dimension only changes sign]</code></li>
306
+ <li><code>generalized_hyperdodecahedral_numbers(left_index = 0)</code></li>
307
+ <li><code>generalized_hypericosahedral_numbers(left_index = 0)</code></li>
308
+ <li><code>generalized_polyoctahedral_numbers(left_index = 0)</code></li>
309
+ <li><code>generalized_k_dimensional_mgonal_pyramidal_numbers(k, m, left_index = 0)</code></li>
310
+ <li><code>generalized_k_dimensional_centered_hypercube_numbers(k, left_index = 0)</code></li>
311
+
312
+ <!-- * Problems with math definition via binomial coeff in helper functions, n < 0 -->
313
+ <!-- <li><code>generalized_k_dimensional_centered_hypertetrahedron_numbers(k, left_index = 0)</code></li>
314
+ <li><code>generalized_k_dimensional_centered_hyperoctahedron_numbers(k, left_index = 0)</code></li> -->
315
+
316
+ <li><code>generalized_nexus_numbers(k, left_index = 0) [even or odd dimension only changes sign]</code></li>
317
+ </ol>
318
+
319
+ ### 6. Zoo of figurate-related numbers
320
+ <ol>
321
+ <li><code>cuban_numbers = cuban_prime_numbers</code></li>
322
+ <li><code>quartan_numbers [Needs to improve the algorithmic complexity for n > 70]</code></li>
323
+ <li><code>pell_numbers</code></li>
324
+ <li><code>carmichael_numbers [Needs to improve the algorithmic complexity for n > 20]</code></li>
325
+ <li><code>stern_prime_numbers(infty = false) [Quick calculations up to 8 terms]</code></li>
326
+ <li><code>apocalyptic_numbers</code></li>
327
+ </ol>
328
+
329
+ ## Errata
330
+
331
+ - Chapter 1, formula in the table on page 6 says:
332
+
333
+ | Name | Formula | |
334
+ | ------ | ------------------- | --- |
335
+ | Square | `1/2 (n^2 - 0 * n)` | |
336
+
337
+
338
+ It should be:
339
+ | Name | Formula | |
340
+ | ------ | -------------------- | --- |
341
+ | Square | `1/2 (2n^2 - 0 * n)` | |
342
+
343
+ - Chapter 1, formula in the table on page 51 says:
344
+
345
+ | Name | Formula | |
346
+ | -------------------- | --------------------- | --------------------- |
347
+ | Cent. icosihexagonal | `1/3n^2 - 13 * n + 1` | `546, 728, 936, 1170` |
348
+
349
+
350
+ It should be:
351
+ | Name | Formula | |
352
+ | -------------------- | --------------------- | --------------------- |
353
+ | Cent. icosihexagonal | `1/3n^2 - 13 * n + 1` | `547, 729, 937, 1171` |
354
+
355
+ - Chapter 1, formula in the table on page 51 says:
356
+
357
+ | Name | Formula | |
358
+ | --------------------- | ------- | ----- |
359
+ | Cent. icosiheptagonal | | `972` |
360
+
361
+
362
+ It should be:
363
+ | Name | Formula | |
364
+ | --------------------- | ------- | ----- |
365
+ | Cent. icosiheptagonal | | `973` |
366
+
367
+ - Chapter 1, formula in the table on page 51 says:
368
+
369
+ | Name | Formula | |
370
+ | -------------------- | ------- | ---- |
371
+ | Cent. icosioctagonal | | `84` |
372
+
373
+
374
+ It should be:
375
+ | Name | Formula | |
376
+ | -------------------- | ------- | ---- |
377
+ | Cent. icosioctagonal | | `85` |
378
+
379
+ - Chapter 1, page 65 (polite numbers) says:
380
+ > `inpolite numbers`
381
+
382
+ It should read:
383
+
384
+ > `impolite numbers`
385
+
386
+ - Chapter 1, formula (truncated centered pentagonal numbers) on page 72 says:
387
+ > `TCSS_5(n) = (35n^2 - 55n) / 2 + 3`
388
+
389
+ It should be:
390
+ > `TCSS_5(n) = (35n^2 - 55n) / 2 + 11`
391
+
392
+ - Chapter 2, formula of octagonal pyramidal number on page 92 says:
393
+ > `n(n+1)(6n-1) / 6`
394
+
395
+ It should be:
396
+ > `n(n+1)(6n-3) / 6`
397
+
398
+ - Chapter 2, page 140 says:
399
+ > centered square pyramidal numbers are 1, 6, 19, 44, 85, 111, 146, 231, ...
400
+
401
+ This sequence must exclude the number 111:
402
+
403
+ > centered square pyramidal numbers are 1, 6, 19, 44, 85, ~~111~~, 146, 231, ...
404
+
405
+ - Chapter 2, page 155 (generalized centered tetrahedron numbers) says:
406
+ > `S_3^3(n) = ((2n - 1)(n^2 + n + 3)) / 3`
407
+
408
+ Formula must have a negative sign:
409
+
410
+ > `S_3^3(n) = ((2n - 1)(n^2 - n + 3)) / 3`
411
+
412
+ - Chapter 2, page 156 (generalized centered square pyramid numbers) says:
413
+ > `S_4^3(n) = ((2n - 1) * (n^2 - n + 2)^2) / 3`
414
+
415
+ Formula must write:
416
+
417
+ > `S_4^3(n) = ((2n - 1) * (n^2 - n + 2)) / 2`
418
+
419
+ - Chapter 3, page 188 (hyperoctahedral numbers) says:
420
+ > `hexadecahoron numbers`
421
+
422
+ It should read:
423
+
424
+ > `hexadecachoron numbers`
425
+
426
+ - Chapter 3, page 190 (hypericosahedral numbers) says:
427
+ > `hexacisihoron numbers`
428
+
429
+ It should read:
430
+
431
+ > `hexacosichoron numbers`
432
+
@@ -634,6 +634,282 @@ module FigurateNumbers
634
634
  end
635
635
  end
636
636
 
637
+ def triangular_pyramidal_numbers
638
+ Enumerator.new do |y|
639
+ (1..Float::INFINITY).each do |delta|
640
+ y << (delta * (delta + 1) * (delta + 2)) / 6
641
+ end
642
+ end
643
+ end
644
+
645
+ alias_method :tetrahedral_numbers, :triangular_pyramidal_numbers
646
+
647
+ def square_pyramidal_numbers
648
+ Enumerator.new do |y|
649
+ (1..Float::INFINITY).each do |delta|
650
+ y << (delta * (delta + 1) * (2 * delta + 1)) / 6
651
+ end
652
+ end
653
+ end
654
+
655
+ alias_method :pyramidal_numbers, :square_pyramidal_numbers
656
+
657
+ def pentagonal_pyramidal_numbers
658
+ Enumerator.new do |y|
659
+ (1..Float::INFINITY).each do |delta|
660
+ y << delta**2 * (delta + 1) / 2
661
+ end
662
+ end
663
+ end
664
+
665
+ def hexagonal_pyramidal_numbers
666
+ Enumerator.new do |y|
667
+ (1..Float::INFINITY).each do |delta|
668
+ y << delta * (delta + 1) * (4 * delta - 1) / 6
669
+ end
670
+ end
671
+ end
672
+
673
+ def heptagonal_pyramidal_numbers
674
+ Enumerator.new do |y|
675
+ (1..Float::INFINITY).each do |delta|
676
+ y << delta * (delta + 1) * (5 * delta - 2) / 6
677
+ end
678
+ end
679
+ end
680
+
681
+ def octagonal_pyramidal_numbers
682
+ Enumerator.new do |y|
683
+ (1..Float::INFINITY).each do |delta|
684
+ y << delta * (delta + 1) * (6 * delta - 3) / 6
685
+ end
686
+ end
687
+ end
688
+
689
+ def nonagonal_pyramidal_numbers
690
+ Enumerator.new do |y|
691
+ (1..Float::INFINITY).each do |delta|
692
+ y << delta * (delta + 1) * (7 * delta - 4) / 6
693
+ end
694
+ end
695
+ end
696
+
697
+ def decagonal_pyramidal_numbers
698
+ Enumerator.new do |y|
699
+ (1..Float::INFINITY).each do |delta|
700
+ y << delta * (delta + 1) * (8 * delta - 5) / 6
701
+ end
702
+ end
703
+ end
704
+
705
+ def hendecagonal_pyramidal_numbers
706
+ Enumerator.new do |y|
707
+ (1..Float::INFINITY).each do |delta|
708
+ y << delta * (delta + 1) * (9 * delta - 6) / 6
709
+ end
710
+ end
711
+ end
712
+
713
+ def dodecagonal_pyramidal_numbers
714
+ Enumerator.new do |y|
715
+ (1..Float::INFINITY).each do |delta|
716
+ y << delta * (delta + 1) * (10 * delta - 7) / 6
717
+ end
718
+ end
719
+ end
720
+
721
+ def tridecagonal_pyramidal_numbers
722
+ Enumerator.new do |y|
723
+ (1..Float::INFINITY).each do |delta|
724
+ y << delta * (delta + 1) * (11 * delta - 8) / 6
725
+ end
726
+ end
727
+ end
728
+
729
+ def tetradecagonal_pyramidal_numbers
730
+ Enumerator.new do |y|
731
+ (1..Float::INFINITY).each do |delta|
732
+ y << delta * (delta + 1) * (12 * delta - 9) / 6
733
+ end
734
+ end
735
+ end
736
+
737
+
738
+ def pentadecagonal_pyramidal_numbers
739
+ Enumerator.new do |y|
740
+ (1..Float::INFINITY).each do |delta|
741
+ y << delta * (delta + 1) * (13 * delta - 10) / 6
742
+ end
743
+ end
744
+ end
745
+
746
+
747
+ def hexadecagonal_pyramidal_numbers
748
+ Enumerator.new do |y|
749
+ (1..Float::INFINITY).each do |delta|
750
+ y << delta * (delta + 1) * (14 * delta - 11) / 6
751
+ end
752
+ end
753
+ end
754
+
755
+ def heptadecagonal_pyramidal_numbers
756
+ Enumerator.new do |y|
757
+ (1..Float::INFINITY).each do |delta|
758
+ y << delta * (delta + 1) * (15 * delta - 12) / 6
759
+ end
760
+ end
761
+ end
762
+
763
+ def octadecagonal_pyramidal_numbers
764
+ Enumerator.new do |y|
765
+ (1..Float::INFINITY).each do |delta|
766
+ y << delta * (delta + 1) * (16 * delta - 13) / 6
767
+ end
768
+ end
769
+ end
770
+
771
+ def nonadecagonal_pyramidal_numbers
772
+ Enumerator.new do |y|
773
+ (1..Float::INFINITY).each do |delta|
774
+ y << delta * (delta + 1) * (17 * delta - 14) / 6
775
+ end
776
+ end
777
+ end
778
+
779
+ def icosagonal_pyramidal_numbers
780
+ Enumerator.new do |y|
781
+ (1..Float::INFINITY).each do |delta|
782
+ y << delta * (delta + 1) * (18 * delta - 15) / 6
783
+ end
784
+ end
785
+ end
786
+
787
+ def icosihenagonal_pyramidal_numbers
788
+ Enumerator.new do |y|
789
+ (1..Float::INFINITY).each do |delta|
790
+ y << delta * (delta + 1) * (19 * delta - 16) / 6
791
+ end
792
+ end
793
+ end
794
+
795
+ def icosidigonal_pyramidal_numbers
796
+ Enumerator.new do |y|
797
+ (1..Float::INFINITY).each do |delta|
798
+ y << delta * (delta + 1) * (20 * delta - 17) / 6
799
+ end
800
+ end
801
+ end
802
+
803
+ def icositrigonal_pyramidal_numbers
804
+ Enumerator.new do |y|
805
+ (1..Float::INFINITY).each do |delta|
806
+ y << delta * (delta + 1) * (21 * delta - 18) / 6
807
+ end
808
+ end
809
+ end
810
+
811
+ def icositetragonal_pyramidal_numbers
812
+ Enumerator.new do |y|
813
+ (1..Float::INFINITY).each do |delta|
814
+ y << delta * (delta + 1) * (22 * delta - 19) / 6
815
+ end
816
+ end
817
+ end
818
+
819
+ def icosipentagonal_pyramidal_numbers
820
+ Enumerator.new do |y|
821
+ (1..Float::INFINITY).each do |delta|
822
+ y << delta * (delta + 1) * (23 * delta - 20) / 6
823
+ end
824
+ end
825
+ end
826
+
827
+ def icosihexagonal_pyramidal_numbers
828
+ Enumerator.new do |y|
829
+ (1..Float::INFINITY).each do |delta|
830
+ y << delta * (delta + 1) * (24 * delta - 21) / 6
831
+ end
832
+ end
833
+ end
834
+
835
+ def icosiheptagonal_pyramidal_numbers
836
+ Enumerator.new do |y|
837
+ (1..Float::INFINITY).each do |delta|
838
+ y << delta * (delta + 1) * (25 * delta - 22) / 6
839
+ end
840
+ end
841
+ end
842
+
843
+ def icosioctagonal_pyramidal_numbers
844
+ Enumerator.new do |y|
845
+ (1..Float::INFINITY).each do |delta|
846
+ y << delta * (delta + 1) * (26 * delta - 23) / 6
847
+ end
848
+ end
849
+ end
850
+
851
+
852
+ def icosinonagonal_pyramidal_numbers
853
+ Enumerator.new do |y|
854
+ (1..Float::INFINITY).each do |delta|
855
+ y << delta * (delta + 1) * (27 * delta - 24) / 6
856
+ end
857
+ end
858
+ end
859
+
860
+ def triacontagonal_pyramidal_numbers
861
+ Enumerator.new do |y|
862
+ (1..Float::INFINITY).each do |delta|
863
+ y << delta * (delta + 1) * (28 * delta - 25) / 6
864
+ end
865
+ end
866
+ end
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
912
+
637
913
  def cubic_numbers
638
914
  Enumerator.new do |y|
639
915
  (1..Float::INFINITY).each do |delta|
@@ -642,6 +918,8 @@ module FigurateNumbers
642
918
  end
643
919
  end
644
920
 
921
+ alias_method :perfect_cube_numbers, :cubic_numbers
922
+
645
923
  def tetrahedral_numbers
646
924
  Enumerator.new do |y|
647
925
  (1..Float::INFINITY).each do |delta|
@@ -1026,14 +1304,6 @@ module FigurateNumbers
1026
1304
  end
1027
1305
  end
1028
1306
 
1029
- def generalized_centered_tetrahedron_numbers(left_index = 0)
1030
- Enumerator.new do |y|
1031
- ((-1 * left_index.abs)..Float::INFINITY).each do |delta|
1032
- y << (2 * delta - 1) * (delta**2 - delta + 3) / 3
1033
- end
1034
- end
1035
- end
1036
-
1037
1307
  def generalized_centered_square_pyramid_numbers(left_index = 0)
1038
1308
  Enumerator.new do |y|
1039
1309
  ((-1 * left_index.abs)..Float::INFINITY).each do |delta|
@@ -1919,4 +2189,3 @@ module FigurateNumbers
1919
2189
  end
1920
2190
 
1921
2191
  end
1922
-
metadata CHANGED
@@ -1,40 +1,49 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: figurate_numbers
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.2.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-03 00:00:00.000000000 Z
11
+ date: 2024-07-08 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: Generates 206 infinite sequences of plane, space, and multidimensional
13
+ description: Generates 239 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.
17
- email: edelve91@gmail.com
17
+ email:
18
+ - edelve91@gmail.com
18
19
  executables: []
19
20
  extensions: []
20
- extra_rdoc_files: []
21
+ extra_rdoc_files:
22
+ - README.md
21
23
  files:
24
+ - README.md
22
25
  - lib/figurate_numbers.rb
23
26
  homepage: https://github.com/edelveart/figurate_numbers_sonic_pi
24
27
  licenses:
25
28
  - MIT
26
29
  metadata:
27
- source_code_uri: https://github.com/edelveart/figurate_numbers_sonic_pi
28
30
  documentation_uri: https://www.rubydoc.info/gems/figurate_numbers
31
+ source_code_uri: https://github.com/edelveart/figurate_numbers_sonic_pi
32
+ homepage_uri: https://github.com/edelveart/figurate_numbers_sonic_pi
29
33
  post_install_message:
30
- rdoc_options: []
34
+ rdoc_options:
35
+ - "--main"
36
+ - README.md
37
+ - "--line-numbers"
38
+ - "--inline-source"
39
+ - "--quiet"
31
40
  require_paths:
32
41
  - lib
33
42
  required_ruby_version: !ruby/object:Gem::Requirement
34
43
  requirements:
35
44
  - - ">="
36
45
  - !ruby/object:Gem::Version
37
- version: '0'
46
+ version: 2.0.0
38
47
  required_rubygems_version: !ruby/object:Gem::Requirement
39
48
  requirements:
40
49
  - - ">="
@@ -44,6 +53,6 @@ requirements: []
44
53
  rubygems_version: 3.3.7
45
54
  signing_key:
46
55
  specification_version: 4
47
- summary: Generates 206 infinite sequences of plane, space, and multidimensional figurate
56
+ summary: Generates 239 infinite sequences of plane, space, and multidimensional figurate
48
57
  numbers based on the book ‘Figurate Numbers’ (2012) by Elena Deza and Michel Deza.
49
58
  test_files: []