name = 'prog_8puzzle/3' slug = 'jezik za reševanje igre Osem s pomenom' description = '''\

Napiši DCG za jezik igre Osem (angl. 8-puzzle). Sintaksa tega jezika naj bo enaka kot v prejšnji nalogi. Prvi simbol vsake besede je simbol [begin], temu pa sledi poljubno zaporedje "ukazov" iz nabora {left, right, up down}, na koncu pa je simbol [end]. Začetni nekončni simbol naj se imenuje prog_8puzzle.

Pomen besede (programa) v tem jeziku ima obliko In-->Out in pomeni preslikavo med vhodnim seznamom In in izhodnim seznamom Out. Stanje je seznam (permutiran) števil od 0 do 8, kjer 0 pomeni prazno polje, ostala števila pa pomenijo oznako ustrezne ploščice. Prva tri števila v seznamu predstavljajo prvo vrstico stanja igre Osem, naslednja tri srednjo vrstico in zadnja tri spodnjo vrstico. Pomen ukazov left, right, up in down je "premik" praznega polja v ustrezni smeri.

?- prog_8puzzle([0,1,2,3,4,5,6,7,8]-->Out, [begin,down,right,end], []).
  Out = [3,1,2,4,0,5,6,7,8].

Pomožni predikati (že definirani):

''' hint = {}