Travintresserad som jag är håller jag nu på med en liten applikation för eget bruk som ska hjälpa mig med spelandet. Mitt problem är att jag inte får riktigt rätt på en uträkning. Tanken är att jag ska kunna mata in hur mycket pengar jag är villig att satsa och sedan få svaret hur många rader jag kan tippa samt hur hästarna kan fördelas i respektive lopp. Jag har inte en susning om hur det där med hästar, du skulle inte kunna förklara hur det ska fungera? ja eller hur! Hej! Mitt problem är att jag vill ha en exakt uträkning, alla andra kastas... Alla möjligheter?!?! Det kommer bli en jäkla massa fall när man satsat en slant. Det du vill göra kallas permutation och jag kan meddela att du kommer Faktopruppdelning är lösningen på problemet. Att det blir många rader vet jag, jag har sett dem...tro mig... ;-)Algoritm
Ex: inmatning 256 kr
Svar: tippa 128 rader
Streckfördelning: 2-2-2-2-2-2-2 = 128
Problemet är att jag inte hittar någon vettig algoritm för denna uträkning av streckfördelningen. Nå´n som har en på lager?Sv: Algoritm
/JohanSv: Algoritm
Kan lätt kirra biffen åt dig om du talar om hur F** det går till först :-)
Sommarlovet är snart slut :-( // R-musSv: Algoritm
Jag har inte heller någon kolla på trav-tips men det ska nog gå bra ändå
Tydligen så är priset per rad 2 kr så antalet rader är ju lätt.
Antalet rader = (streck i lopp 1)*(streck i lopp 2)*(streck i lopp 3)...*(streck i lopp 7)
Streckfördelningen kommer bli osymetrisk i alla fall då sjunde roten ur antalet rader inte är ett heltal.
rader= (streck per lopp)^7
alltså:
(streck per lopp) = rader^(1/7)
då detta oftast kommer vara ett decimaltal får du avgöra om du ska runda uppåt eller neråt för varje lopp.
exempel:
vill satsa 500:-
rader = 250
250^(1/7)=2.2
sätt 2 i första
sen tar du
(250/2)^(1/6) osv...
är du med?Sv: Algoritm
D.v.s. om jag matar in att jag vill spela 128 rader vill jag att applikationen ska kunna tala om för mig hur många streck det blir i varje lopp. Som jag sa i tidigare exempel 2*2*2*2*2*2*2 = 128 men det skulle lika gärna kunna bli 1*1*1*2*2*4*8 = 128 osv. Jag vill ha ut alla möjligheter.
Det finns fina algoritmer för uträkningar av bästa väg etc. men jag har inte hittat någon som passar för detta.
Det försök jag gjort tycker jag själv är dåligt. Slumpar 7 tal och loopar sedan tills summan stämmer överens med inmatningen. Problem som då uppstår är att det finns tal som inte går att få ihop över 7 slumpade tal vilket ger en oändlig loop. Dessutom tar det stor systemkapacitet för att köra loopen tills ett resultat ges = långa väntetider. Inget kul!Sv: Algoritm
Som tidigare sagt är det även bara få radsummor som kommer generera en lösning.
Men men strategin du bör använda är att loopa igenom varje streckantal per lopp och sedan prova resten. Skulle kunna göras rekursivt.
asså, prova 1 streck i första, räkna ut resten av loppen
prova 2, resten
och resten provas förstås på samma sätt som hela travet.Sv: Algoritm
få en innihelvetes massa rader att gå igenom. Betrakta följande lilla
tankeexpriment.
Du spelar för 2 kronor -- 1*1*1*1*1*1*1*2 Kr = 2 Kr
Du spelar för 4 kronor -- 2*1*1*1*1*1*1*2 Kr = 4 Kr
1*2*1*1*1*1*1*2 Kr = 4 Kr
1*1*2*1*1*1*1*2 Kr = 4 Kr
1*1*1*2*1*1*1*2 Kr = 4 Kr
1*1*1*1*2*1*1*2 Kr = 4 Kr
1*1*1*1*1*2*1*2 Kr = 4 Kr
1*1*1*1*1*1*2*2 Kr = 4 Kr
Du spelar för 6 kronor -- 3*1*1*1*1*1*1*2 Kr = 6 Kr
1*3*1*1*1*1*1*2 Kr = 6 Kr
1*1*3*1*1*1*1*2 Kr = 6 Kr
1*1*1*3*1*1*1*2 Kr = 6 Kr
1*1*1*1*3*1*1*2 Kr = 6 Kr
1*1*1*1*1*3*1*2 Kr = 6 Kr
1*1*1*1*1*1*3*2 Kr = 6 Kr
Du spelar för 8 kronor -- 2*2*1*1*1*1*1*2 Kr = 8 Kr
2*1*2*1*1*1*1*2 Kr = 8 Kr
2*1*1*2*1*1*1*2 Kr = 8 Kr
2*1*1*1*2*1*1*2 Kr = 8 Kr
2*1*1*1*1*2*1*2 Kr = 8 Kr
2*1*1*1*1*1*2*2 Kr = 8 Kr
1*2*2*1*1*1*1*2 Kr = 8 Kr
1*2*1*2*1*1*1*2 Kr = 8 Kr
1*2*1*1*2*1*1*2 Kr = 8 Kr
1*2*1*1*1*2*1*2 Kr = 8 Kr
1*2*1*1*1*1*2*2 Kr = 8 Kr
1*1*2*2*1*1*1*2 Kr = 8 Kr
1*1*2*1*2*1*1*2 Kr = 8 Kr
1*1*2*1*1*2*1*2 Kr = 8 Kr
1*1*2*1*1*1*2*2 Kr = 8 Kr
1*1*1*2*2*1*1*2 Kr = 8 Kr
1*1*1*2*1*2*1*2 Kr = 8 Kr
1*1*1*2*1*1*2*2 Kr = 8 Kr
1*1*1*1*2*2*1*2 Kr = 8 Kr
1*1*1*1*2*1*2*2 Kr = 8 Kr
1*1*1*1*1*2*2*2 Kr = 8 Kr
Antalet kombinationer beräknas enkelt genom P(n,k) där n är antalet
objekt som kan infogas på k platser. I sista exemplet ger detta
P(2,7) och utläses 7 över 2 och beräknas: (7!)/(2!*5!) = (1*2*3*4*5*6*7)/((1*2)*(1*2*3*4*5)) = 21
Antag att vi nu har ett system för 32 kronor: P(4,7) = (1*2*3*4*5*6*7)/((1*2*3*4)*(1*2*3)) = 35 kombinationer. Men då har vi bara tagit hänsyn
till alla kombinationer med 1 resp 2 streck i loppen. Vi måste dessutom ta
hänsyn till fallen där vi har exvis 1*1*1*1*4*2*2 eller 1*1*1*1*1*8*2 för
dessa system blir också att kosta 32 kronor.
Alltså P(4,7) + P(3,7) + P(2,7) = 35+35+21 = 91 olika kombinationer. Här
har vi inte tagit hänsyn till P(1,7) eftersom raden 1*1*1*1*1*1*16 inte är
möjlig. (16 startande hästar i ett lopp).
Tänk nu ett system som kostar 512 Kronor att lämna in det finns MÅNGA
kombinationer.
Jag föreslår att du läser en kvällskurs i kombinatorik så kan du enkelt lösa
ditt problem sedan.
/[peterh]
Utan att garantera att det är som jag sagt ovan. Det var 5 år sedan jag läste kombinatorik.Sv: Algoritm
Sällan mer än 15 häster per lopp va?
Börja då med att testa om antal rader är delbart med 15, om så, dela också dessa faktorer så långt det går.
Testa sedan med 14, 13, osv.
Ex: 60 rader
Börja med att testa delbarhet med 15
60/15=4, fyll på med resten singelstreck => 15, 4, 1, 1, 1, 1, 1 (streck i resp. lopp)
Gå igenom raden och dela upp dessa faktorer på samma sätt.
Börja med halva fakorn för att testa delbarhet och loopa neråt.
Det ger att 15/5=3 => 5, 3, 4, 1, 1, 1, 1
På samma sätt 4/2=2 => 5, 3, 2, 2, 1, 1, 1
Börja om med andra faktorn (4:an)
4/2=2 => 15, 2, 2, 1, 1, 1, 1
Testa sedan med 14 på samma sätt, sedan 13, 12 osv
Du kommer ju att få en del dubbletter men det är ju enkelt att plocka bort dom och bara presentera unika de kombinationernaSv: Algoritm
Är själv inne på att faktoruppdelning är det enda rätta och har börjat en test med det. Men det är en egen lösning och därför undrar jag nu om någon vet namnet på en bra algoritm som gör just faktorsuppdelning?