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