Alexander Kuleshov has authored 2 sequences.
A367558
Number of knight paths from opposite corners of an n X n matrix, using only turns that lower Manhattan distance.
Original entry on oeis.org
0, 1, 0, 0, 2, 4, 14, 56, 244, 1140, 5482, 26886, 134528, 681944, 3493524, 18057208, 94018056, 492534414, 2593760854, 13720433802, 72859816050, 388218182456, 2074683905712, 11116464683746, 59702675780296, 321311045089704, 1732487750419756, 9357244742176372, 50616284630194342, 274180772642526672, 1487084387418749912
Offset: 0
For n=4 there are 2 paths from (0,0) to (3,3):
{(1,2), (3,3)}, {(2,1), (3,3)}.
For n=5 there are 4 paths from (0,0) to (4,4):
{(1,2),(0,4),(2,3),(4,4)}, {(1,2),(3,1),(2,3),(4,4)},
{(2,1),(4,0),(3,2),(4,4)}, {(2,1),(1,3),(3,2),(4,4)}.
-
F[a_, b_, n_] := F[a, b, n] = If[a == 0 && b == 0, 1, If[a < 0 || b < 0 || a > n || b > n, 0, F[a - 1, b - 2, n] + F[a - 2, b - 1, n] + F[a + 1, b - 2, n] + F[a - 2, b + 1, n]]]; Join[{0}, Table[F[n, n, n], {n, 0, 20}]] (* Vaclav Kotesovec, Nov 28 2023 *)
-
cache = {}
def F(a,b,n):
if (a,b,n) in cache: return cache[(a,b,n)]
if a==0 and b==0: return 1
if a > n or b > n: return 0
if a < 0 or b < 0: return 0
cache[(a,b,n)] = F(a-1,b-2,n) + F(a-2,b-1,n) + F(a+1,b-2,n) + F(a-2,b+1,n)
return cache[(a,b,n)]
for i in range (30):
print(F(i,i,i), end=', ')
A359032
a(n) is the number of ways to place non-attacking queens on an n X n board with no queens above the main diagonal.
Original entry on oeis.org
1, 2, 4, 9, 23, 66, 204, 669, 2305, 8348, 31542, 124021, 507937, 2154494, 9455972, 42847307, 200258387, 962904904, 4759773172, 24142168317, 125575232141, 668689805690, 3643481771390, 20286338601133
Offset: 0
a(0) = 1, since there is only the empty board.
a(1) = 2, since there are 2 configurations:
+---+ +---+
| Q | | . |
+---+ +---+
a(2) = 4
+-----+ +-----+ +-----+ +-----+
| . # | | Q # | | . # | | . # |
| . . | | . . | | Q . | | . Q |
+-----+ +-----+ +-----+ +-----+
a(3) = 9
+-------+
| . # # |
| . . # |
| . . . |
+-------+
+-------+ +-------+
| Q # # | | . # # |
| . . # | | Q . # |
| . . . | | . . . |
+-------+ +-------+
+-------+ +-------+
| . # # | | . # # |
| . . # | | . Q # |
| Q . . | | . . . |
+-------+ +-------+
+-------+ +-------+
| . # # | | . # # |
| . . # | | . . # |
| . Q . | | . . Q |
+-------+ +-------+
+-------+ +-------+
| Q # # | | . # # |
| . . # | | Q . # |
| . Q . | | . . Q |
+-------+ +-------+
-
bitToIndex = {}
indexToBit = {}
def addToBoard(board, bit, n):
(i, j) = bitToIndex[bit]
for k in range(n - j):
board |= indexToBit[(k, j)]
for k in range(n - i):
board |= indexToBit[(i, k)]
for k in range(-min(i, j), (n - abs(i - j) + 1) // 2 - min(i, j)):
board |= indexToBit[(i + k, j + k)]
for k in range(i + j + 1):
board |= indexToBit[(k, i + j - k)]
return board
def r(start, board, n):
result = 1
for i in range(start, n * (n + 1) // 2):
bit = 1 << i
if board & bit == 0:
newBoard = addToBoard(board, bit, n)
result += r(i + 1, newBoard, n)
return result
# Number of peaceful queens boards in a triangular square grid with size n
def a(n):
bit = 1
for j in range(n):
for k in range(n - j):
bitToIndex[bit] = (j, k)
indexToBit[(j, k)] = bit
bit *= 2
return r(0, 0, n)
for n in range(21):
print(a(n))
Comments