"misbehaving" Union function
- To: mathgroup at smc.vnet.net
- Subject: [mg24075] "misbehaving" Union function
- From: Felix Farkas <farkas at ica.epfl.ch>
- Date: Fri, 23 Jun 2000 02:26:43 -0400 (EDT)
- Organization: EPFL
- Sender: owner-wri-mathgroup at wolfram.com
Hi, i am trying to build up a list of points. The input is, a list of events. I use the Union function in order to avoid duplicate points. however i do not have the expected result. i really don't know where the error is coming from. Could somebody, please, tell me where is the fault? I would greatly appreciate any suggestions. Many thanks in advance. Regards, Felix Here is the function: In[1]:= Genpoints[events_] := Module[ {ev = events, rate, duration, time, burst, bytes = 0, points = {}}, rate := ee[[3]]; duration := ee[[2]]; time := ee[[1]]; burst := ee[[4]]; While[Length[ev] != 0, ee = First[ev]; ev = Rest[ev]; points = Union[points, If[rate == -1, (*then*) bytes += burst; {{time, bytes - burst}, {time, bytes}}, (*else*) bytes += rate*duration; Print[{{time, bytes - rate*duration}, {time + duration, bytes}}]; {{time, bytes - rate*duration}, {time + duration, bytes}}] ] ]; points ] The output generated is: In[2]:= aa = {{0, 6, 0.3333333, 2, 2, 1}, {6, 8, 0.5, 4, 2, 1}, {14, 1, 1, 1, 2, 1}, {15, 10, 0.4, 4, 2, 1}, {25, 1, 1, 1, 2, 1}}; In[3]:= po2 = Genpoints[aa] Out[3]= {{0, 0.}, {6, 2.}, {6, 2.}, {14, 6.}, {15, 7.}, {25, 11.}, {26, 12.}} ----------------------------------------------------------------------------- Felix Farkas EPFL-DSC-ICA IN-Ecublens CH-1015 Lausanne Switzerland tel: 0041 21 693 6601 fax: 0041 21 693 6610 email: felix.farkas at epfl.ch