%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