SORU
3 Mayıs 2013, Cuma


Yön başlatılıyor önemi satranç programı geliştirirken aşağıda verilen değerler içeren diziler nedir?

Rekabetçi programlama yeni duyuyorum, ve sık sık, çok büyük kodlayıcıların kendi kod (özellikle dizileri içeren) bu dört satır var: fark ettim

int di[] = { 1, -1, 0, 0, 1, -1, 1, -1 };
int dj[] = { 0, 0, 1, -1, 1, -1, -1, 1 };
int diK[] = { -2, -2, -1, 1, 2, 2, 1, -1 };
int djK[] = { -1, 1, 2, 2, 1, -1, -2, -2 };

Bu gerçekten ne anlama geliyor ve tekniği için kullanılan nedir?

CEVAP
3 Mayıs 2013, Cuma


Bu diziler - di[i],dj[i] Her çifti farklı bir yönü olduğu gibi her yöne kodlamak için bir tekniktir.

Eğer bizim hayal ettiğimiz bir şeye bir konum x,y, ve biz eklemek için üzerine x ve y değeri için hareket için yakındaki bir yer, Doğu 1,0, -1,0 Batı, Güney 0,1, 0,-1, Kuzey.

(Burada üst sol 0,0 olduğunu söyledim ve sağ alt 4,4 ve diziler her dizin Merkez noktasından yapacak ne gösterilir, X, 2,2.)

.....
.536.
.1X0.
.724.
.....

Bu şekilde ayarlama yaparsan ^1 (^ olmak bit seviyesinde XOR) dizin olsun ters yön - 0 ve 1 birbirine zıt, 2 ve 3 birbirine zıt. (Kurmak için başka bir yol Kuzey başlayarak saat yönünde gitmek için - o zaman ^4 ters yön alır.)

Şimdi test edebilirsiniz her yönden belirli bir noktadan sonra döngü içinde di dj diziler yerine ihtiyacı yazmak her yönü üzerinde kendi hattı (toplam sekiz!) (Sadece unutma kontrol sınırları :) )

diK djK tüm bitişik yönergeleri yerine knights directions tüm form. Burada, ^1 bir eksen boyunca flip, ^4 ters knight sıçrama verecektir.

.7.6.
0...5
..K..
1...4
.2.3.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bobono1baby

    bobono1baby

    14 AĞUSTOS 2011
  • HouseholdHacker

    HouseholdHac

    6 Kasım 2007
  • Palmundo Ec

    Palmundo Ec

    11 HAZİRAN 2009