Bir Rubik küpünü çözmek için Java'da kod yazmak için nispeten kolay bir algoritma ne olurdu. Verimlilik ayrıca önemlidir, ancak ikincil bir değerlendirme.Rubik küpü için en kolay kod algoritması?
cevap
3x3x3 Rubik küpü çözmeye bir algoritma grafik temsilini içeriyor:
Kodlama çok zor görünmüyor. Yannick M.'s answer'da belirtilen bağlantı da iyi görünüyor, ancak ' the cross' adımının çözümü bana biraz daha karmaşık gelebilir.Göz atmak isteyebileceğiniz bir dizi açık kaynak çözücü uygulaması vardır. İşte bir Python implementation. Bu Java applet da bir çözücü içerir ve kaynak kodu kullanılabilir. Ayrıca indirilebilir kaynak kodu ile Javascript solver da var. Bu görev için Prolog'un uygunluğu hakkında mükemmel bir noktaya
Anthony Gatlin's answer. İşte kendi Prolog solver'u nasıl yazacağınız hakkında ayrıntılı bir yazı var. Kullandığı sezgisel özellikle ilginç.
bağlantı bozuk gibi görünüyor. –
Doğru çözümü alana kadar rastgele işlemler gerçekleştirin. En kolay algoritma ve en az verimli.
kontrol etmek istiyorum Olabilir: http://peter.stillhq.com/jasmine/rubikscubesolution.html
buldum en basit önemsiz olmayan algoritması bu biridir
Sorunun Java ile ilgili olduğunu biliyorum, ancak pratik bir notta, Prolog gibi diller Rubik küpünü çözmek gibi çok daha uygun problemlerdir. Bunun muhtemelen bir sınıf için olduğunu ve aletin seçimine ilişkin bir avantajınız olmadığını varsayalım.
Bunu BFS (Breadth-First-Search) yaparak yapabilirsiniz. Uygulamanın o kadar da zor olmadığını düşünüyorum (Grafik kategorisinde en basit algoritmalardan biridir). Kuyruk adı verilen veri yapısıyla yaptığınız şey, gerçekten üzerinde çalışacağınız bir BFS ağacı oluşturmak ve verilen durumdan arzu durumuna kadar en kısa yoldan bir yol bulmaktır. Bu algoritmanın dezavantajı yeterince verimli olmamasıdır (herhangi bir modifikasyon olmadan, 2x2x2 küplük bir çözücünün çözülmesi için gereken süre ~ 5 dakikadır). Ama hızı artırmak için her zaman bazı hileler bulabilirsiniz.
Dürüst olmak gerekirse, MIT'den "Introduction of Algorithm" adlı dersin ödevlerinden biridir. İşte ödevin linki: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/assignments/MIT6_006F11_ps6.pdf. Görselleştirmenize ve gereksiz çabalardan kaçınmanıza yardımcı olacak birkaç kütüphaneye sahipler.
- 1. Fortune algoritması için sözde kod
- 2. Eppstein'ın algoritması ve en kısa yollar için Yen algoritması
- 3. En kolay, MatLab
- 4. JavaScript'te En Yakın Eşlik Algoritması
- 5. En kullanışlı paralel programlama algoritması?
- 6. Dahili algoritma En yakın 10 aralığa yuvarlamak için .Net algoritması
- 7. En çok kullanılan STL algoritması, yüklemleri, yineleyicileri
- 8. En Kolay Muhtemel Performans Sayacı Örneği
- 9. Bir çizgiyi canlandırmanın en kolay yolu nedir?
- 10. Yüksek sıklıkta kullanım için en hızlı levenshtein algoritması nedir?
- 11. Küçük dizeler için en iyi şifreleme algoritması hangisidir?
- 12. P/Invoke kodu oluşturmanın en kolay yolu?
- 13. Sözlükleri kullanarak en kısa yol algoritması [Python]
- 14. Temel Değer çifti için Enum'u almanın en kolay yolu
- 15. En iyi derinlik harita oluşturma algoritması nedir?
- 16. Ruby'de en iyi permütasyon sayımı algoritması
- 17. Kafka - En Son Ofset Almanın En Kolay Yolu
- 18. Hangi karma algoritması en uzun çıkışı sağlıyor?
- 19. Hangi yerleşik .NET şifreleme algoritması en güvenlidir?
- 20. Dijkstra en kısa yol algoritması kenar maliyeti
- 21. Doku küpü haritası neden tüm küpler için değişti?
- 22. Angular JS'de modals işlemek için en kolay yolu nedir?
- 23. PostSharp özniteliğinin özelliklerini eşleştirmek için en kolay yol
- 24. Çoklu dizeler için "git grep" yapmanın en kolay yolu?
- 25. Tomcat sunucusunu en kolay şekilde çalıştırmak için ortam nasıl hazırlanır?
- 26. Masaüstünde javascript programlarını yazmanın en kolay yolu?
- 27. Koleksiyona diziyi dönüştürmenin en kolay yolu?
- 28. Anketi oluşturmaya çalışmanın en kolay yolu Sonuçları
- 29. tcl: Dizeden numara almanın en kolay yolu?
- 30. En Kolay Yolu PHP ile Algılama?
Soru yanlış bir şekilde ifade edilmiş ve "doğru" oyu verilen soru aslında doğru cevap değildir. Bu, "kod için en kolay algoritmanın" neden istediğinizi gösteremeyeceğini gösterir --- program asla bitmeyebilir. Ve neden verimlilikle ilgilenmeniz gerektiğini gösteriyor. – vy32
Soyuldum * ağrılar *: p – Rushyo
Sadece 'En kolay algoritma, hayatımızdaki sonuçları veren koddur' :-) –