figurate_numbers 1.0.0 → 1.1.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 +426 -0
  3. data/lib/figurate_numbers.rb +232 -9
  4. metadata +11 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 46d9d8f715ec77762330a7e775183f91e1d2aa2128aa172d7014a51c5b32b6d3
4
- data.tar.gz: 6681fe1f93e9fff877072d0c679ac651fe351579e3b790b27b69954ab601cc28
3
+ metadata.gz: 7085cfc533bef2883851cae4cf8cece1bbbc85cac5d3c16a9a56001abad29f79
4
+ data.tar.gz: e49e4db8395eb0c49b9f217d47f14ec5ca4097926f0c2542938f63727b696a82
5
5
  SHA512:
6
- metadata.gz: 0bdb7ad900f304d51cc68c511f6b536ceab815393c911e5a911417afd7f25d342f93c88715eb219867f205998699ba66c8334e9e17be1839dd9964468467e326
7
- data.tar.gz: 19a404a4434d4c773f3ecb7cd27392eb1f9e58df3cc6a9cb14941a7b9d6633a9259cc87e472837aba2a1f43a07c9954b8a43e48a6ed2b9236e5ee7297de32e29
6
+ metadata.gz: 0135ee29332aa3e667d1e084d23b6053c0a84901ed2c8278782958d6aed0f4c3f3b2b657525f3fc0fc2b8aca9480f5cb398c8283b04acd22fd0f3830ae0f5a4d
7
+ data.tar.gz: d5711e1c67b696e46db5947df721ccb8d56bba6ed4f726c8d87189d66171b0ab6061909430b0dfd52a8f6df0e9b47a85411396290d5329160595767ac47d32bd
data/README.md ADDED
@@ -0,0 +1,426 @@
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 `234 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 = `81`
14
+ 3. **Multidimensional** figurate numbers implemented = `68`
15
+ 4. **Zoo of figurate-related numbers** implemented = `6`
16
+
17
+ - [x] **TOTAL** = `234` 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>cubic_numbers != hex_pyramidal_numbers (equality only by quantity) </code></li>
174
+ <li><code>tetrahedral_numbers</code></li>
175
+ <li><code>octahedral_numbers</code></li>
176
+ <li><code>dodecahedral_numbers</code></li>
177
+ <li><code>icosahedral_numbers</code></li>
178
+ <li><code>truncated_tetrahedral_numbers</code></li>
179
+ <li><code>truncated_cubic_numbers</code></li>
180
+ <li><code>truncated_octahedral_numbers</code></li>
181
+ <li><code>stella_octangula_numbers</code></li>
182
+ <li><code>centered_cube_numbers</code></li>
183
+ <li><code>rhombic_dodecahedral_numbers</code></li>
184
+ <li><code>hauy_rhombic_dodecahedral_numbers</code></li>
185
+
186
+ <li><code>centered_tetrahedron_numbers = centered_tetrahedral_numbers</code></li>
187
+ <li><code>centered_square_pyramid_numbers = centered_pyramid_numbers</code></li>
188
+ <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>
190
+ <li><code>centered_hexagonal_pyramid_numbers</code></li>
191
+ <li><code>centered_heptagonal_pyramid_numbers</code></li>
192
+ <li><code>centered_octagonal_pyramid_numbers</code></li>
193
+
194
+ <li><code>centered_octahedron_numbers</code></li>
195
+ <li><code>centered_icosahedron_numbers = centered_cuboctahedron_numbers</code></li>
196
+ <li><code>centered_dodecahedron_numbers</code></li>
197
+ <li><code>centered_truncated_tetrahedron_numbers</code></li>
198
+ <li><code>centered_truncated_cube_numbers</code></li>
199
+ <li><code>centered_truncated_octahedron_numbers</code></li>
200
+
201
+ <li><code>centered_mgonal_pyramidal_numbers(m)</code></li>
202
+ <li><code>centered_triangular_pyramidal_numbers</code></li>
203
+ <li><code>centered_square_pyramidal_numbers</code></li>
204
+ <li><code>centered_pentagonal_pyramidal_numbers</code></li>
205
+ <li><code>centered_hexagonal_pyramidal_numbers = hex_pyramidal_numbers</code></li>
206
+ <li><code>centered_heptagonal_pyramidal_numbers</code></li>
207
+ <li><code>centered_octagonal_pyramidal_numbers</code></li>
208
+ <li><code>centered_nonagonal_pyramidal_numbers</code></li>
209
+ <li><code>centered_decagonal_pyramidal_numbers</code></li>
210
+ <li><code>centered_hendecagonal_pyramidal_numbers</code></li>
211
+ <li><code>centered_dodecagonal_pyramidal_numbers</code></li>
212
+
213
+ <li><code>hexagonal_prism_numbers</code></li>
214
+ <li><code>mgonal_prism_numbers(m)</code></li>
215
+ <li><code>generalized_mgonal_pyramidal_numbers(m, left_index = 0)</code></li>
216
+ <li><code>generalized_pentagonal_pyramidal_numbers(left_index = 0)</code></li>
217
+ <li><code>generalized_hexagonal_pyramidal_numbers(left_index = 0)</code></li>
218
+ <li><code>generalized_cubic_numbers(left_index = 0)</code></li>
219
+ <li><code>generalized_octahedral_numbers(left_index = 0)</code></li>
220
+ <li><code>generalized_icosahedral_numbers(left_index = 0)</code></li>
221
+ <li><code>generalized_dodecahedral_numbers(left_index = 0)</code></li>
222
+ <li><code>generalized_centered_cube_numbers(left_index = 0)</code></li>
223
+ <li><code>generalized_centered_tetrahedron_numbers(left_index = 0)</code></li>
224
+ <li><code>generalized_centered_square_pyramid_numbers(left_index = 0)</code></li>
225
+ <li><code>generalized_rhombic_dodecahedral_numbers(left_index = 0)</code></li>
226
+ <li><code>generalized_centered_mgonal_pyramidal_numbers(m, left_index = 0)</code></li>
227
+ <li><code>generalized_mgonal_prism_numbers(m, left_index = 0)</code></li>
228
+ <li><code>generalized_hexagonal_prism_numbers(left_index = 0)</code></li>
229
+ </ol>
230
+
231
+ ### 3. Multidimensional figurate numbers
232
+ <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>
235
+ <li><code>five_dimensional_hypertetrahedron_numbers</code></li>
236
+ <li><code>six_dimensional_hypertetrahedron_numbers</code></li>
237
+ <li><code>biquadratic_numbers</code></li>
238
+ <li><code>k_dimensional_hypercube_numbers(k) = k_hypercube_numbers(k)</code></li>
239
+ <li><code>five_dimensional_hypercube_numbers</code></li>
240
+ <li><code>six_dimensional_hypercube_numbers</code></li>
241
+ <li><code>hyperoctahedral_numbers = hexadecachoron_numbers = four_cross_polytope_numbers = four_orthoplex_numbers</code></li>
242
+ <li><code>hypericosahedral_numbers = tetraplex_numbers = polytetrahedron_numbers = hexacosichoron_numbers</code></li>
243
+ <li><code>hyperdodecahedral_numbers = hecatonicosachoron_numbers = dodecaplex_numbers = polydodecahedron_numbers</code></li>
244
+ <li><code>polyoctahedral_numbers = icositetrachoron_numbers = octaplex_numbers = hyperdiamond_numbers</code></li>
245
+
246
+ <li><code>four_dimensional_hyperoctahedron_numbers</code></li>
247
+ <li><code>five_dimensional_hyperoctahedron_numbers</code></li>
248
+ <li><code>six_dimensional_hyperoctahedron_numbers</code></li>
249
+ <li><code>seven_dimensional_hyperoctahedron_numbers</code></li>
250
+ <li><code>eight_dimensional_hyperoctahedron_numbers</code></li>
251
+ <li><code>nine_dimensional_hyperoctahedron_numbers</code></li>
252
+ <li><code>ten_dimensional_hyperoctahedron_numbers</code></li>
253
+ <li><code>k_dimensional_hyperoctahedron_numbers(k) = k_cross_polytope_numbers(k)</code></li>
254
+
255
+ <li><code>four_dimensional_mgonal_pyramidal_numbers(m) = mgonal_pyramidal_number_of_the_second_order(m)</code></li>
256
+ <li><code>four_dimensional_square_pyramidal_numbers</code></li>
257
+ <li><code>four_dimensional_pentagonal_pyramidal_numbers</code></li>
258
+ <li><code>four_dimensional_hexagonal_pyramidal_numbers</code></li>
259
+ <li><code>four_dimensional_heptagonal_pyramidal_numbers</code></li>
260
+ <li><code>four_dimensional_octagonal_pyramidal_numbers</code></li>
261
+ <li><code>four_dimensional_nonagonal_pyramidal_numbers</code></li>
262
+ <li><code>four_dimensional_decagonal_pyramidal_numbers</code></li>
263
+ <li><code>four_dimensional_hendecagonal_pyramidal_numbers</code></li>
264
+ <li><code>four_dimensional_dodecagonal_pyramidal_numbers</code></li>
265
+
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>
268
+ <li><code>five_dimensional_square_pyramidal_numbers</code></li>
269
+ <li><code>five_dimensional_pentagonal_pyramidal_numbers</code></li>
270
+ <li><code>five_dimensional_hexagonal_pyramidal_numbers</code></li>
271
+ <li><code>five_dimensional_heptagonal_pyramidal_numbers</code></li>
272
+ <li><code>five_dimensional_octagonal_pyramidal_numbers</code></li>
273
+ <li><code>six_dimensional_mgonal_pyramidal_numbers(m)</code></li>
274
+ <li><code>six_dimensional_square_pyramidal_numbers</code></li>
275
+ <li><code>six_dimensional_pentagonal_pyramidal_numbers</code></li>
276
+ <li><code>six_dimensional_hexagonal_pyramidal_numbers</code></li>
277
+ <li><code>six_dimensional_heptagonal_pyramidal_numbers</code></li>
278
+ <li><code>six_dimensional_octagonal_pyramidal_numbers</code></li>
279
+
280
+ <li><code>centered_biquadratic_numbers</code></li>
281
+ <li><code>k_dimensional_centered_hypercube_numbers(k)</code></li>
282
+ <li><code>five_dimensional_centered_hypercube_numbers</code></li>
283
+ <li><code>six_dimensional_centered_hypercube_numbers</code></li>
284
+ <li><code>centered_polytope_numbers</code></li>
285
+ <li><code>k_dimensional_centered_hypertetrahedron_numbers(k)</code></li>
286
+ <li><code>five_dimensional_centered_hypertetrahedron_numbers(k)</code></li>
287
+ <li><code>six_dimensional_centered_hypertetrahedron_numbers(k)</code></li>
288
+
289
+ <li><code>centered_hyperoctahedral_numbers = orthoplex_numbers</code></li>
290
+ <li><code>nexus_numbers(k)</code></li>
291
+ <li><code>k_dimensional_centered_hyperoctahedron_numbers(k)</code></li>
292
+ <li><code>five_dimensional_centered_hyperoctahedron_numbers</code></li>
293
+ <li><code>six_dimensional_centered_hyperoctahedron_numbers</code></li>
294
+ <li><code>generalized_pentatope_numbers(left_index = 0)</code></li>
295
+ <li><code>generalized_k_dimensional_hypertetrahedron_numbers(k = 5, left_index = 0)</code></li>
296
+ <li><code>generalized_biquadratic_numbers(left_index = 0)</code></li>
297
+ <li><code>generalized_k_dimensional_hypercube_numbers(k = 5, left_index = 0)</code></li>
298
+ <li><code>generalized_hyperoctahedral_numbers(left_index = 0)</code></li>
299
+ <li><code>generalized_k_dimensional_hyperoctahedron_numbers(k = 5, left_index = 0) [even or odd dimension only changes sign]</code></li>
300
+ <li><code>generalized_hyperdodecahedral_numbers(left_index = 0)</code></li>
301
+ <li><code>generalized_hypericosahedral_numbers(left_index = 0)</code></li>
302
+ <li><code>generalized_polyoctahedral_numbers(left_index = 0)</code></li>
303
+ <li><code>generalized_k_dimensional_mgonal_pyramidal_numbers(k, m, left_index = 0)</code></li>
304
+ <li><code>generalized_k_dimensional_centered_hypercube_numbers(k, left_index = 0)</code></li>
305
+
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> -->
309
+
310
+ <li><code>generalized_nexus_numbers(k, left_index = 0) [even or odd dimension only changes sign]</code></li>
311
+ </ol>
312
+
313
+ ### 6. Zoo of figurate-related numbers
314
+ <ol>
315
+ <li><code>cuban_numbers = cuban_prime_numbers</code></li>
316
+ <li><code>quartan_numbers [Needs to improve the algorithmic complexity for n > 70]</code></li>
317
+ <li><code>pell_numbers</code></li>
318
+ <li><code>carmichael_numbers [Needs to improve the algorithmic complexity for n > 20]</code></li>
319
+ <li><code>stern_prime_numbers(infty = false) [Quick calculations up to 8 terms]</code></li>
320
+ <li><code>apocalyptic_numbers</code></li>
321
+ </ol>
322
+
323
+ ## Errata
324
+
325
+ - Chapter 1, formula in the table on page 6 says:
326
+
327
+ | Name | Formula | |
328
+ | ------ | ------------------- | --- |
329
+ | Square | `1/2 (n^2 - 0 * n)` | |
330
+
331
+
332
+ It should be:
333
+ | Name | Formula | |
334
+ | ------ | -------------------- | --- |
335
+ | Square | `1/2 (2n^2 - 0 * n)` | |
336
+
337
+ - Chapter 1, formula in the table on page 51 says:
338
+
339
+ | Name | Formula | |
340
+ | -------------------- | --------------------- | --------------------- |
341
+ | Cent. icosihexagonal | `1/3n^2 - 13 * n + 1` | `546, 728, 936, 1170` |
342
+
343
+
344
+ It should be:
345
+ | Name | Formula | |
346
+ | -------------------- | --------------------- | --------------------- |
347
+ | Cent. icosihexagonal | `1/3n^2 - 13 * n + 1` | `547, 729, 937, 1171` |
348
+
349
+ - Chapter 1, formula in the table on page 51 says:
350
+
351
+ | Name | Formula | |
352
+ | --------------------- | ------- | ----- |
353
+ | Cent. icosiheptagonal | | `972` |
354
+
355
+
356
+ It should be:
357
+ | Name | Formula | |
358
+ | --------------------- | ------- | ----- |
359
+ | Cent. icosiheptagonal | | `973` |
360
+
361
+ - Chapter 1, formula in the table on page 51 says:
362
+
363
+ | Name | Formula | |
364
+ | -------------------- | ------- | ---- |
365
+ | Cent. icosioctagonal | | `84` |
366
+
367
+
368
+ It should be:
369
+ | Name | Formula | |
370
+ | -------------------- | ------- | ---- |
371
+ | Cent. icosioctagonal | | `85` |
372
+
373
+ - Chapter 1, page 65 (polite numbers) says:
374
+ > `inpolite numbers`
375
+
376
+ It should read:
377
+
378
+ > `impolite numbers`
379
+
380
+ - Chapter 1, formula (truncated centered pentagonal numbers) on page 72 says:
381
+ > `TCSS_5(n) = (35n^2 - 55n) / 2 + 3`
382
+
383
+ It should be:
384
+ > `TCSS_5(n) = (35n^2 - 55n) / 2 + 11`
385
+
386
+ - Chapter 2, formula of octagonal pyramidal number on page 92 says:
387
+ > `n(n+1)(6n-1) / 6`
388
+
389
+ It should be:
390
+ > `n(n+1)(6n-3) / 6`
391
+
392
+ - Chapter 2, page 140 says:
393
+ > centered square pyramidal numbers are 1, 6, 19, 44, 85, 111, 146, 231, ...
394
+
395
+ This sequence must exclude the number 111:
396
+
397
+ > centered square pyramidal numbers are 1, 6, 19, 44, 85, ~~111~~, 146, 231, ...
398
+
399
+ - Chapter 2, page 155 (generalized centered tetrahedron numbers) says:
400
+ > `S_3^3(n) = ((2n - 1)(n^2 + n + 3)) / 3`
401
+
402
+ Formula must have a negative sign:
403
+
404
+ > `S_3^3(n) = ((2n - 1)(n^2 - n + 3)) / 3`
405
+
406
+ - Chapter 2, page 156 (generalized centered square pyramid numbers) says:
407
+ > `S_4^3(n) = ((2n - 1) * (n^2 - n + 2)^2) / 3`
408
+
409
+ Formula must write:
410
+
411
+ > `S_4^3(n) = ((2n - 1) * (n^2 - n + 2)) / 2`
412
+
413
+ - Chapter 3, page 188 (hyperoctahedral numbers) says:
414
+ > `hexadecahoron numbers`
415
+
416
+ It should read:
417
+
418
+ > `hexadecachoron numbers`
419
+
420
+ - Chapter 3, page 190 (hypericosahedral numbers) says:
421
+ > `hexacisihoron numbers`
422
+
423
+ It should read:
424
+
425
+ > `hexacosichoron numbers`
426
+
@@ -634,6 +634,238 @@ 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
+
637
869
  def cubic_numbers
638
870
  Enumerator.new do |y|
639
871
  (1..Float::INFINITY).each do |delta|
@@ -1026,14 +1258,6 @@ module FigurateNumbers
1026
1258
  end
1027
1259
  end
1028
1260
 
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
1261
  def generalized_centered_square_pyramid_numbers(left_index = 0)
1038
1262
  Enumerator.new do |y|
1039
1263
  ((-1 * left_index.abs)..Float::INFINITY).each do |delta|
@@ -1919,4 +2143,3 @@ module FigurateNumbers
1919
2143
  end
1920
2144
 
1921
2145
  end
1922
-
metadata CHANGED
@@ -1,31 +1,34 @@
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.1.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 234 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
+ homepage_uri: https://github.com/edelveart/figurate_numbers_sonic_pi
29
32
  post_install_message:
30
33
  rdoc_options: []
31
34
  require_paths:
@@ -34,7 +37,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
34
37
  requirements:
35
38
  - - ">="
36
39
  - !ruby/object:Gem::Version
37
- version: '0'
40
+ version: 2.0.0
38
41
  required_rubygems_version: !ruby/object:Gem::Requirement
39
42
  requirements:
40
43
  - - ">="
@@ -44,6 +47,6 @@ requirements: []
44
47
  rubygems_version: 3.3.7
45
48
  signing_key:
46
49
  specification_version: 4
47
- summary: Generates 206 infinite sequences of plane, space, and multidimensional figurate
50
+ summary: Generates 234 infinite sequences of plane, space, and multidimensional figurate
48
51
  numbers based on the book ‘Figurate Numbers’ (2012) by Elena Deza and Michel Deza.
49
52
  test_files: []