Soruyu elle çözdükten sonra birde kodu yazayım istedim hoşuma gitti birde sizden farklı yollar görmek istedim ne kadar farklı çözüm o kadar iyi
1 Beğeni
import functools
import itertools
tmul = lambda x, y: (x[0] * y[0], x[1] * y[1])
tadd = lambda x, y: (x[0] + y[0], x[1] + y[1])
moves = [
tmul(movelen, movesign)
for movelen in [(1, 2), (2, 1)]
for movesign in [(-1, -1), (-1, +1), (+1, -1), (+1, +1)]
]
n_moves = lambda n: set(map(lambda ms: functools.reduce(tadd, ms, (0, 0)), itertools.product(moves, repeat=n)))
print(len(n_moves(2))) # 33
Edit: recursive istiyorsak:
n_moves = lambda n: set([(0, 0)]) if n == 0 else set([tadd(move, base) for move in moves for base in n_moves(n - 1)])
OEIS: https://oeis.org/A118312
3 Beğeni
Verdiğiniz kaynak güzelmiş teşekkürler.Birde benim çözümümü paylaşayım
from itertools import product
atların_tekrarlı_konumları=[]
at=[9,9]
liste=[[1,2],[1,-2],[2,1],[2,-1],[-1,2],[-1,-2],[-2,1],[-2,-1]]
for i in product(liste,repeat=4):
at=[9,9]
for j in i :
at[0]=at[0]+j[0]
at[1]=at[1]+j[1]
atların_tekrarlı_konumları.append(at)
atların_konumları=[]
for i in atların_tekrarlı_konumları:
if i not in atların_konumları:
atların_konumları.append(i)
print(len(atların_konumları))