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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/figurate_numbers.rb +518 -10
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 19db1b52d28df3c4a9f82cc1fa9929e065ae0abb1beea138e79581d1a4516683
4
- data.tar.gz: dc7438504a2684f690479da93018a2e8b8a4676275c750cfb975a62d56258840
3
+ metadata.gz: 9b0f3e60892d81b990ede97fcc7798789140ceb234b2151ebe6727f95ae257f8
4
+ data.tar.gz: d4ec6a7f04c47c0d66fe4f6e78037beac4a03e5357abc9a9ad57558fe220136d
5
5
  SHA512:
6
- metadata.gz: d1eea8a896fb2f3984d3d01781ab19abe0c0bffed789df46fce901c923b28938d2d31c6b286c529b29888c780271e14f6aaaff9c4a31c1d5c163160afe87c41c
7
- data.tar.gz: 18c5954418a3ed29290976d5fb45d0bcb641a9de7a5ce6bdab4ec24993a88a88e9186d0586183b320348fcddb7b0f00c93fc5bf5460966a50670dd8422510507
6
+ metadata.gz: ee9da5e161c7d528076750c33dcd218c1ee89619219ac67a2dec5e1e9ea839e48908a454ca4b7606b076359220921711dfd3cb2d2073716439adc9d6f3890185
7
+ data.tar.gz: de9ab8b893842cbf8286eaf3326b0e69a8ff2ab512f12fb7e0647b66d981deda835a7bc55086dd3473fe6b450f93a2afbcbf94196d32ee85df1aa4c417d5c5b9
@@ -10,10 +10,218 @@ module FigurateNumbers
10
10
  end
11
11
  end
12
12
 
13
- def FigurateNumbers.centered_pol_numbers(k)
13
+ def FigurateNumbers.triangular_numbers
14
14
  Enumerator.new do |y|
15
15
  (1..Float::INFINITY).each do |delta|
16
- y << (k * delta**2 - k * delta + 2) / 2
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.truncated_center_pol_numbers(k)
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 << delta * ( 3 * delta**2 - 3 * delta + 1)
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.four_dimensional_pyramidal_numbers(m)
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.five_dimensional_pyramidal_numbers(m)
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.six_dimensional_pyramidal_numbers(m)
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.k_dimensional_pyramidal_numbers(k, m)
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 |n|
485
- y << (n + 1)**(k + 1) - (n**(k + 1))
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.6
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-15 00:00:00.000000000 Z
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.