Inilalarawan nito ang klasikong "15 puzzle" (o mas malaking variant). Walang solong solusyon na maibibigay ko dahil ang solusyon ay ganap na nakasalalay sa paunang pag-aayos ng 30 numero. Upang malutas ito, kailangan mong gumamit ng algorithm sa paghahanap (tulad ng A*, breadth-first search, o depth-first na paghahanap) upang mahanap ang pinakamainam na pagkakasunud-sunod ng mga swap. Ang mga algorithm na ito ay computationally intensive para sa mga puzzle na ganito ang laki.
Walang mga shortcut; kailangan mong sistematikong ilipat ang mga numero sa kanilang mga tamang posisyon. Mayroon ding ilang mga kaayusan na hindi malulutas, depende sa pagkakapareho ng mga permutasyon.
Narito kung ano ang kailangang gawin ng isang programa sa paglutas nito:
-
Kumakatawan sa puzzle: Lumikha ng istraktura ng data (malamang na isang 2D array o isang 1D array) upang mahawakan ang 30 numero.
-
Tukuyin ang estado ng layunin: Isang istruktura ng data na kumakatawan sa mga wastong pagkakasunod-sunod na numero (1, 2, 3...30).
-
Magpatupad ng algorithm sa paghahanap: Pumili ng naaangkop na algorithm (Ang A* ay kadalasang ginusto para sa kahusayan nito) upang tuklasin ang mga posibleng swap sequence. Kailangang subaybayan ng algorithm ang mga binisita na estado upang maiwasan ang mga pag-ikot.
-
*Heuristic function (para sa A):* Kung gumagamit ng A, kailangan mo ng heuristic function para matantya ang distansya mula sa isang partikular na estado hanggang sa layunin ng estado. Ang isang karaniwang heuristic para sa 15 puzzle (at madaling ibagay sa mas malaking bersyon na ito) ay ang Manhattan distance (ang kabuuan ng mga distansya ng bawat tile ay mula sa posisyon ng layunin nito).
-
Swap function: Isang function para magpalit ng dalawang numero sa representasyon ng puzzle.
-
Kondisyon ng pagwawakas: Hihinto ang algorithm kapag nahanap nito ang estado ng layunin.
Ito ay isang kumplikadong gawain sa programming, higit pa sa simpleng tugon. Kakailanganin mong gumamit ng programming language tulad ng Python, C , o Java upang maipatupad ito. Umiiral ang mga aklatan upang tumulong sa mga algorithm sa paghahanap, ngunit kailangang isulat ang pangunahing lohika.