2023-08-27, 10:34
  #25
Medlem
Citat:
Ursprungligen postat av kaReri182
En nyfiken fråga. Till vilken nytta vill du skriva ut alla tänkbara tipsrader i ett excelark? Eller är du bara nyfiken på hur man kan göra det?

Jag har tröttnat på att spela på rader som i sammanhanget har mindre chans än jag tror på och istället ha råd med fler rader i mer attraktiva intervall, dvs lämna in enkelrader i en textfil.
Citera
2023-08-27, 10:40
  #26
Medlem
Citat:
Ursprungligen postat av vhe
Anyhoo.

Givet Python-kod:
Kod:
import itertools
import sys

P = {
    k: [int(p) for p in sys.stdin.readline().split()]
    for k in '1X2'
}

rows = itertools.product(*(['1X2'] * 13))

for row in rows:
    percentage = str(sum(P[result][n] for (n, result) in enumerate(row)))
    print(','.join(row + (percentage,)))

Och indata-fil streckprocent (oaktat hur den skapas):
Kod:
63 88 74 41 54 44 60 59 61 17 45 39 49
22 9 18 30 27 24 22 25 22 26 29 27 29
15 3 8 29 19 32 18 16 17 57 26 34 22

Så får du följande:
Kod:
$ python3 /tmp/stryktipset.py < /tmp/streckprocent | head -20
1,1,1,1,1,1,1,1,1,1,1,1,1,694
1,1,1,1,1,1,1,1,1,1,1,1,X,674
1,1,1,1,1,1,1,1,1,1,1,1,2,667
1,1,1,1,1,1,1,1,1,1,1,X,1,682
1,1,1,1,1,1,1,1,1,1,1,X,X,662
1,1,1,1,1,1,1,1,1,1,1,X,2,655
1,1,1,1,1,1,1,1,1,1,1,2,1,689
1,1,1,1,1,1,1,1,1,1,1,2,X,669
1,1,1,1,1,1,1,1,1,1,1,2,2,662
1,1,1,1,1,1,1,1,1,1,X,1,1,678
1,1,1,1,1,1,1,1,1,1,X,1,X,658
1,1,1,1,1,1,1,1,1,1,X,1,2,651
1,1,1,1,1,1,1,1,1,1,X,X,1,666
1,1,1,1,1,1,1,1,1,1,X,X,X,646
1,1,1,1,1,1,1,1,1,1,X,X,2,639
1,1,1,1,1,1,1,1,1,1,X,2,1,673
1,1,1,1,1,1,1,1,1,1,X,2,X,653
1,1,1,1,1,1,1,1,1,1,X,2,2,646
1,1,1,1,1,1,1,1,1,1,2,1,1,675
1,1,1,1,1,1,1,1,1,1,2,1,X,655

Torde gå att importera i Excel som CSV. Att splitta upp den på flera filer is left as an exercise to the reader.

Bemödar mig inte med att tanka upp resultatet någonstans, då jag antar att denna "streckprocent" varierar från vecka till vecka.

Dagens code golf. Nu, kaffe.

Ok, det gick ju bra att installera Python men det var ju inte bara att kopiera in dina koder, alltid är det något som ska ställa till det
Citera
2023-08-27, 10:43
  #27
Medlem
Citat:
Ursprungligen postat av Enterprise
Med liten ändring av vhe:s Python-skript så borde detta kunna åstadkommas (ej testkört):
Kod:
import itertools
import sys

pmin = 500
pmax = 550

P = {
    k: [int(p) for p in sys.stdin.readline().split()]
    for k in '1X2'
}

rows = itertools.product(*(['1X2'] * 13))

for row in rows:
    percentage = sum(P[result][n] for (n, result) in enumerate(row))
    if percentage >= pmin and percentage <= pmax:
        print(','.join(row + (str(percentage),)))

Blir en hel del rader med denna exempeldata:

Kod:
python3 tips.py < indata | wc -l
  194454

Undrar hur man ska lära sig detta program bara, det sägs att det är enkelt men jag undrar det ja, för en som aldrig har programmerat förut.
Citera
2023-08-27, 10:49
  #28
Moderator
Neksnors avatar
Citat:
Ursprungligen postat av Mysadname
ja, egentligen behövs inte streckprocenterna utan endast summan av de, per rad.
Dock är jag inte med på hur du menar med
"Om listan är full jämförs raden med den rad i listan som är sämst. Den sämsta av de raderna försvinner."

Hade du skrivit utanför mitt valda intervall med Min - Max för summan hade jag förstått
Men visst, menar du de över och under intervallet som sämst så blir det ju rätt.

Eftersom man tyvärr behöver kunna gå igenom alla tänkbara rader då streckprocenterna är olika för varje omgång och man måste begränsningarna för godkända rader på något sätt innan man skriver ut de i excel, pga för många tänkbara rader eller för lite plats i excel så är just streckprocent summan en bra grej.
Jag bara utgick från att de rader som har högt procentsumma är mest attraktiva. Att då begränsa sig till ett intervall verkar dumt. Ska man spel 100 rader så borde de 100 raderna med högst summa vara mest intressanta. Antar jag.
Och den fulla listan handlar just om de bästa raderna. Vill man ha 100 rader så rymmer listan de 100 raderna med högst summa.
Citera
2023-08-27, 10:53
  #29
Medlem
Citat:
Ursprungligen postat av Mysadname
Jag har tröttnat på att spela på rader som i sammanhanget har mindre chans än jag tror på och istället ha råd med fler rader i mer attraktiva intervall, dvs lämna in enkelrader i en textfil.

Då kanske du kan förklara vad du menar med "rader som i sammanhanget har mindre chans" resp "attraktiva intervall". I mina ögon verkar din ide minst sagt märklig.
Citera
2023-08-27, 10:58
  #30
Medlem
Citat:
Ursprungligen postat av Neksnor
Jag bara utgick från att de rader som har högt procentsumma är mest attraktiva. Att då begränsa sig till ett intervall verkar dumt. Ska man spel 100 rader så borde de 100 raderna med högst summa vara mest intressanta. Antar jag.
Och den fulla listan handlar just om de bästa raderna. Vill man ha 100 rader så rymmer listan de 100 raderna med högst summa.

Jag, skulle nog säga att det är dumt att spela de rader med högst summa, det är de raderna som ger sämst utdelning, t.ex. raden med bara favoriter som igår hade summan 734, har det ens hänt hittills att det blivit det, om det har hänt så har den raden inte gett över 100:-, likaså alla rader med alltför låg summa vill man inte heller få med då de är alldeles för många och var och en har för liten chans att gå in.

Igår var det 7 favoriter som vann och helt rätt streckprocentsumma och drygt 300 tusen för 13 rätt.
Citera
2023-08-27, 10:59
  #31
Moderator
Neksnors avatar
Citat:
Ursprungligen postat av Mysadname
Ok, det gick ju bra att installera Python men det var ju inte bara att kopiera in dina koder, alltid är det något som ska ställa till det
Det där med "stryktips.py" och "tmp" är namn och sökvägar. Det handlar alltså om vad du väljer att kalla och placera filerna på din dator.
P, p, k, row, rows, n, result, percentage och kanske något mer är bara mer eller mindre godtyckligt valda namn. Du kan ändra "row" till "mamma" om du vill.
Börja med att köra lite vanliga nybörjaruppgifter i python så att du får lite koll på kopplingen mellan koden och resultatet.
https://wiki.python.org/moin/BeginnersGuide/Programmers
Citera
2023-08-27, 11:01
  #32
Medlem
Enterprises avatar
Så här scrapar du datan från Europatipset: https://spela.svenskaspel.se/europatipset
Gå till sidan.

Tryck på F12 för att gå in i utvecklarverktyg. Gå in på konsollen/console.
Skriv in följande kod:
[PHP]let coupon = document.querySelector("#tipsen > div.lb-modal-hidden-content > div:nth-child(3) > div > div > div.paper.paper-sport.elevation-100.coupon > div")
;

let rows = coupon.querySelectorAll("div.tipsinfo>div:first-child div.tipsinfo-statistics-grid");

let signs=[];
for (let i=0; i<=2; i++)
signs[i]=[];

for (row of rows){
let stats = row.textContent.split("%").slice(0,-1)
for (let i=0; i<=2; i++)
signs[i].push(stats[i]);
}
for (sign of signs)
console.log(sign.join(" "));[/PHP]

Du kommer nu få utskrivet i konsollen procentsatserna som du använder som indata till vhe:s kod.
Just nu:
Kod:
43 18 17 61 64 84 76 25 54 85 28 58 58
26 26 23 24 21 11 17 26 26 10 31 26 25
31 56 60 15 15 5 7 49 20 5 41 16 17

Tyvärr gick det inte enkelt att scrapa datan direkt från Python-skriptet eftersom sidan är konstruerad så att den renderas i klienten och sidkällan är svår att hitta datan i.
__________________
Senast redigerad av Enterprise 2023-08-27 kl. 11:03.
Citera
2023-08-27, 11:03
  #33
Moderator
Neksnors avatar
Citat:
Ursprungligen postat av Mysadname
Jag, skulle nog säga att det är dumt att spela de rader med högst summa, det är de raderna som ger sämst utdelning, t.ex. raden med bara favoriter som igår hade summan 734, har det ens hänt hittills att det blivit det, om det har hänt så har den raden inte gett över 100:-, likaså alla rader med alltför låg summa vill man inte heller få med då de är alldeles för många och var och en har för liten chans att gå in.

Igår var det 7 favoriter som vann och helt rätt streckprocentsumma och drygt 300 tusen för 13 rätt.
Då fattar jag. Har man väl skapat listan med alla önskade rader så kan man vid behov ganska lätt stycka upp listan så att man får önskat antal rader.
Citera
2023-08-27, 11:08
  #34
Medlem
Citat:
Ursprungligen postat av kaReri182
Då kanske du kan förklara vad du menar med "rader som i sammanhanget har mindre chans" resp "attraktiva intervall". I mina ögon verkar din ide minst sagt märklig.

säg så här, en genomsnittlig favorit har 50% vinstchans, vi har 13 alternativ, 1 i varje match, mest streckade tipstecken, 13 x 50% =650%, dela det med hundra så blir det 6,5 st. favoriter vinner i genomsnitt, igår blev det 7 st., nu varierar det rätt mycket mellan omgångarna, men generellt, alla rader med fler fler favoriter ger sämre utdelning, och färre favoriter ger högre utdelning.

Precis samma sak med streckprocenten, igår hade favoritraden 734 i summa och minst streckade per match var summan 241, och enkelt kan man väl säga att extremsummorna uppe och nere vill man inte få med av de olika anledningar jag nämnde högre upp.
Citera
2023-08-27, 11:13
  #35
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Mysadname
Undrar hur man ska lära sig detta program bara, det sägs att det är enkelt men jag undrar det ja, för en som aldrig har programmerat förut.
Du behöver inte lära dig det. Det är färdigt att använda, som vhe beskrev.
Du får spara koden (jag kallar den tips.py) och indata (procentsatserna jag kallar dessa indata.txt) som text-filer i t.ex. din hem-folder.
Sen går du till samma folder och kör det bara:
Kod:
python3 tips.py < indata.txt
Med min lilla ändring så får du då utspottat alla rader som finns inom angivet intervall (500-550).

Lite mer användbart är att spotta ut (de över 200K) raderna till en csv-fil:
Kod:
python3 tips.py < indata.txt > tips.csv
__________________
Senast redigerad av Enterprise 2023-08-27 kl. 11:16.
Citera
2023-08-27, 11:19
  #36
Medlem
Citat:
Ursprungligen postat av Enterprise
Du behöver inte lära dig det. Det är färdigt att använda, som vhe beskrev.
Du får spara koden (jag kallar den tips.py) och indata (procentsatserna jag kallar dessa indata.txt) som text-filer i t.ex. din hem-folder.
Sen går du till samma folder och kör det bara:
Kod:
python3 tips.py < indata.txt
Med min lilla ändring så får du då utspottat alla rader som finns inom angivet intervall (500-550).

Lite mer användbart är att spotta ut (de över 200K) raderna till en csv-fil:
Kod:
python3 tips.py < indata.txt > tips.csv

Men jag får ju bara upp en svart ruta med texten:

Python 3.11.5 (tags/v3.11.5:cce6ba9, Aug 24 2023, 14:38:34) [MSC v.1936 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

Och där var det ju inte bara att kopiera in koden, eller är det inte rätt jag installerat ?
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in