bullockbefriending bard wrote: > (I apologise in advance for posting something slightly OT, but plead in > mitigation that I'm trying to re-write an old, suboptimal VB6 (erk) > brute-force attack in a shiny, elegant, pythonic manner. I would really > appreciate some ideas about an appropriate algorithmic approach to this > + pointers to any relevant implementations in Python. Along the way, > I'm also trying to get Python into my organisation through the back > door - so a further plea for tolerance in posting this here! :)) > > A single 6 Pick bet looks like this: > RACE1 RACE2 RACE3 RACE4 RACE5 RACE6 > runner1 / runner 2 / runner 3 / runner4 / runner5 / runner6 - $amount > > e.g. we might have: > > 5 / 3 / 11 / 7 / 1 / 9 - $50 (5 to come 1st or 2nd in Race1, 3 to > come first or 2nd in Race 2, etc.) > 7 / 3 / 11 / 7 / 1 / 9 - $50 > 5 / 3 / 11 / 14 / 1 / 9 - $50 > 7 / 3 / 11 / 14 / 1 / 9 - $50 > > The totalizator system allows us to merge or group these four bets as > follows: > > 5 + 7 / 3 / 11 / 7 + 14 / 1 / 9 - $50 ($200 total) > > This method of expressing multiple bets in one line is advantageous > because we may have many thousands of combinations we wish to bet and > only a limited amount of time in which to bet them. > > There are up to 14 horses in each race, so 7,529,536 possible 6 Pick > bets. In practice, one might wish to bet (say)15,000 combinations out > of these 7.5 million. However, it would be very nice to be able to > *optimally* merge (as shown above) these 15,000 combinations so that > they might fit on (say) 2,000 betting tickets instead of trying to > write out 15,000 single tickets. > > To keep things simple, let's assume that all single bets are for the > same amount. (In practice, however, this is not so.) > > Now, it's certainly possible to go about this via brute force > iteration, but I would really appreciate it if anyone with a CS > background could point me toward a smarter plan of attack. I have > perused Skiena's Algorithm Handbook and various websites and can't seem > to find an analogous problem. I'm hoping this is just my ignorance and > that my brief exposition rings a bell for someone here.
I don't understand exactly. Why not merge all your bets into a single line? What constraints exist on how many bets you can put onto one ticket? Do you meant you have some bag full of incoming bets, which you are re-lodging after some merging process? Does this mean you will have one ticket for each amount? Cheers, -T -- http://mail.python.org/mailman/listinfo/python-list