figurate_numbers 0.9.6 → 0.9.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/figurate_numbers.rb +518 -10
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9b0f3e60892d81b990ede97fcc7798789140ceb234b2151ebe6727f95ae257f8
|
4
|
+
data.tar.gz: d4ec6a7f04c47c0d66fe4f6e78037beac4a03e5357abc9a9ad57558fe220136d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ee9da5e161c7d528076750c33dcd218c1ee89619219ac67a2dec5e1e9ea839e48908a454ca4b7606b076359220921711dfd3cb2d2073716439adc9d6f3890185
|
7
|
+
data.tar.gz: de9ab8b893842cbf8286eaf3326b0e69a8ff2ab512f12fb7e0647b66d981deda835a7bc55086dd3473fe6b450f93a2afbcbf94196d32ee85df1aa4c417d5c5b9
|
data/lib/figurate_numbers.rb
CHANGED
@@ -10,10 +10,218 @@ module FigurateNumbers
|
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
-
def FigurateNumbers.
|
13
|
+
def FigurateNumbers.triangular_numbers
|
14
14
|
Enumerator.new do |y|
|
15
15
|
(1..Float::INFINITY).each do |delta|
|
16
|
-
y << (
|
16
|
+
y << (delta**2 + delta) / 2
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def FigurateNumbers.square_numbers
|
22
|
+
Enumerator.new do |y|
|
23
|
+
(1..Float::INFINITY).each do |delta|
|
24
|
+
y << (2 * delta**2) / 2
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def FigurateNumbers.pentagonal_numbers
|
30
|
+
Enumerator.new do |y|
|
31
|
+
(1..Float::INFINITY).each do |delta|
|
32
|
+
y << (3 * delta**2 - delta) / 2
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def FigurateNumbers.hexagonal_numbers
|
38
|
+
Enumerator.new do |y|
|
39
|
+
(1..Float::INFINITY).each do |delta|
|
40
|
+
y << (4 * delta**2 - 2 * delta) / 2
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def FigurateNumbers.heptagonal_numbers
|
46
|
+
Enumerator.new do |y|
|
47
|
+
(1..Float::INFINITY).each do |delta|
|
48
|
+
y << (5 * delta**2 - 3 * delta) / 2
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def FigurateNumbers.octagonal_numbers
|
54
|
+
Enumerator.new do |y|
|
55
|
+
(1..Float::INFINITY).each do |delta|
|
56
|
+
y << (6 * delta**2 - 4 * delta) / 2
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def FigurateNumbers.nonagonal_numbers
|
62
|
+
Enumerator.new do |y|
|
63
|
+
(1..Float::INFINITY).each do |delta|
|
64
|
+
y << (7 * delta**2 - 5 * delta) / 2
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def FigurateNumbers.decagonal_numbers
|
70
|
+
Enumerator.new do |y|
|
71
|
+
(1..Float::INFINITY).each do |delta|
|
72
|
+
y << (8 * delta**2 - 6 * delta) / 2
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def FigurateNumbers.hendecagonal_numbers
|
78
|
+
Enumerator.new do |y|
|
79
|
+
(1..Float::INFINITY).each do |delta|
|
80
|
+
y << (9 * delta**2 - 7 * delta) / 2
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def FigurateNumbers.dodecagonal_numbers
|
86
|
+
Enumerator.new do |y|
|
87
|
+
(1..Float::INFINITY).each do |delta|
|
88
|
+
y << (10 * delta**2 - 8 * delta) / 2
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def FigurateNumbers.icosipentagonal_numbers
|
94
|
+
Enumerator.new do |y|
|
95
|
+
(1..Float::INFINITY).each do |delta|
|
96
|
+
y << (23 * delta**2 - 21 * delta) / 2
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
def FigurateNumbers.icosihexagonal_numbers
|
102
|
+
Enumerator.new do |y|
|
103
|
+
(1..Float::INFINITY).each do |delta|
|
104
|
+
y << (24 * delta**2 - 22 * delta) / 2
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
def FigurateNumbers.icosiheptagonal_numbers
|
110
|
+
Enumerator.new do |y|
|
111
|
+
(1..Float::INFINITY).each do |delta|
|
112
|
+
y << (25 * delta**2 - 23 * delta) / 2
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
def FigurateNumbers.icosioctagonal_numbers
|
118
|
+
Enumerator.new do |y|
|
119
|
+
(1..Float::INFINITY).each do |delta|
|
120
|
+
y << (26 * delta**2 - 24 * delta) / 2
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
def FigurateNumbers.icosinonagonal_numbers
|
126
|
+
Enumerator.new do |y|
|
127
|
+
(1..Float::INFINITY).each do |delta|
|
128
|
+
y << (27 * delta**2 - 25 * delta) / 2
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
def FigurateNumbers.triacontagonal_numbers
|
134
|
+
Enumerator.new do |y|
|
135
|
+
(1..Float::INFINITY).each do |delta|
|
136
|
+
y << (28 * delta**2 - 26 * delta) / 2
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
def FigurateNumbers.centered_triangular_numbers
|
142
|
+
Enumerator.new do |y|
|
143
|
+
(1..Float::INFINITY).each do |delta|
|
144
|
+
y << (3 * delta**2 - 3 * delta + 2) / 2
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
def FigurateNumbers.centered_square_numbers
|
150
|
+
Enumerator.new do |y|
|
151
|
+
(1..Float::INFINITY).each do |delta|
|
152
|
+
y << 2 * delta**2 - 2 * delta + 1
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
def FigurateNumbers.centered_pentagonal_numbers
|
158
|
+
Enumerator.new do |y|
|
159
|
+
(1..Float::INFINITY).each do |delta|
|
160
|
+
y << (5 * delta**2 - 5 * delta + 2) / 2
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
def FigurateNumbers.centered_dodecagonal_numbers
|
166
|
+
Enumerator.new do |y|
|
167
|
+
(1..Float::INFINITY).each do |delta|
|
168
|
+
y << 6 * delta**2 - 6 * delta + 1
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
def FigurateNumbers.centered_icosipentagonal_numbers
|
174
|
+
Enumerator.new do |y|
|
175
|
+
(1..Float::INFINITY).each do |delta|
|
176
|
+
y << (25 * delta**2 - 25 * delta + 2) / 2
|
177
|
+
end
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
def FigurateNumbers.centered_icosihexagonal_numbers
|
182
|
+
Enumerator.new do |y|
|
183
|
+
(1..Float::INFINITY).each do |delta|
|
184
|
+
y << (13 * delta**2 - 13 * delta + 1)
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
189
|
+
def FigurateNumbers.centered_icosiheptagonal_numbers
|
190
|
+
Enumerator.new do |y|
|
191
|
+
(1..Float::INFINITY).each do |delta|
|
192
|
+
y << (27 * delta**2 - 27 * delta + 2) / 2
|
193
|
+
end
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
197
|
+
def FigurateNumbers.centered_icosioctagonal_numbers
|
198
|
+
Enumerator.new do |y|
|
199
|
+
(1..Float::INFINITY).each do |delta|
|
200
|
+
y << (14 * delta**2 - 14 * delta + 1)
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
def FigurateNumbers.centered_icosinonagonal_numbers
|
206
|
+
Enumerator.new do |y|
|
207
|
+
(1..Float::INFINITY).each do |delta|
|
208
|
+
y << (29 * delta**2 - 29 * delta + 2) / 2
|
209
|
+
end
|
210
|
+
end
|
211
|
+
end
|
212
|
+
|
213
|
+
def FigurateNumbers.centered_triacontagonal_numbers
|
214
|
+
Enumerator.new do |y|
|
215
|
+
(1..Float::INFINITY).each do |delta|
|
216
|
+
y << (15 * delta**2 - 15 * delta + 1)
|
217
|
+
end
|
218
|
+
end
|
219
|
+
end
|
220
|
+
|
221
|
+
def FigurateNumbers.centered_mgonal_numbers(m)
|
222
|
+
Enumerator.new do |y|
|
223
|
+
(1..Float::INFINITY).each do |delta|
|
224
|
+
y << (m * delta**2 - m * delta + 2) / 2
|
17
225
|
end
|
18
226
|
end
|
19
227
|
end
|
@@ -66,7 +274,7 @@ module FigurateNumbers
|
|
66
274
|
end
|
67
275
|
end
|
68
276
|
|
69
|
-
def FigurateNumbers.
|
277
|
+
def FigurateNumbers.truncated_centered_pol_numbers(k)
|
70
278
|
Enumerator.new do |y|
|
71
279
|
(1..Float::INFINITY).each do |delta|
|
72
280
|
y << 1 + (k * (7 * delta**2 - 11 * delta + 4)) / 2
|
@@ -74,6 +282,63 @@ module FigurateNumbers
|
|
74
282
|
end
|
75
283
|
end
|
76
284
|
|
285
|
+
def FigurateNumbers.truncated_centered_triangular_numbers
|
286
|
+
Enumerator.new do |y|
|
287
|
+
(1..Float::INFINITY).each do |delta|
|
288
|
+
y << (21 * delta**2 - 33 * delta) / 2 + 7
|
289
|
+
end
|
290
|
+
end
|
291
|
+
end
|
292
|
+
|
293
|
+
def FigurateNumbers.truncated_centered_square_numbers
|
294
|
+
Enumerator.new do |y|
|
295
|
+
(1..Float::INFINITY).each do |delta|
|
296
|
+
y << 14 * delta**2 - 22 * delta + 9
|
297
|
+
end
|
298
|
+
end
|
299
|
+
end
|
300
|
+
|
301
|
+
def FigurateNumbers.truncated_centered_pentagonal_numbers
|
302
|
+
Enumerator.new do |y|
|
303
|
+
(1..Float::INFINITY).each do |delta|
|
304
|
+
y << (35 * delta**2 - 55 * delta) / 2 + 11
|
305
|
+
end
|
306
|
+
end
|
307
|
+
end
|
308
|
+
|
309
|
+
def FigurateNumbers.truncated_centered_hexagonal_numbers
|
310
|
+
Enumerator.new do |y|
|
311
|
+
(1..Float::INFINITY).each do |delta|
|
312
|
+
y << 21 * delta**2 - 33 * delta + 13
|
313
|
+
end
|
314
|
+
end
|
315
|
+
end
|
316
|
+
|
317
|
+
def FigurateNumbers.generalized_mgonal_numbers(m, left_index = 0)
|
318
|
+
Enumerator.new do |y|
|
319
|
+
((-1 * left_index.abs)..Float::INFINITY).each do |delta|
|
320
|
+
y << (delta * ((m - 2) * delta - m + 4)) / 2
|
321
|
+
end
|
322
|
+
end
|
323
|
+
end
|
324
|
+
|
325
|
+
def FigurateNumbers.generalized_centered_pol_numbers(m, left_index = 0)
|
326
|
+
Enumerator.new do |y|
|
327
|
+
((-1 * left_index)..Float::INFINITY).each do |delta|
|
328
|
+
y << (m * delta**2 - m * delta + 2) / 2
|
329
|
+
end
|
330
|
+
end
|
331
|
+
end
|
332
|
+
|
333
|
+
def FigurateNumbers.generalized_pronic_numbers(left_index = 0)
|
334
|
+
Enumerator.new do |y|
|
335
|
+
((-1 * left_index.abs)..Float::INFINITY).each do |delta|
|
336
|
+
y << delta * (delta + 1)
|
337
|
+
end
|
338
|
+
end
|
339
|
+
end
|
340
|
+
|
341
|
+
|
77
342
|
def FigurateNumbers.r_pyramidal_numbers(r = 3)
|
78
343
|
Enumerator.new do |y|
|
79
344
|
(1..Float::INFINITY).each do |delta|
|
@@ -242,6 +507,30 @@ module FigurateNumbers
|
|
242
507
|
end
|
243
508
|
end
|
244
509
|
|
510
|
+
def FigurateNumbers.centered_truncated_tetrahedron_numbers
|
511
|
+
Enumerator.new do |y|
|
512
|
+
(1..Float::INFINITY).each do |delta|
|
513
|
+
y << (2 * delta - 1) * (7 * delta**2 - 7 * delta + 3) / 3
|
514
|
+
end
|
515
|
+
end
|
516
|
+
end
|
517
|
+
|
518
|
+
def FigurateNumbers.centered_truncated_cube_numbers
|
519
|
+
Enumerator.new do |y|
|
520
|
+
(1..Float::INFINITY).each do |delta|
|
521
|
+
y << (2 * delta - 1) * (23 * delta**2 - 23 * delta + 3) / 3
|
522
|
+
end
|
523
|
+
end
|
524
|
+
end
|
525
|
+
|
526
|
+
def FigurateNumbers.centered_truncated_octahedron_numbers
|
527
|
+
Enumerator.new do |y|
|
528
|
+
(1..Float::INFINITY).each do |delta|
|
529
|
+
y << (2 * delta - 1) * (5 * delta**2 - 5 * delta + 1)
|
530
|
+
end
|
531
|
+
end
|
532
|
+
end
|
533
|
+
|
245
534
|
def FigurateNumbers.centered_mgonal_pyramid_numbers(m)
|
246
535
|
Enumerator.new do |y|
|
247
536
|
(1..Float::INFINITY).each do |delta|
|
@@ -250,6 +539,30 @@ module FigurateNumbers
|
|
250
539
|
end
|
251
540
|
end
|
252
541
|
|
542
|
+
def FigurateNumbers.centered_triangular_pyramidal_numbers
|
543
|
+
Enumerator.new do |y|
|
544
|
+
(1..Float::INFINITY).each do |delta|
|
545
|
+
y << delta * (delta**2 + 1) / 2
|
546
|
+
end
|
547
|
+
end
|
548
|
+
end
|
549
|
+
|
550
|
+
def FigurateNumbers.centered_square_pyramidal_numbers
|
551
|
+
Enumerator.new do |y|
|
552
|
+
(1..Float::INFINITY).each do |delta|
|
553
|
+
y << (2 * delta**3 + delta) / 3
|
554
|
+
end
|
555
|
+
end
|
556
|
+
end
|
557
|
+
|
558
|
+
def FigurateNumbers.centered_pentagonal_pyramidal_numbers
|
559
|
+
Enumerator.new do |y|
|
560
|
+
(1..Float::INFINITY).each do |delta|
|
561
|
+
y << (5 * delta**3 + delta) / 6
|
562
|
+
end
|
563
|
+
end
|
564
|
+
end
|
565
|
+
|
253
566
|
def FigurateNumbers.centered_mgonal_pyramidal_numbers(m)
|
254
567
|
Enumerator.new do |y|
|
255
568
|
(1..Float::INFINITY).each do |delta|
|
@@ -261,7 +574,15 @@ module FigurateNumbers
|
|
261
574
|
def FigurateNumbers.hexagonal_prism_numbers
|
262
575
|
Enumerator.new do |y|
|
263
576
|
(1..Float::INFINITY).each do |delta|
|
264
|
-
y <<
|
577
|
+
y << delta * ( 3 * delta**2 - 3 * delta + 1)
|
578
|
+
end
|
579
|
+
end
|
580
|
+
end
|
581
|
+
|
582
|
+
def FigurateNumbers.mgonal_prism_numbers(m)
|
583
|
+
Enumerator.new do |y|
|
584
|
+
(1..Float::INFINITY).each do |delta|
|
585
|
+
y << delta * (m * delta**2 - m * delta + 2) / 2
|
265
586
|
end
|
266
587
|
end
|
267
588
|
end
|
@@ -274,6 +595,22 @@ module FigurateNumbers
|
|
274
595
|
end
|
275
596
|
end
|
276
597
|
|
598
|
+
def FigurateNumbers.generalized_cubic_numbers(left_index = 0)
|
599
|
+
Enumerator.new do |y|
|
600
|
+
((-1 * left_index.abs)..Float::INFINITY).each do |delta|
|
601
|
+
y << delta**3
|
602
|
+
end
|
603
|
+
end
|
604
|
+
end
|
605
|
+
|
606
|
+
def FigurateNumbers.generalized_octahedral_numbers(left_index = 0)
|
607
|
+
Enumerator.new do |y|
|
608
|
+
((-1 * left_index.abs)..Float::INFINITY).each do |delta|
|
609
|
+
y << (2 * delta**2 + 1) * delta / 3
|
610
|
+
end
|
611
|
+
end
|
612
|
+
end
|
613
|
+
|
277
614
|
def FigurateNumbers.generalized_icosahedral_numbers(left_index = 0)
|
278
615
|
Enumerator.new do |y|
|
279
616
|
((-1 * left_index.abs)..Float::INFINITY).each do |delta|
|
@@ -290,6 +627,54 @@ module FigurateNumbers
|
|
290
627
|
end
|
291
628
|
end
|
292
629
|
|
630
|
+
def FigurateNumbers.generalized_centered_cube_numbers(left_index = 0)
|
631
|
+
Enumerator.new do |y|
|
632
|
+
((-1 * left_index.abs)..Float::INFINITY).each do |delta|
|
633
|
+
y << (2 * delta - 1) * (delta**2 - delta + 1)
|
634
|
+
end
|
635
|
+
end
|
636
|
+
end
|
637
|
+
|
638
|
+
def FigurateNumbers.generalized_centered_tetrahedron_numbers(left_index = 0)
|
639
|
+
Enumerator.new do |y|
|
640
|
+
((-1 * left_index.abs)..Float::INFINITY).each do |delta|
|
641
|
+
y << (2 * delta - 1) * (delta**2 - delta + 3) / 3
|
642
|
+
end
|
643
|
+
end
|
644
|
+
end
|
645
|
+
|
646
|
+
def FigurateNumbers.generalized_centered_tetrahedron_numbers(left_index = 0)
|
647
|
+
Enumerator.new do |y|
|
648
|
+
((-1 * left_index.abs)..Float::INFINITY).each do |delta|
|
649
|
+
y << (2 * delta - 1) * (delta**2 - delta + 3) / 3
|
650
|
+
end
|
651
|
+
end
|
652
|
+
end
|
653
|
+
|
654
|
+
def FigurateNumbers.generalized_centered_square_pyramid_numbers(left_index = 0)
|
655
|
+
Enumerator.new do |y|
|
656
|
+
((-1 * left_index.abs)..Float::INFINITY).each do |delta|
|
657
|
+
y << ((2 * delta - 1) * (delta**2 - delta + 2)) / 2
|
658
|
+
end
|
659
|
+
end
|
660
|
+
end
|
661
|
+
|
662
|
+
def FigurateNumbers.generalized_rhombic_dodecahedral_numbers(left_index = 0)
|
663
|
+
Enumerator.new do |y|
|
664
|
+
((-1 * left_index.abs)..Float::INFINITY).each do |delta|
|
665
|
+
y << delta**4 - (delta - 1)**4
|
666
|
+
end
|
667
|
+
end
|
668
|
+
end
|
669
|
+
|
670
|
+
def FigurateNumbers.generalized_centered_mgonal_pyramidal_numbers(m, left_index = 0)
|
671
|
+
Enumerator.new do |y|
|
672
|
+
((-1 * left_index.abs)..Float::INFINITY).each do |delta|
|
673
|
+
y << (m * delta**3 + delta * (6 - m)) / 6
|
674
|
+
end
|
675
|
+
end
|
676
|
+
end
|
677
|
+
|
293
678
|
def FigurateNumbers.generalized_hexagonal_prism_numbers(left_index = 0)
|
294
679
|
Enumerator.new do |y|
|
295
680
|
((-1 * left_index.abs)..Float::INFINITY).each do |delta|
|
@@ -321,7 +706,23 @@ module FigurateNumbers
|
|
321
706
|
end
|
322
707
|
end
|
323
708
|
|
709
|
+
def FigurateNumbers.rising_factorial(n, k)
|
710
|
+
t = 1
|
711
|
+
(n..(n + k - 1)).each do |i|
|
712
|
+
t *= i
|
713
|
+
end
|
714
|
+
t
|
715
|
+
end
|
716
|
+
|
324
717
|
def FigurateNumbers.k_dimensional_hypertetrahedron_numbers(k)
|
718
|
+
Enumerator.new do |y|
|
719
|
+
(1..Float::INFINITY).each do |delta|
|
720
|
+
y << rising_factorial(delta, k) / factorial_iter(k)
|
721
|
+
end
|
722
|
+
end
|
723
|
+
end
|
724
|
+
|
725
|
+
def FigurateNumbers.binomial_coefficient_k_dimensional_hypertetrahedron_numbers(k)
|
325
726
|
Enumerator.new do |y|
|
326
727
|
(1..Float::INFINITY).each do |delta|
|
327
728
|
y << binomial_coefficient(delta + (k - 1), k)
|
@@ -377,7 +778,43 @@ module FigurateNumbers
|
|
377
778
|
end
|
378
779
|
end
|
379
780
|
|
380
|
-
def FigurateNumbers.
|
781
|
+
def FigurateNumbers.four_dimensional_hyperoctahedron_numbers
|
782
|
+
Enumerator.new do |y|
|
783
|
+
(1..Float::INFINITY).each do |delta|
|
784
|
+
y << delta**2 * (delta**2 + 2) / 3
|
785
|
+
end
|
786
|
+
end
|
787
|
+
end
|
788
|
+
|
789
|
+
def FigurateNumbers.five_dimensional_hyperoctahedron_numbers
|
790
|
+
Enumerator.new do |y|
|
791
|
+
(1..Float::INFINITY).each do |delta|
|
792
|
+
y << delta * (2 * delta**4 + 10 * delta**2 + 3) / 15
|
793
|
+
end
|
794
|
+
end
|
795
|
+
end
|
796
|
+
|
797
|
+
def FigurateNumbers.six_dimensional_hyperoctahedron_numbers
|
798
|
+
Enumerator.new do |y|
|
799
|
+
(1..Float::INFINITY).each do |delta|
|
800
|
+
y << delta**2 * (2 * delta**4 + 20 * delta**2 + 23) / 45
|
801
|
+
end
|
802
|
+
end
|
803
|
+
end
|
804
|
+
|
805
|
+
def FigurateNumbers.k_dimensional_hyperoctahedron_numbers(k)
|
806
|
+
Enumerator.new do |y|
|
807
|
+
(1..Float::INFINITY).each do |delta|
|
808
|
+
a = 0
|
809
|
+
(0..(k - 1)).each do |i|
|
810
|
+
a += binomial_coefficient(k - 1, i) * (rising_factorial(delta - i, k) / factorial_iter(k))
|
811
|
+
end
|
812
|
+
y << a
|
813
|
+
end
|
814
|
+
end
|
815
|
+
end
|
816
|
+
|
817
|
+
def FigurateNumbers.four_dimensional_mgonal_pyramidal_numbers(m)
|
381
818
|
Enumerator.new do |y|
|
382
819
|
(1..Float::INFINITY).each do |delta|
|
383
820
|
y << (delta * (delta + 1) * (delta + 2) * ((m - 2) * delta - m + 6)) / 24
|
@@ -385,7 +822,7 @@ module FigurateNumbers
|
|
385
822
|
end
|
386
823
|
end
|
387
824
|
|
388
|
-
def FigurateNumbers.
|
825
|
+
def FigurateNumbers.five_dimensional_mgonal_pyramidal_numbers(m)
|
389
826
|
Enumerator.new do |y|
|
390
827
|
(1..Float::INFINITY).each do |delta|
|
391
828
|
y << (delta * (delta + 1) * (delta + 2) * (delta + 3) * ((m - 2) * delta - m + 7)) / 120
|
@@ -393,7 +830,7 @@ module FigurateNumbers
|
|
393
830
|
end
|
394
831
|
end
|
395
832
|
|
396
|
-
def FigurateNumbers.
|
833
|
+
def FigurateNumbers.six_dimensional_mgonal_pyramidal_numbers(m)
|
397
834
|
Enumerator.new do |y|
|
398
835
|
(1..Float::INFINITY).each do |delta|
|
399
836
|
y << (delta * (delta + 1) * (delta + 2) * (delta + 3) * (delta + 4) * ((m - 2) * delta - m + 8)) / 720
|
@@ -416,7 +853,7 @@ module FigurateNumbers
|
|
416
853
|
private_class_method :pseudo_rising_factorial
|
417
854
|
private_class_method :pseudo_pochhammer_function
|
418
855
|
|
419
|
-
def FigurateNumbers.
|
856
|
+
def FigurateNumbers.k_dimensional_mgonal_pyramidal_numbers(k, m)
|
420
857
|
Enumerator.new do |y|
|
421
858
|
(1..Float::INFINITY).each do |n|
|
422
859
|
y << (pseudo_pochhammer_function(n, k) * ((m - 2) * n - m + k + 2)) /
|
@@ -425,6 +862,16 @@ module FigurateNumbers
|
|
425
862
|
end
|
426
863
|
end
|
427
864
|
|
865
|
+
def FigurateNumbers.centered_biquadratic_numbers
|
866
|
+
Enumerator.new do |y|
|
867
|
+
a = 0
|
868
|
+
(1..Float::INFINITY).each do |delta|
|
869
|
+
a += delta**4 - (delta - 2)**4
|
870
|
+
y << a + 1
|
871
|
+
end
|
872
|
+
end
|
873
|
+
end
|
874
|
+
|
428
875
|
def FigurateNumbers.k_dimensional_centered_hypercube_numbers(k)
|
429
876
|
Enumerator.new do |y|
|
430
877
|
(1..Float::INFINITY).each do |delta|
|
@@ -433,6 +880,22 @@ module FigurateNumbers
|
|
433
880
|
end
|
434
881
|
end
|
435
882
|
|
883
|
+
def FigurateNumbers.five_dimensional_centered_hypercube_numbers
|
884
|
+
Enumerator.new do |y|
|
885
|
+
(1..Float::INFINITY).each do |delta|
|
886
|
+
y << delta**5 + (delta - 1)**5
|
887
|
+
end
|
888
|
+
end
|
889
|
+
end
|
890
|
+
|
891
|
+
def FigurateNumbers.six_dimensional_centered_hypercube_numbers
|
892
|
+
Enumerator.new do |y|
|
893
|
+
(1..Float::INFINITY).each do |delta|
|
894
|
+
y << delta**6 + (delta - 1)**6
|
895
|
+
end
|
896
|
+
end
|
897
|
+
end
|
898
|
+
|
436
899
|
def FigurateNumbers.centered_polytope_numbers
|
437
900
|
Enumerator.new do |y|
|
438
901
|
(1..Float::INFINITY).each do |delta|
|
@@ -481,8 +944,8 @@ module FigurateNumbers
|
|
481
944
|
|
482
945
|
def FigurateNumbers.nexus_numbers(k)
|
483
946
|
Enumerator.new do |y|
|
484
|
-
(0..Float::INFINITY).each do |
|
485
|
-
y << (
|
947
|
+
(0..Float::INFINITY).each do |delta|
|
948
|
+
y << (delta + 1)**(k + 1) - delta**(k + 1)
|
486
949
|
end
|
487
950
|
end
|
488
951
|
end
|
@@ -509,4 +972,49 @@ module FigurateNumbers
|
|
509
972
|
end
|
510
973
|
end
|
511
974
|
end
|
975
|
+
|
976
|
+
def FigurateNumbers.generalized_pentatope_numbers(left_index = 0)
|
977
|
+
Enumerator.new do |y|
|
978
|
+
((-1 * left_index.abs)..Float::INFINITY).each do |delta|
|
979
|
+
y << delta * (delta + 1) * (delta + 2) * (delta + 3) / 24
|
980
|
+
end
|
981
|
+
end
|
982
|
+
end
|
983
|
+
|
984
|
+
def FigurateNumbers.generalized_k_dimensional_hypertetrahedron_numbers(k, left_index = 0)
|
985
|
+
Enumerator.new do |y|
|
986
|
+
((-1 * left_index.abs)..Float::INFINITY).each do |delta|
|
987
|
+
y << rising_factorial(delta, k) / factorial_iter(k)
|
988
|
+
end
|
989
|
+
end
|
990
|
+
end
|
991
|
+
|
992
|
+
def FigurateNumbers.generalized_k_dimensional_hypercube_numbers(k = 5, left_index = 0)
|
993
|
+
Enumerator.new do |y|
|
994
|
+
((-1 * left_index.abs)..Float::INFINITY).each do |delta|
|
995
|
+
y << delta**k
|
996
|
+
end
|
997
|
+
end
|
998
|
+
end
|
999
|
+
|
1000
|
+
def FigurateNumbers.generalized_k_dimensional_hyperoctahedron_numbers(k = 5, left_index = 0)
|
1001
|
+
Enumerator.new do |y|
|
1002
|
+
((-1 * left_index.abs)..Float::INFINITY).each do |delta|
|
1003
|
+
a = 0
|
1004
|
+
(0..(k - 1)).each do |i|
|
1005
|
+
a += binomial_coefficient(k - 1, i) * (rising_factorial(delta - i, k) / factorial_iter(k))
|
1006
|
+
end
|
1007
|
+
y << a
|
1008
|
+
end
|
1009
|
+
end
|
1010
|
+
end
|
1011
|
+
|
1012
|
+
def FigurateNumbers.generalized_nexus_numbers(k, left_index = 0)
|
1013
|
+
Enumerator.new do |y|
|
1014
|
+
((-1 * left_index.abs)..Float::INFINITY).each do |delta|
|
1015
|
+
y << (delta + 1)**(k + 1) - delta**(k + 1)
|
1016
|
+
end
|
1017
|
+
end
|
1018
|
+
end
|
1019
|
+
|
512
1020
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: figurate_numbers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.7
|
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-06-
|
11
|
+
date: 2024-06-17 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Generates infinite sequences of plane, space, and multidimensional figurate
|
14
14
|
numbers based on the book ‘Figurate Numbers’ (2012) by Elena Deza and Michel Deza.
|