MathGroup Archive 2011

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

Search the Archive

Re: 1-liner wanted

  • To: mathgroup at smc.vnet.net
  • Subject: [mg121666] Re: 1-liner wanted
  • From: Ray Koopman <koopman at sfu.ca>
  • Date: Sat, 24 Sep 2011 22:34:46 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <j5hdfe$7j5$1@smc.vnet.net>

On Sep 23, 12:45 am, Kent Holing <K... at statoil.com> wrote:
> Let's assume we have a list of elements of the type {x,y,z}
> for x, y and z integers. And, if needed we assume x < y < z.
> We also assume that the list contains at least 3 such triples.
>
> Can Mathematica easily solve the following problem? To detect at
> least three elements from the list of the type {a,b,.}, {b,c,.}
> and {a,c,.}? I am more intereseted in an elegant 1-liner than
> computational efficient solutions.
>
> Example:
> Givenlist = {1,2,3},{2,4,5],{6,7,8},{1,4,6},{7,8,9},{11,12,13}};
> should return
> {{1,2,3},{2,4,5},{1,4,6}}
>
> Kent Holing,
> Norway

This gives what you want for this particular Givenlist:

Cases[Subsets[Givenlist,{3}],{{a_,b_,_},{b_,c_,_},{a_,c_,_}}]

{{{1,2,3},{2,4,5},{1,4,6}}}

However, you might need to consider permutations:

Cases[Flatten[Permutations/@Subsets[Givenlist,{3}], 1],
      {{a_,b_,_},{b_,c_,_},{a_,c_,_}}]

{{{1,2,3},{2,4,5},{1,4,6}}}

r = Reverse@Givenlist

{{11,12,13},{7,8,9},{1,4,6},{6,7,8},{2,4,5},{1,2,3}}

Cases[Subsets[r,{3}],{{a_,b_,_},{b_,c_,_},{a_,c_,_}}]

{}

Cases[Flatten[Permutations/@Subsets[r,{3}],1],
      {{a_,b_,_},{b_,c_,_},{a_,c_,_}}]

{{{1,2,3},{2,4,5},{1,4,6}}}




  • Prev by Date: A fast way to compare two vectors
  • Next by Date: Re: difference between two commands
  • Previous by thread: Re: 1-liner wanted
  • Next by thread: Re: 1-liner wanted