name = 'prog_listswap/3' slug = 'jezik za rokovanje s seznami s pomenom' description = '''\

Napiši DCG za rokovanje s seznami. Prvi simbol vsake besede je [begin], temu pa sledi poljubno zaporedje "ukazov" iz nabora {left, right, swap}, na koncu pa je simbol [end]. Začetni nekončni simbol naj se imenuje prog_listswap.

Pomen besede (programa) v tem jeziku ima obliko In-->Out in pomeni preslikavo med vhodnim seznamom In in izhodnim seznamom Out. Notranje stanje gramatike, hranjeno v argumentih nekončnih simbolov, poleg trenutnega stanja seznama vodi tudi pozicijo kurzorja s katerim rokujemo s seznamom. Ukaza left in right kurzor premakneta za eno mesto v ustrezno smer, ukaz swap pa zamenja mesti elementov med katerima stoji kurzor. Če je kurzor na začetku seznama, ukaz swap ne uspe.

?- prog_listswap([1,2,3,4]-->Out, [begin,right,swap,end], []).
  Out = [2,1,3,4].

Pomožni predikat (že definiran):

Ta naloga je že rešena. Preveri kako deluje v konzoli.

''' hint = {}