Bu, tüm yönleri diziler olarak kodlamak için bir tekniktir - her çift di[i],dj[i]farklı bir yöndür.
X, y konumunda bir parçamız olduğunu hayal edersek ve onu yakın bir konuma taşımak için x ve y değerini eklemek istersek, 1,0 doğu, -1,0 batı, 0,1 güney, 0, -1 kuzey vb.
(Burada sol üst 0,0 ve sağ alt 4,4 demiştim ve dizilerin her bir indeksinin merkezi nokta olan X'den 2,2'de hangi hareketi yapacağını gösterdim.)
.....
.536.
.1X0.
.724.
.....
Kurulum şekli , indekste yaparsanız ^1( ^bitsel XOR olarak) zıt yönü elde edersiniz - 0 ve 1 zıttır, 2 ve 3 zıttır vb. (Kurmanın başka bir yolu da kuzeyden başlayarak saat yönünde ilerlemektir - sonra ^4size ters yön verir.)
Artık üzerinde döngü verilen bir noktadan tüm yönlere test edebilirsiniz dive djbunun yerine kendi satırında her yönünü yazmak için ihtiyaç duyma, diziler (toplam sekiz!) (Sadece :) sınırları denetleme yapmak unutmayın)
diKve tüm bitişik yönler yerine djKtüm şövalyelerin yönlerini oluşturun . Burada, ^1bir eksen boyunca ^4dönecek, zıt ata sıçrayacak.
.7.6.
0...5
..K..
1...4
.2.3.
d={0,1,0,-1,0}: öğe çiftlerid[i], d[i+1]bana dört ana yön vermek için .