figurate_numbers
is a Ruby module that implements 151 infinite number sequences
based on the formulas from the wonderful book
Figurate Numbers (2012) by Elena Deza and Michel Deza.
This implementation uses the Enumerator class to deal with INFINITE SEQUENCES.
Following the order of the book, the methods are divided into 3 types according to the spatial dimension (see complete list below):
- Plane figurate numbers implemented =
74
- Space figurate numbers implemented =
42
- Multidimensional figurate numbers implemented =
29
Additionally we have the sequences mentioned in chapter 6:
- Zoo of figurate-related numbers implemented =
6
- TOTAL =
151
infinite sequences of figurate numbers implemented
gem install figurate_numbers
If the sequence is defined with lazy
, to make the numbers explicit we must include the converter method to_a
at the end.
require 'figurate_numbers'
## Using take(integer)
FigurateNumbers.pronic_numbers.take(10).to_a
## Storing and iterating
f = FigurateNumbers.centered_octagonal_pyramid_numbers
f.next
f.next
f.next
- Locate or download the file in the path
lib/figurate_numbers.rb
- Drag the file to a buffer in Sonic Pi (this generates the
<PATH>
)
run_file "<PATH>"
pol_num = FigurateNumbers.polygonal_numbers(8)
80.times do
play pol_num.next % 12 * 7 # Some mathematical function or transformation
sleep 0.25
end
polygonal_numbers(m)
triangular_numbers
square_numbers
pentagonal_numbers
hexagonal_numbers
heptagonal_numbers
octagonal_numbers
nonagonal_numbers
decagonal_numbers
hendecagonal_numbers
dodecagonal_numbers
tridecagonal_numbers
tetradecagonal_numbers
pentadecagonal_numbers
hexadecagonal_numbers
heptadecagonal_numbers
octadecagonal_numbers
nonadecagonal_numbers
icosagonal_numbers
icosihenagonal_numbers
icosidigonal_numbers
icositrigonal_numbers
icositetragonal_numbers
icosipentagonal_numbers
icosihexagonal_numbers
icosiheptagonal_numbers
icosioctagonal_numbers
icosinonagonal_numbers
triacontagonal_numbers
centered_triangular_numbers
centered_square_numbers
centered_pentagonal_numbers
centered_hexagonal_numbers
centered_heptagonal_numbers
centered_octagonal_numbers
centered_nonagonal_numbers
centered_decagonal_numbers
centered_hendecagonal_numbers
centered_dodecagonal_numbers = star numbers (equality only by quantity)
star_numbers
centered_tridecagonal_numbers
centered_tetradecagonal_numbers
centered_pentadecagonal_numbers
centered_hexadecagonal_numbers
centered_heptadecagonal_numbers
centered_octadecagonal_numbers
centered_nonadecagonal_numbers
centered_icosagonal_numbers
centered_icosihenagonal_numbers
centered_icosidigonal_numbers
centered_icositrigonal_numbers
centered_icositetragonal_numbers
centered_icosipentagonal_numbers
centered_icosihexagonal_numbers
centered_icosiheptagonal_numbers
centered_icosioctagonal_numbers
centered_icosinonagonal_numbers
centered_triacontagonal_numbers
centered_mgonal_numbers(m)
pronic_numbers
cross_numbers
aztec_diamond_numbers
polygram_numbers(m) = centered star polygonal numbers
centered_star_polygonal_numbers(m)
gnomic_numbers
truncated_triangular_numbers
truncated_square_numbers
truncated_pronic_numbers
truncated_center_pol_numbers(k)
truncated_centered_triangular_numbers
truncated_centered_square_numbers
truncated_centered_pentagonal_numbers
truncated_centered_hexagonal_numbers
generalized_mgonal_numbers(m, left_index = 0)
generalized_centered_pol_numbers(m, left_index = 0)
generalized_pronic_numbers(left_index = 0)
r_pyramidal_numbers(r)
cubic_numbers = hex pyramidal numbers (equality only by quantity)
tetrahedral_numbers
octahedral_numbers
dodecahedral_numbers
icosahedral_numbers
truncated_tetrahedral_numbers
truncated_cubic_numbers
truncated_octahedral_numbers
stella_octangula_numbers
centered_cube_numbers
rhombic_dodecahedral_numbers
hauy_rhombic_dodecahedral_numbers
centered_tetrahedral_numbers
centered_square_pyramid_numbers
centered_pentagonal_pyramid_numbers = centered octahedron numbers (equality only in quantity)
centered_hexagonal_pyramid_numbers
centered_heptagonal_pyramid_numbers
centered_octagonal_pyramid_numbers
centered_octahedron_numbers
centered_icosahedron_numbers = centered cuboctahedron numbers
centered_cuboctahedron_numbers
centered_dodecahedron_numbers
centered_truncated_tetrahedron_numbers
centered_truncated_cube_numbers
centered_truncated_octahedron_numbers
centered_mgonal_pyramid_numbers(m)
centered_triangular_pyramidal_numbers
centered_square_pyramidal_numbers
centered_pentagonal_pyramidal_numbers
centered_hexagonal_pyramidal_numbers = hex_pyramidal_numbers
hex_pyramidal_numbers
centered_mgonal_pyramidal_numbers(m)
hexagonal_prism_numbers
mgonal_prism_numbers(m)
generalized_mgonal_pyramidal_numbers(m, left_index = 0)
generalized_cubic_numbers(left_index = 0)
generalized_octahedral_numbers(left_index = 0)
generalized_icosahedral_numbers(left_index = 0)
generalized_dodecahedral_numbers(left_index = 0)
generalized_centered_cube_numbers(left_index = 0)
generalized_centered_tetrahedron_numbers(left_index = 0)
generalized_centered_square_pyramid_numbers(left_index = 0)
generalized_rhombic_dodecahedral_numbers(left_index = 0)
generalized_centered_mgonal_pyramidal_numbers(m, left_index = 0)
generalized_hexagonal_prism_numbers(left_index = 0)
pentatope_numbers = hypertetrahedral_number = triangulotriangular_number
hypertetrahedral_number
triangulotriangular_number
k_dimensional_hypertetrahedron_numbers(k) = k hypertetrahedron numbers = regular k-polytopic number = figurate number of order k = k-simplex numbers
k_hypertetrahedron_numbers(k)
regular_k_polytopic_numbers(k)
figurate_number_of_order_k(k)
five_dimensional_hypertetrahedron_numbers
six_dimensional_hypertetrahedron_numbers
biquadratic_numbers
k_dimensional_hypercube_numbers(k) = k-measure polytope numbers
five_dimensional_hypercube_numbers
six_dimensional_hypercube_numbers
hyperoctahedral_numbers = 4D hyperoctahedron numbers = hexadecachoron_numbers = four_cross_polytope_numbers = four_orthoplex_numbers
hexadecachoron_numbers
four_cross_polytope_numbers
four_orthoplex_numbers
hypericosahedral_numbers = tetraplex numbers = polytetrahedron numbers
tetraplex_numbers
polytetrahedron_numbers
hexacosichoron_numbers
hyperdodecahedral_numbers = hecatonicosachoron_numbers = dodecaplex numbers = polydodecahedron numbers
hecatonicosachoron_numbers
dodecaplex_numbers
polydodecahedron_numbers,
polyoctahedral_numbers = icositetrachoron numbers = octaplex numbers = hyperdiamond numbers
icositetrachoron_numbers
octaplex_numbers
hyperdiamond_numbers
four_dimensional_hyperoctahedron_numbers
five_dimensional_hyperoctahedron_numbers
six_dimensional_hyperoctahedron_numbers
seven_dimensional_hyperoctahedron_numbers
eight_dimensional_hyperoctahedron_numbers
nine_dimensional_hyperoctahedron_numbers
ten_dimensional_hyperoctahedron_numbers
k_dimensional_hyperoctahedron_numbers(k) = k-cross polytope numbers
k_cross_polytope_numbers(k)
four_dimensional_mgonal_pyramidal_numbers(m) = mgonal pyramidal number of the second order
mgonal_pyramidal_number_of_the_second_order(m)
four_dimensional_square_pyramidal_numbers
four_dimensional_pentagonal_pyramidal_numbers
four_dimensional_hexagonal_pyramidal_numbers
four_dimensional_heptagonal_pyramidal_numbers
four_dimensional_octagonal_pyramidal_numbers
four_dimensional_nonagonal_pyramidal_numbers
four_dimensional_decagonal_pyramidal_numbers
four_dimensional_hendecagonal_pyramidal_numbers
four_dimensional_dodecagonal_pyramidal_numbers
five_dimensional_mgonal_pyramidal_numbers(m)
six_dimensional_mgonal_pyramidal_numbers(m)
k_dimensional_mgonal_pyramidal_numbers(k, m) = mgonal pyramidal of the (k-2)-th order
mgonal_pyramidal_number_of_the_k_2_th_order(k, m)
centered_biquadratic_numbers
k_dimensional_centered_hypercube_numbers(k)
five_dimensional_centered_hypercube_numbers
six_dimensional_centered_hypercube_numbers
centered_polytope_numbers
k_dimensional_centered_hypertetrahedron_numbers(k)
five_dimensional_centered_hypertetrahedron_numbers(k)
six_dimensional_centered_hypertetrahedron_numbers(k)
centered_hyperotahedral_numbers = orthoplex numbers
orthoplex numbers
nexus_numbers(k)
k_dimensional_centered_hyperoctahedron_numbers(k)
five_dimensional_centered_hyperoctahedron_numbers(k)
six_dimensional_centered_hyperoctahedron_numbers(k)
generalized_pentatope_numbers(left_index = 0)
generalized_k_dimensional_hypertetrahedron_numbers(k = 5, left_index = 0)
generalized_k_dimensional_hypercube_numbers(k = 5, left_index = 0)
generalized_k_dimensional_hyperoctahedron_numbers(k = 5, left_index = 0) = even or odd dimension only changes sign
generalized_nexus_numbers(k, left_index = 0) = even or odd dimension only changes sign
cuban_numbers = cuban prime numbers
quartan_numbers = Needs to improve the algorithmic complexity for n > 70
pell_numbers
carmichael_numbers = Needs to improve the algorithmic complexity for n > 20
stern_prime_numbers(infty = false) = Quick calculations up to 8 terms.
apocalyptic_numbers
-
Chapter 1, formula in the table on page 6 says:
Name Formula Square 1/2 (n^2 - 0 * n)
It should be:
Name Formula Square 1/2 (2n^2 - 0 * n)
-
Chapter 1, formula in the table on page 51 says:
Name Formula Cent. icosihexagonal 1/3n^2 - 13 * n + 1
546, 728, 936, 1170
It should be:
Name Formula Cent. icosihexagonal 1/3n^2 - 13 * n + 1
547, 729, 937, 1171
-
Chapter 1, formula in the table on page 51 says:
Name Formula Cent. icosiheptagonal 972
It should be:
Name Formula Cent. icosiheptagonal 973
-
Chapter 1, formula in the table on page 51 says:
Name Formula Cent. icosioctagonal 84
It should be:
Name Formula Cent. icosioctagonal 85
-
Chapter 1, formula (truncated centered pentagonal numbers) of page 72 says:
TCSS_5(n) = (35n^2 - 55n) / 2 + 3
It should be:
TCSS_5(n) = (35n^2 - 55n) / 2 + 11
-
Chapter 2, page 140 says:
centered square pyramidal numbers are 1, 6, 19, 44, 85, 111, 146, 231, ...
This sequence must exclude the number 111:
centered square pyramidal numbers are 1, 6, 19, 44, 85,
111, 146, 231, ... -
Chapter 2, page 155 (generalized centered tetrahedron numbers) says:
S_3^3(n) = ((2n - 1)(n^2 + n + 3)) / 3
Formula must have a negative sign:
S_3^3(n) = ((2n - 1)(n^2 - n + 3)) / 3
-
Chapter 2, page 156 (generalized centered square pyramid numbers) says:
S_4^3(n) = ((2n - 1) * (n^2 - n + 2)^2) / 3
Formula must write:
S_4^3(n) = ((2n - 1) * (n^2 - n + 2)) / 2
-
Chapter 3, page 188 (hyperoctahedral numbers) says:
hexadecahoron numbers
It should read:
hexadecachoron numbers
-
Chapter 3, page 190 (hypericosahedral numbers) says:
hexacisihoron numbers
It should read:
hexacosichoron numbers