MathGroup Archive 2002

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

Search the Archive

RE: irritating little problem

  • To: mathgroup at smc.vnet.net
  • Subject: [mg32931] RE: [mg32906] irritating little problem
  • From: "David Park" <djmp at earthlink.net>
  • Date: Wed, 20 Feb 2002 01:26:10 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

Peter,

Here is one solution. Perhaps you will get a better one. This gives you a
list of element values and all the positions of that element value.

IdenticalPositions[list_] :=
  (With[{lst = Transpose[#1]}, {lst[[1,1]], Sort[lst[[2]]]}] & ) /@
   Split[Sort[Transpose[{list, Range[Length[list]]}],
     OrderedQ[{#1[[1]], #2[[1]]}] & ], #1[[1]] === #2[[1]] & ]

list = Array[Random[Integer, {0, 9}] &, 20]
{4, 5, 6, 6, 4, 7, 2, 4, 2, 5, 1, 6, 4, 1, 6, 8, 2, 4, 2, 5}

IdenticalPositions[list]
{{1, {11, 14}}, {2, {7, 9, 17, 19}}, {4, {1, 5, 8, 13, 18}}, {5, {2, 10,
      20}}, {6, {3, 4, 12, 15}}, {7, {6}}, {8, {16}}}

David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/

> From: KIMIC Weijnitz Peter [mailto:micweij at eka.ericsson.se]
To: mathgroup at smc.vnet.net
>
> I have a simple vector
> and I want to find the position of elements that are equal.
>
> I.e I want to test the vector and find all cases of similar elements.
>
> Brute force is not what I want, it can be a long vector.
> Best regards
> Petr W
>



  • Prev by Date: coloured contour plots
  • Next by Date: Re: irritating little problem
  • Previous by thread: Re: irritating little problem
  • Next by thread: Re: irritating little problem