OFFSET
1,2
COMMENTS
In a regular triangular grid, begin with a single central triangle. Wrap strips (polyiamonds) of incrementally more triangles (strip of 2, then 3, etc.) tightly around the center such that they are connected at their start and end to the previous and subsequent strips. If a strip's endpoint completes a convex aggregate of triangles with all of those before it (i.e., the boundary of the construction is its own convex hull), the number of triangles in the construction is a term of this sequence.
LINKS
Brandan Williams, Pelliamonds
Index entries for linear recurrences with constant coefficients, signature (0,0,0,0,195,0,0,0,0,-195,0,0,0,0,1).
FORMULA
a(n) = 195*(a(n-5) - a(n-10)) + a(n-15). - Brandan Williams, May 27 2026
EXAMPLE
The first term is trivial, as it represents a single triangle. So a(1) = 1.
Adding a strip of two triangles forms half of a regular hexagon (a trapezoid containing three regular triangles) which is convex, with 3 total triangles included. a(2) = 3.
Adding a strip of three triangles completes the regular hexagon, which is convex. a(3) = 6.
Adding a strip of four triangles effectively attaches a chevron shaped polyiamond to the regular hexagon, which retains convexity. a(4) = 10.
Adding a strip of five triangles effectively forms the first concave shape in this construction, as it exceeds the next smallest concave boundary (13) by two triangles and falls short of the next largest concave boundary (16) by one triangle.
The next concave polyiamond construction does not occur until the strip of length 11 is added. a(5) = 66.
PROG
(R)
# This generates and displays the first 20 examples
generate_triangular_number <- function(n){
return((n^2+n)/2)
}
generate_maximalpolyiamond_number <- function(n){
return(round((n+2)^2/6) - as.numeric(((n+2) %% 6) != 0))
}
tri_i <- 1
poly_i <- 1
n_matches <- 0
while(n_matches < 20){
if(generate_triangular_number(tri_i) == generate_maximalpolyiamond_number (poly_i)){
n_matches <- n_matches + 1
print(c(n_matches, tri_i, poly_i, generate_triangular_number(tri_i)))
tri_i <- tri_i + 1
poly_i <- poly_i + 1
} else{
if(generate_triangular_number(tri_i) > generate_maximalpolyiamond_number (poly_i)){
poly_i <- poly_i + 1
} else{
tri_i <- tri_i + 1
}
}
}
(PARI) select(x->ispolygonal(x, 3), Vec(x^3*(x^2-x-1)*(x^2+1)/((x-1)^3*(x+1)*(x^2+x+1)) + O(x^10^8))) \\ Michel Marcus, May 16 2026
CROSSREFS
KEYWORD
nonn,easy
AUTHOR
Brandan Williams, May 14 2026
EXTENSIONS
More terms from Michel Marcus, May 16 2026
STATUS
approved