MathGroup Archive 2008

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Find Upper Neighbor in a list

  • To: mathgroup at smc.vnet.net
  • Subject: [mg85070] Re: Find Upper Neighbor in a list
  • From: P_ter <peter_van_summeren at yahoo.co.uk>
  • Date: Sun, 27 Jan 2008 05:42:33 -0500 (EST)

Hello Oleksandr Pavlyk,
first of all: thanks for looking at my problem. 
However, there are many more loops than 2: every Cases is a loop, also Subsets is a loop, FixedPoint is a loop. Count them! But it is good to discuss. 
I have this basislist el. I made a small module:
lengthPositions[basis_] := Module[{lengthList},
  lengthList = Length[#] & /@  basis;
  {#[[1]], Position[lengthList, #[[1]], 1, #[[2]]][[All, 1]]} & /@ 
   Tally @ lengthList
  ]
Here there is the loop Tally. But in Position I already use the results of Tally, that is, the number that a list with a certain length appears in the basislist. Position does only the job needed. I now get:
{{1, {1, 2, 3, 4}}, {2, {5, 6, 7, 8, 9}}, {3, {10, 11, 12, 
   13}}, {4, {14, 15}}, {5, {16, 17}}, {8, {18}}}
You are right in order by partial inclusion. That means that if I have a certain set e.g., {5,6} I am sure that any list of length 3 which contains {5,6,x_}/; x_>6 is a next upper neighbor. I only need to search for the sets of length 3 and I know where they are from the above. But also, any set which has a length larger than 3 and contains a 1, or 2, or 3, or 4 or all is such a next upper neighbor ("before 5"). Such a select is also of limited intent.
I do not know how to formulate that. I now use too many loops (which work, but I do not like that). What I learn from your solution is that I must use patterns. And the use of Subset is also nice. But I would like to have less loops. If possible.
with friendly greetings,
P_ter


  • Prev by Date: Re: Better way to write this
  • Next by Date: Re: Re: Voronoi diagram colours
  • Previous by thread: Re: Find Upper Neighbor in a list
  • Next by thread: Using 'IF' function on 'Lists' in Mathematica 6.01