In one case, this is still trivial. If we're on a hex ending in a 0 the same-level hex in direction d has an address just replacing the 0 with d. For example: the hex in direction 2 from [3, 5, 0] is [3, 5, 2].