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.
- checksums.yaml +4 -4
- data/README.md +432 -0
- data/lib/figurate_numbers.rb +278 -9
- metadata +18 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a5641cd56367a1aeafe786f318638aec399ee4d19370ab1438495c5cad50192d
|
4
|
+
data.tar.gz: 5c3ced655af6fea90399cc5c233780b70a215d704c876acaef9f5dca54508dba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b5d5c83119c203b0f0fcee6e47ac52b2b1cd4f43cf9518626237e535f6c08f7644021533b0f917d79863416f8fe98665b331445453c185ec3fe935b9fac1b1b
|
7
|
+
data.tar.gz: '095f5efba3092a8e0168629950742620014a366bbbddc385e55e23c83e1b7dc3388cc03026af15ca66103d1d56acaa1c87fcb90521f014d6e4b62fe173059049'
|
data/README.md
ADDED
@@ -0,0 +1,432 @@
|
|
1
|
+
# Figurate Numbers
|
2
|
+
|
3
|
+
[](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
|
+
|
data/lib/figurate_numbers.rb
CHANGED
@@ -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.
|
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-
|
11
|
+
date: 2024-07-08 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description: Generates
|
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:
|
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:
|
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
|
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: []
|