Valgfri oppgave uke 8 (endret 11/10)

Dette er en fortsettelse fra forrige ukes innleveringsoppgave, som du må ha gjort for at denne oppgaven skal gi mening. Har du ikke gjort denne oppgaven, bør du heller begynne med den og se hvor langt du kommer.

Oppgave 5

Filnavn: kamp.py og test.py

Denne oppgaven er en del av en oppgave som var frivillig på innleveringen. Hvis du ikke gjorde oppgaven eller ikke fikk den til, kan du få hjelp underveis. Hvis du har fått til denne, kan du gå rett på oppgave 6.

I denne oppgaven vil du både endre på klassen Kamp og teste endringene du gjør etterpå. At denne oppgaven er frivillig betyr at innleveringen egentlig er stor nok uten denne oppgaven, men om du har lyst og tid, så vil du få tilbakemelding på denne også.

Vel er det mange tilfeldigheter i fotball, men alt er ikke helt tilfeldig - vi skal nå utvide spill-metoden til å bli mer realistisk ved å ta hensyn til følgende:

Oppgave 6 (valgfri konkurranse)

Filnavn: DELTAKERNAVN.py

Vi har brukt antall mål for og imot etter de 24 første serierundene til å gi lagene følgende antall mål scoret mot et gjennomsnittlig lag (rett og slett gjennomsnittet per kamp for alle lagene, som vi antar er nært nok så langt uti sesongen):

# dette er listen over lag som skal spille (representert ved Lag-objekter)
lagliste = []
lagliste.append(Lag("Bodø/Glimt  ", 2.6, 1.2))
lagliste.append(Lag("Brann       ", 1.8, 1.1))
lagliste.append(Lag("HamKam      ", 1.4, 2.1))
lagliste.append(Lag("Haugesund   ", 0.9, 1.4))
lagliste.append(Lag("Molde       ", 2.2, 1.1))
lagliste.append(Lag("Lillestrøm  ", 1.7, 1.5))
lagliste.append(Lag("Odd         ", 1.2, 1.3))
lagliste.append(Lag("Rosenborg   ", 1.3, 1.7))
lagliste.append(Lag("Sandefjord  ", 1.5, 1.9))
lagliste.append(Lag("Sarpsborg 08", 1.9, 1.6))
lagliste.append(Lag("Stabæk      ", 1.0, 1.5))
lagliste.append(Lag("Strømsgodset", 1.1, 1.3))
lagliste.append(Lag("Tromsø      ", 1.5, 1.0))
lagliste.append(Lag("Viking      ", 2.1, 1.4))
lagliste.append(Lag("Vålerenga   ", 1.4, 1.7))
lagliste.append(Lag("Aalesund    ", 0.8, 2.2))

La alle disse lagene spille 100 000 kamper hjemme (og like mange borte) mot et gjennomsnittlig lag, som vi definerer slik:

# Gjennomsnittlig 3.04 mål per kamp gjør at et gjennomsnittlig lag blir slik:
snitt = Lag("SNITT", 1.52, 1.52)

Koden du leverer skal være klassen Kamp, kopiert til en ny fil med ditt navn.

Målet her er å finjustere spill()-metoden i klassen Kamp slik at alle lagene faktisk (i snitt) slipper inn så nært som mulig riktig antall mål mot det gjennomsnittlige laget. Du får høyere poengsum jo nærmere du kommer for så mange av lagene som mulig.

Oppgave 7 (valgfri konkurranse)

Filnavn: DELTAKERNAVN.py

Det finnes mange løsninger på oppgave 6 som gir riktig antall mål for og imot, i snitt, for alle lagene. Forskjellen på disse løsningene er hvor stor hjemmefordelen er. Videreutvikle spill()-metoden fra oppgave 6 slik at når det gjennomsnittlige laget snitt spiller mot seg selv, blir det hjemmeseier (ikke borteseier eller uavgjort) 50% av gangene. Du skal fortsatt ha gjennomsnittlig antall mål på 3.04. Hvem klarer å komme nærmest en hjemmefordel som gir sier 50% av gangene til to gjennomsnittlige lag?

Oppgave 8 (valgfri konkurranse)

Filnavn: DELTAKERNAVN.py

Kombinér oppgave 6 og 7: