login
Number of vertices in successive convex layers of the positive octant of the three-dimensional integer grid.
2

%I #28 Jan 17 2026 18:04:39

%S 1,3,3,6,9,10,6,12,15,18,18,15,19,21,27,30,24,24,21,33,33,48,46,36,42,

%T 36,33,51,48,57,60,63,69,67,66,51,69,57,72,78,63,93,84,93,82,90,69,78,

%U 93,87,108,90,141,117,126,117,118,114,123,90,105,123,102,147,135

%N Number of vertices in successive convex layers of the positive octant of the three-dimensional integer grid.

%H Andrei Zabolotskii, <a href="/A392196/b392196.txt">Table of n, a(n) for n = 1..250</a>

%e n | a(n) | Points in the positive octant

%e --------------------------------------------------------------------------------

%e 1 | 1 | (0, 0, 0)

%e 2 | 3 | (0, 0, 1), (0, 1, 0), (1, 0, 0)

%e 3 | 3 | (0, 0, 2), (0, 2, 0), (2, 0, 0)

%e 4 | 6 | (0, 1, 1), (1, 0, 1), (1, 1, 0), (0, 0, 3), (0, 3, 0), (3, 0, 0)

%e 5 | 9 | (0, 1, 2), (0, 2, 1), (1, 0, 2), (1, 2, 0), (2, 0, 1), (2, 1, 0), ...

%e 6 | 10 | (1, 1, 1), (0, 1, 3), (0, 3, 1), (1, 0, 3), (1, 3, 0), (3, 0, 1), ...

%e 7 | 6 | (0, 2, 2), (2, 0, 2), (2, 2, 0), (0, 0, 6), (0, 6, 0), (6, 0, 0)

%e 8 | 12 | (1, 1, 2), (1, 2, 1), (2, 1, 1), (0, 1, 4), (0, 4, 1), (1, 0, 4), ...

%e 9 | 15 | (0, 2, 3), (0, 3, 2), (2, 0, 3), (2, 3, 0), (3, 0, 2), (3, 2, 0), ...

%e 10 | 18 | (1, 1, 3), (1, 3, 1), (3, 1, 1), (0, 2, 4), (0, 4, 2), (2, 0, 4), ...

%o (Python)

%o import numpy as np

%o from scipy.spatial import ConvexHull

%o def T(L, n):

%o points = np.argwhere(np.ones((L, L, L)))

%o v_idx = []

%o for i in range(n):

%o if len(points) == 0:

%o return 0

%o hull = ConvexHull(points)

%o v_idx = hull.vertices

%o if i < n - 1:

%o points = np.delete(points, v_idx, axis=0)

%o return len(v_idx)

%o def a(n):

%o return T(2*n + 2, n)//8 # _Chittaranjan Pardeshi_, Jan 03 2026

%o (SageMath)

%o def seq():

%o z = []

%o for i in (1..):

%o for row in z: row.append(0)

%o z.append([0] * i)

%o corners = [(0, 0, 2*i), (0, 2*i, 0), (2*i, 0, 0)]

%o hull = Polyhedron(vertices = [(x, y, z[x][y]) for x in (0..i-1) for y in (0..i-1)] + corners)

%o layer = [v for v in hull.vertices() if tuple(v) not in corners]

%o yield len(layer)

%o for x, y, _ in layer: z[x][y] += 1

%o from itertools import islice

%o print(list(islice(seq(), 20))) # _Andrei Zabolotskii_, Jan 15 2026

%Y Cf. A292276, A293596.

%K nonn

%O 1,2

%A _Chittaranjan Pardeshi_, Jan 03 2026

%E Terms a(51) and beyond from _Andrei Zabolotskii_, Jan 15 2026