Jaki byłby stosunkowo łatwy algorytm do kodowania w Javie do rozwiązania kostki Rubika. Wydajność jest również ważna, ale jest kwestią drugorzędną.Najłatwiejszy algorytm kodu dla kostki Rubika?
Odpowiedz
Najprostszym nietrywialne algorytm znalazłem jest to jedno:
http://www.chessandpoker.com/rubiks-cube-solution.html
Nie jest trudno napisać kod. Łącze wymienione w Yannick M.'s answer również wygląda dobrze, ale rozwiązanie kroku "the cross" wygląda na nieco bardziej skomplikowane.
Istnieje wiele implementacji rozwiązań open source, które warto przyjrzeć. Oto Python implementation. Ten Java applet zawiera również solver, a kod źródłowy jest dostępny. Jest też Javascript solver, również z pobieralnym kodem źródłowym.
Anthony Gatlin's answer stanowi doskonały punkt na dobre dopasowanie Prolog do tego zadania. Oto szczegółowy artykuł na temat tworzenia własnego Prolog solver. Zastosowane heurystyki są szczególnie interesujące.
link do rozwiązania JS wydaje się być uszkodzony. –
Wykonuj losowe operacje, aż uzyskasz właściwe rozwiązanie. Najprostszy algorytm i najmniej efektywny.
chcieć sprawdzić: http://peter.stillhq.com/jasmine/rubikscubesolution.html
Posiada graficzną reprezentację algorytmu do rozwiązania sześcian danej 3x3x3 Rubika
Rozumiem, że twoje pytanie jest związane z Javą, ale z praktycznego punktu widzenia języki takie jak Prolog są znacznie lepiej dopasowane, jak rozwiązywanie kostki Rubika. Zakładam, że jest to prawdopodobnie dla klasy i możesz nie mieć żadnej pewności co do wyboru narzędzia.
Możesz to zrobić, wykonując BFS (ang. "Szerokość-pierwsze wyszukiwanie"). Myślę, że wdrożenie nie jest takie trudne (Jest to jeden z najprostszych algorytmów w kategorii wykresu). Robiąc to ze strukturą danych o nazwie queue, naprawdę będziesz pracować nad budowaniem drzewa BFS i znalezieniem tak zwanej najkrótszej ścieżki od danego warunku do stanu pożądania. Wadą tego algorytmu jest to, że nie jest on wystarczająco wydajny (bez modyfikacji, nawet do rozwiązania kubitu 2x2x2, wymagany czas wynosi ~ 5 minut). Ale zawsze możesz znaleźć kilka sztuczek, aby zwiększyć prędkość.
Szczerze mówiąc, jest to jedno z zadań domowych kursu "Introduction of Algorithm" od MIT. Oto link do pracy domowej: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/assignments/MIT6_006F11_ps6.pdf. Mają kilka bibliotek, które pomogą ci je zwizualizować i pomogą ci uniknąć niepotrzebnego wysiłku.
- 1. Heurystyczny algorytm gwiazdotwórczy dla powierzchni kostki
- 2. Najłatwiejszy sposób narysowania obrazu?
- 3. Siewanie iteracji Newtona dla korzenia kostki efektywnie
- 4. Mapowanie kostki w OpenGL
- 5. Jak działa algorytm Richardsona-Lucy? Przykład kodu?
- 6. Algorytm dla div kerningu
- 7. symulacja toczenia dwie kostki
- 8. Animacja obrotu kostki czwartorzędowej
- 9. Poszukuję kodu Java implementującego algorytm przeciążania javaca
- 10. Algorytm tfidf dla Pythona
- 11. Podłączanie do kostki SSAS przy użyciu R
- 12. Jak uzyskać styl kostki 3d dla mojego div
- 13. Wynik JSON z kostki SSAS
- 14. Zmiana koloru kostki w three.js
- 15. Szuka eleganckiej kostki Pythona Iteracja
- 16. Algorytm różnicowy C# dla tekstu
- 17. Algorytm rekursywny dla czterobarwnego twierdzenia
- 18. Algorytm dla linii łączących prostokąty
- 19. Algorytm wyszukiwania, ale dla funkcji
- 20. Algorytm dla "gładkich" liczb losowych
- 21. Algorytm dla maksymalnego zestawu zdominowanego
- 22. Algorytm odnajdywania ścieżek dla pociągów
- 23. Algorytm dla schematu cenowego Fogbugz
- 24. Algorytm podpróbkowania Chroma dla jpeg
- 25. Algorytm dla itertools.combinations w Pythonie
- 26. Najlepszy algorytm kompresji dla XML?
- 27. Nagłówek kodu dla zastrzeżonego kodu
- 28. Jak zainstalować kostki w systemie Ubuntu?
- 29. Wykres kołowy JqPlot - Zmień kolory kostki Pie
- 30. Symetryczny algorytm szyfrowania dla systemu wbudowanego
Pytanie jest źle sformułowane, a pytanie, które jest głosowane jako "poprawne", w rzeczywistości nie jest właściwą odpowiedzią. To pokazuje, dlaczego "najłatwiejszy algorytm do kodowania" może nie być tym, czego potrzebujesz - program może nigdy się nie skończyć. I pokazuje, dlaczego musisz troszczyć się o wydajność. – vy32
Zostałem okradziony * krzyki *: p – Rushyo
Można tak po prostu sformułować, "Jaki jest najłatwiejszy algorytm kodu, który daje wyniki w naszym życiu" :-) –