MathGroup Archive 1996

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

Search the Archive

Re: Extending Gaylord's Problem

  • To: mathgroup at smc.vnet.net
  • Subject: [mg5030] Re: Extending Gaylord's Problem
  • From: espen.haslund at fys.uio.no (Espen Haslund)
  • Date: Sat, 19 Oct 1996 16:40:33 -0400
  • Organization: Universitet i Oslo
  • Sender: owner-wri-mathgroup at wolfram.com

In article <542t6a$p9f at dragonfly.wolfram.com>, jackgold at math.lsa.umich.edu says...
>
>Hi Group;
....
>        Suppose we have  m  lists labelled  L1, L2, ..., Lm.  We form a       
>new list   Lnew   by taking the maximum of the first entries of the lists 
>L1,..., Lm.  The winning element is removed from the list in which it 
>appeared and the second element of that list becomes its new first 
>element.  In the event of a tie, choose the element from the list with 
>the lowest subscript.  Repeat until  Lnew  contains  r  entries.  (r  is 
>set in advance and cannot be more than the total number of entries in 
>all of the lists.)  When all the elements of a list are gone, the 
>selection proceeds without that list.  It seems to me that this game 
>has a unique solution, but programming it appears somewhat of a 
>challange.  The lengths of the lists need not be equal, but they can 
>always be arranged so by adding sufficiently many  -Infinity  at the 
>end of the shorter lists. 
>
>        Incidentally, Gaylord's Problem is a special case with  m = 2.     
>Simply let  L2 = Reverse[L1]   and   r = Length[L1].
>
>Jack Goldberg  
> 
> 
Hi Jack;

I think maybe this one meets your specifications. 
It is more or less an extension of Allan Hayes 
solution to Gaylord's Problem.
 

takeFirst[data_, n_:-1] :=
Module[{r, k, i, ii, big, lis, ll},
   ll = Map[Length, data];
   If[n == -1, r = Plus @@ ll, r = n];
   ii = Table[1, {Length[data]}];
   Table[
      big = -Infinity;
      Do[
         lis = data[[j]];
         If[(i = ii[[j]]) <= ll[[j]],
            If[lis[[i]] >= big, 
               big = lis[[i]]; k = j
            ]
         ],
      {j, Length[data], 1, -1}];
      ii[[k]] = ii[[k]] + 1;
      big,
   {r}]
];
               
(* data -- {L1, L2, ..., Ln} *)
   
-Espen



  • Prev by Date: STURM-LIOUVILLE
  • Next by Date: Re: InterpolatingFunction
  • Previous by thread: Extending Gaylord's Problem
  • Next by thread: AxesLabel and Frame on mathematica 2.2.3 (win)