A342948 Squares visited by either knight when a white knight and a black knight are moving on a diagonally numbered board, always to the lowest available unvisited square; white moves first.
1, 8, 9, 6, 4, 2, 3, 12, 13, 16, 7, 24, 5, 19, 10, 15, 26, 34, 18, 14, 11, 21, 30, 43, 37, 20, 48, 25, 22, 17, 31, 39, 38, 29, 46, 23, 58, 32, 49, 42, 41, 35, 52, 45, 27, 53, 33, 28, 40, 54, 51, 63, 60, 73, 70, 84, 57, 50, 67, 59, 81, 47, 93, 56, 106, 69, 123
Offset: 1
Programs
-
Python
KM=[(2, 1), (1, 2), (-1, 2), (-2, 1), (-2, -1), (-1, -2), (1, -2), (2, -1)] def idx(loc): i, j = loc; return (i+j-1)*(i+j-2)//2 + j def next_move(loc, visited): i, j = loc; moves = [(i+io, j+jo) for io, jo in KM if i+io>0 and j+jo>0] available = [m for m in moves if m not in visited] return min(available, default=None, key=lambda x: idx(x)) def aseq(): loc, s, turn, alst = [(1, 1), (1, 1)], {(1, 1)}, 0, [1] m = next_move(loc[turn], s) while m != None: loc[turn], s, turn, alst = m, s|{m}, 1 - turn, alst + [idx(m)] m = next_move(loc[turn], s) return alst A342948_lst = aseq() # Michael S. Branicky, Mar 30 2021
Comments