From bbcb29a202436fc0e222e187f1fadf0b1f305465 Mon Sep 17 00:00:00 2001 From: Timotej Lazar Date: Sun, 22 May 2016 17:48:30 +0200 Subject: Prolog: update denotational_semantics problems --- .../denotational_semantics/prog_listswap_3/en.py | 29 +++++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) (limited to 'prolog/problems/denotational_semantics/prog_listswap_3/en.py') diff --git a/prolog/problems/denotational_semantics/prog_listswap_3/en.py b/prolog/problems/denotational_semantics/prog_listswap_3/en.py index b8e9769..e275335 100644 --- a/prolog/problems/denotational_semantics/prog_listswap_3/en.py +++ b/prolog/problems/denotational_semantics/prog_listswap_3/en.py @@ -2,16 +2,37 @@ name = 'prog_listswap/3' slug = 'list-manipulation language with semantics' description = '''\ -

Write a DCG for manipulating list elements. The first symbol in every word is [begin], followed by any sequence of "instruction" symbols from the set {left, right, swap}, and finally [end]. The starting symbol should be named prog_listswap.

+

+Write a DCG for manipulating list elements. The first symbol in every word is +[begin], followed by any sequence of "instruction" symbols from +the set {left, right, swap}, and finally +[end]. The starting symbol should be named +prog_listswap. +

-

The meaning of a word (program) in this language has the form In-->Out, mapping from input to output lists. Besides the list contents, internal states also hold the current cursor position. The left and right instructions move the cursor one step in the given direction, while the swap instruction swaps the element under the cursor with its left neighbor (and fails if cursor is currently pointing to the first element of the list).

+

+The meaning of a word (program) in this language has the form +In-->Out, mapping from input to output lists. Besides the list +contents, internal states also hold the current cursor position. The +left and right instructions move the cursor one step +in the given direction, while the swap instruction swaps the +element under the cursor with its left neighbor (and fails if cursor is +currently pointing to the first element of the list). +

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

Helper predicate (already defined):
-  swap(List,I,NewList) creates NewList by swapping the Ith element with its left neighbor in List

''' +

+Helper predicates (already defined): +

+ +''' hint = {} -- cgit v1.2.1