Ünlü bir soru olduğunu söylüyorlar bu sorunun;
AT TURU(Knight' s Tour)
Verilen ödevde bir satranç tahtasında bir atın tüm noktaları tek seferde gezmesi isteniyor. internette bir çok örnek kod buldum ama direkt olarak kod olduğu için mantığını anlayamadım. Ben sizden ödevimi yapmanızı istemiyorum, sadece nasıl bir mantık(algoritma) kurabilirim,
At Turu
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- seandillon
- Üye
- Mesajlar: 50
- Kayıt: 04 Nis 2006 11:14
- Konum: istanbul
- İletişim:
At Turu
Hayatta iki şey paylaşmaya değer, sevgi ve bilgi. sevgisiz bilgi, bilgisiz sevgi olmaz...
Re: At Turu
başlangıç olarak şöyle birşey olabilir. 8x8 matris yani iki boyutlu bir dizi tanımlanır, değerler ilk başta sıfır olarak atanır,
AT başlangıç noktası olan (0,0) noktasına koyulur (dizi[0][0]:=1;)
daha sonra AT'ın hareket kuralına göre bulunan konumdan bir sonraki konuma geçilir ve geçilen hücrenin değeri 1 yapılır...
kurala göre hedef hamleler

(0,0) sol üst köşe olarak düşünürsek, bulunulan konuma da (x,y) dersek, hedef hamleler
* (x+1,y-2)
* (x+2,y-1)
* (x+2,y+1)
* (x+1,y+2)
* (x-1,y+2)
* (x-2,y+1)
* (x-2,y-1)
* (x-1,y-2)
olur, bunlar kontrol edilip ona göre sonraki hamle yapılır...
initialize
- diziyi tanımla ve başlangıç değerlerine 0 ata,
- ATı (0,0) a konumlandır
move
- bulunulan konuma göre yapılabilecek hamleleri kontrol et
- uygun hücreye konumlan
AT başlangıç noktası olan (0,0) noktasına koyulur (dizi[0][0]:=1;)
daha sonra AT'ın hareket kuralına göre bulunan konumdan bir sonraki konuma geçilir ve geçilen hücrenin değeri 1 yapılır...
kurala göre hedef hamleler

(0,0) sol üst köşe olarak düşünürsek, bulunulan konuma da (x,y) dersek, hedef hamleler
* (x+1,y-2)
* (x+2,y-1)
* (x+2,y+1)
* (x+1,y+2)
* (x-1,y+2)
* (x-2,y+1)
* (x-2,y-1)
* (x-1,y-2)
olur, bunlar kontrol edilip ona göre sonraki hamle yapılır...
initialize
- diziyi tanımla ve başlangıç değerlerine 0 ata,
- ATı (0,0) a konumlandır
move
- bulunulan konuma göre yapılabilecek hamleleri kontrol et
- uygun hücreye konumlan
bazen yükselmek için önce dibi görmek gerekir...
forumda soru sormadan önce bakılmalı bence
daha fazlası için...
yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...
yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Re: At Turu
Atın tahtayı komple dolaşması ve bir noktayı sadece bir kez kullanmasını ön görüyor kodları inceledim ama bu iş biraz daha karışık bir durum.
http://en.wikipedia.org/wiki/Knight%27s_tour
https://github.com/danieltian/KnightBoa ... Program.cs c#
http://delphiforfun.org/programs/knights_tour.htm Delphi
http://en.wikipedia.org/wiki/Knight%27s_tour
https://github.com/danieltian/KnightBoa ... Program.cs c#
http://delphiforfun.org/programs/knights_tour.htm Delphi
- seandillon
- Üye
- Mesajlar: 50
- Kayıt: 04 Nis 2006 11:14
- Konum: istanbul
- İletişim:
Re: At Turu
Evet çok değişik fikirler ve örnek kodlar var. Ben de aynı siteleri bulmuştum knight tour olarak geçiyor. bunlar ikiye ayrılıyor biri açık tur birde kapalı tur kapalı turda at tekrar başladığı yere dönüyor, açık turdada herhangi bir yerde bitiyor... aklıma labirentte kullanılan yığın mantığı geldi ama yavaşmı olur bilmiyorum...
Hayatta iki şey paylaşmaya değer, sevgi ve bilgi. sevgisiz bilgi, bilgisiz sevgi olmaz...
Re: At Turu
backtracking güzel bi yöntem olabilir bu iş için.
Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
'Yükseldikçe küçülen bir uçurtma..'