From liraola@opera.dia.fi.upm.es  Wed Nov  3 13:09:38 1999
Received: from goofy.fi.upm.es (goofy.fi.upm.es [138.100.8.23])
	by swi.psy.uva.nl (8.9.3/8.9.3) with ESMTP id NAA20407
	for <prolog@swi.psy.uva.nl>; Wed, 3 Nov 1999 13:09:37 +0100 (MET)
Received: from conversion.relay.fi.upm.es by relay.fi.upm.es
 (PMDF V5.2-32 #39034) id <01JHWH9A33ZK00027W@relay.fi.upm.es> for
 prolog@swi.psy.uva.nl; Wed, 3 Nov 1999 13:09:18 MET
Received: from opera.dia.fi.upm.es (opera.dia.fi.upm.es [138.100.11.43])
 by relay.fi.upm.es (PMDF V5.2-32 #39034)
 with ESMTP id <01JHWH99MQEK000276@relay.fi.upm.es>; Wed,
 03 Nov 1999 13:09:18 +0100 (MET)
Received: from localhost by opera.dia.fi.upm.es (8.8.4/FI-4.1) Wed,
 3 Nov 1999 12:39:10 GMT
Date: Wed, 03 Nov 1999 12:39:08 +0000 (WET)
From: Luis Iraola Moreno <liraola@opera.dia.fi.upm.es>
Subject: Re: split/3
In-reply-to: <19991103102703.46973.qmail@hotmail.com>
X-Sender: liraola@opera
To: Joakim =?ISO-8859-1?Q?=D6rblom?= <cjorblom@hotmail.com>
Cc: prolog@swi.psy.uva.nl
Message-id: <Pine.SOL.3.95.991103123603.5757A-100000@opera>
MIME-version: 1.0
Content-type: TEXT/PLAIN; charset=iso-8859-1
Content-transfer-encoding: 8BIT



On Wed, 3 Nov 1999, Joakim Örblom wrote:

> Help! How do I construct a predicate split/3?? E.g. 
> split(a,axxaxxaxx,[xx,xx,xx]).
> Thanx from Carl Orblom (cjorblom@hotmail.com)

This predicate may do the job:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% segment(InputList, SegmentSeparator, SegmentList)
%

segment([], _, []).

segment([X|Y], [H|T], [Segment|Tail]):-
	append(Segment,[H|U], [X|Y]),
	append(T, Rest, U),
	!,
	segment(Rest, [H|T], Tail).

segment([X|Y], _, [[X|Y]]).

Example:

?- segment([a,x,x,a,xx],[a],L).

L=[ [], [x,x], [xx] ] 



