At Turu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
seandillon
Üye
Mesajlar: 50
Kayıt: 04 Nis 2006 11:14
Konum: istanbul
İletişim:

At Turu

Mesaj gönderen seandillon »

Ü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,
Hayatta iki şey paylaşmaya değer, sevgi ve bilgi. sevgisiz bilgi, bilgisiz sevgi olmaz...
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: At Turu

Mesaj gönderen unicorn64 »

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
Resim

(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...

Resim
orhancc
Üye
Mesajlar: 585
Kayıt: 24 Ağu 2010 02:14
Konum: İstanbul / Kadıköy
İletişim:

Re: At Turu

Mesaj gönderen orhancc »

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
Kullanıcı avatarı
seandillon
Üye
Mesajlar: 50
Kayıt: 04 Nis 2006 11:14
Konum: istanbul
İletişim:

Re: At Turu

Mesaj gönderen seandillon »

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...
qamyoncu
Üye
Mesajlar: 266
Kayıt: 12 Tem 2008 04:30

Re: At Turu

Mesaj gönderen qamyoncu »

backtracking güzel bi yöntem olabilir bu iş için.
Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
Cevapla