Algoritmanın püf noktası başlangıç adresinden sonra başlngıc ynünde bir sonraki hücreye eleman yerleştirilip yerleştirilemeyeceği ve buna bağlı yn değişim kararı prosedürü. ve yerleştirecek eleman kalıp kalmadığı ncelikle matrise yerleştirilecek dizi küçükten büyüğe sıralanır, boş hücreler için 0 lar dizi sonuna atılır. ilk olarak elemanı yerleştirdikten sonra, dizide eleman kaldığı sorgulunır Diğer bir husus da yazmaçın yatay ve düşey doğrultuda yn vektrlerinin tesbiti yatay hareket vektrü U düşey hreket vekkrü V +/-1 değerlidir ki yazmaça hreket vektrü doğrultusunda bir birim ilerle dediğimizde indisler üzerinde ileri geri aşağı yukarı hareket edebilelim. aşağıdaki program nerisinde başlangıç nokası 1,1 pozitif hareket ynler sağ ve aşağı olarak var sayılmaka birlikte dış girdi olarak da alınabilir sistemi değiştirmez 450-470 Hücrelelere daha nce elelman atamasının kontrolü için D glge/duvar mattrisi oluşturdum eleman yerleşen hücreye 1 atadım ki kaynak dizinin sıfırları kafa karıştırmasıntemelde BASIC olmasına rağmen hemen her dilde olan basit komutlardır 50 input "matris satr X " ; x60 input " matris stun says Y ": y70 "eleman says" ES=x y 100 for b=1 to ES200 input " matris elemanlarn giriniz" e 210 next220 gosub ELEMAN SIRALA230 "elemanlar başarıyla EL dizisine atandı " 235 " duvar matris matris sıfırlanıyor240 for i=1 to x245 for j=1 to y250 D =0255 next j256 next j450 u=1, v=1, i=1, j=1, en=1 // s=1 ilk ELEMAN YERLEşTir 460 T(1,1)=EL(1) D(1,1)=1 470 en=en+1 480 if en > ES then 899 490 yatay hareket deerlendirmesi 500 yhd = j+u 1>x or j+u 1<1 or D(i, j+u 1) 510 if yhd=1 u=-1 u : goto 650 520 j=j+u 1530 T =EL : en=en+1 // 530 T =EL 540 if en > ES then 899 //if en+1 > ES then 899 550 goto 490650 Dikey hareket deerlendirmesi 660 dhd= i+v 1>y or i+v 1<1 or D(1+v 1, j)=1 670 if dhd=1 v=-1 v : goto 490 680 i=i+v 1 690 T =EL :en=en+1 //T =EL 695 if en > ES then 899 // 700 goto 650899 matris yerleşti900 enddüzeltme ve zür: mürit kardeşlerim kusurua bakmayın 15 yıldır ne algoritma ne program yazdım lı düzeltmeler yapılmalı ki sıradaki elemanın indisiyle çağrılabilsin // eski yanlış koddur Din Kitaplarını Okuyup Anlayana Ateist, Okuyup Anlamayanlara "dindar" denir... Nikola TESLA.. ben mi? Ne okurum ne anlarım... Kendi kendime de uyuz oluyorum ama olamıyorum.. "Ama efsaneyi çıkarıp atarsan ve yaptıkları eylemlere bakarsan... .. Jedi'ların mirası başarısızlıktır. İkiyüzlülüktür, kibirdir."

Bu konuda http://www.tahribat.com/forumdisplayfolder. asp?folderid=80854 yazmış olduğum cevap. Tek fark manhattan mesafe'lerin farklı şekilde hesaplanması. Selam, Bu puzzle'ın optimal çzümüne o kadar da ağır olmayan bir heuristic ile ulaşılabilir. A search algoritmasını (http://www.autonlab.org/tutorials/astar08. pdf) duymuşsunuzdur. Çzümümüzde tam anlamıyla bu search algoritmasını kullanacağız. Bu algoritmayı kullanlanırken h değerini , her tuşun bu pozisyondaki yeri ile olması gereken yerinin arasındaki Manhattan mesafesinin mutlak degerlerinin toplayarak bulacağız. Verilen bir puzzle'da ncelikle ilk pozisyon için h değerini buluyoruz ve priority queue denilen yapıya bu pozisyonu değeriyle beraber koyuyoruz. Sonra bu pozisyondan üretilebilecek pozisyonlar için aynı şekilde h hesaplamalarını yapıyoruz ve priority queue'ya koyuyoruz. Bundan sonraki adımlar bir loop'un içinde geçecek, puzzle'ın olması gerektiği pozisyona ulaşınca bu loop'tan çıkacağız. Loop'umuz başladı. Priority queue'dan en küçük h değerli pozisyonu çekiyoruz. Eğer pozisyon orjinal puzzle posizyonuysa tamamdır sonuca ulaştık. Değilse, pozisyondan üretilebilecek pozisyonları buluyoruz, h hesaplamalarını yapıyoruz ve priority queue'ya koyuyoruz. Loop'un başına dnüyoruz. NOT: Priority queue'ya koyarken aynı pozisyonları koymamaya dikkat edilmeli. Üsünde geçilmiş pozisyonların bir listesini array yapısında tutabilirsiniz. NOT: Pozisyonları oluştururken, parent pozisyonlarını unutmamak gerekiyor. Bunu da bir pointerla halledebilirsiniz. Bu greedy heuristic olup da optimal sonuca gtüren bir çzümdür. d. d.

yeni halinin tek zelliği sarmal olarak 1den 8e gitmesimi? Microsoft isn't evil, they just make really crappy operating systems. Linus Torvalds

Bu rnek için yle, ama sen istediğin başka türlü şartlar da ekleyebilirsin. Sen hiç kaval çaldın mı?

başlamatrisin boyutunu oku (M )matris kümesini oku matris kümesini büyükten küçüğe sırala A s dizisine yükle S=1U=1 V=1 10 i=1 j=115 S x y den büyük mü E -> "matris tamam" bitir20 M ye As yi ata 40 i+1 X den büyük mü H-> j= j+v 15e git E -> i=i+u j=Y s= s+1 15e git Din Kitaplarını Okuyup Anlayana Ateist, Okuyup Anlamayanlara "dindar" denir... Nikola TESLA.. ben mi? Ne okurum ne anlarım... Kendi kendime de uyuz oluyorum ama olamıyorum.. "Ama efsaneyi çıkarıp atarsan ve yaptıkları eylemlere bakarsan... .. Jedi'ların mirası başarısızlıktır. İkiyüzlülüktür, kibirdir."

Şu aşağıdaki iki rnek gibi, herhangi bi şekilde başlangıç konumu verilen tabloyu8 7 1 3 4 6 5 2 8 2 6 3 4 7 5 1 şu hale getirebilecek algoritma, C, C++, C#, Java, Php, Pascal, Python vs herhangi bir dildeki kodu ya da çzüm üretecek herhangi bir şeyler. 1 2 3 8 4 7 6 5Ben biraz uğraştım yemedi, belki ilginizi çeker. Amaç soru sormak falan da değil, yle esti paylaşayım dedim. İlgilenip çzen olursa biz de birkaç şey ğrenmiş oluruz belki. Buna benzer oyunları grmüşsünüzdür zaten. Kurallar basit, bi tane boşluk var, rakamlar sağa, sola, yukarı ya da aşağı kayarak son hale dnüşmek isteyecekler. Ya da herkes istediği şartları yazsın, kendi kuralını oluştursun. Sen hiç kaval çaldın mı?