1 svar
708 visningar
indhelpmathematica 34
Postad: 7 mar 2019 23:52

Python Projekt

Hej behöver hjälp med att börja med denna uppgift. Vet inte hur jag ska lägga upp hela koden. Vad ska jag börja med klasser? Metoder? Kan ni ge ett  schema  över hur jag ska  skriva koden? Typ  ,

(1) Först skapar du en klass

(2) sedan några metoder för att hantera för att göra vissa saker

(3) skapa det hära för att hantera det fallet osv.

 

I den här uppgiften ska du skriva ett Python-program som testar två olika strategier för att spela Kalaha.
Regler för Kalaha

Det finns många varianter på Kalaha, men vi ska använda de som verkar etablerade i Sverige. Spelbrädet har två sidor, en för var spelare, och på var sida finns 6 mindre skålar. Dessutom finns det två större skålar som fungerar som bon. Skålen till höger om en spelare är dennes bo. Man förbereder spelet genom att lägga exakt k kulor i varje liten skål. Ditt program ska kunna spela med k ∈{3,4,5,6}. Spelarna turas om att dra. I varje drag väljer spelaren en liten skål från sin sida och tar upp kulorna från den och lägger en kula i varje följande skål, gåendes motsols, tills kulorna tar slut. Om kulorna räcker för alla små skålar lägger man en kula i sitt bo och fortsätter motsols över till motståndarens sida. Om en spelare lägger sista kulan i boet så får hen göra ett extra drag. Spelet är slut då en spelare inte längre har kulor att göra ett drag med. De kulor som finns kvar i småskålarna övergår till den spelare som gjorde sista draget.
Experimentet Valet av skål att ta kulorna ifrån är naturligtvis mycket viktigt och avgör spelet. Din uppgift är att undersöka två strategier. • Strategi 1: Välj skålen slumpvist, med likformig fördelning över icketomma skålar, dvs sannolikheten för skål i är 1/k om k av spelarens skålar har kulor i sig. • Strategi 2: Välj den skål som har flest kulor. Om det valet inte är entydigt, så väljer man skål slumpvist och likformigt bland de som har flest kulor. Du ska skriva ett program som simulerar upprepade partier Kalaha och provar effekten av val av strategi. Vilken spelare har en fördel av att börja? Vilken strategi är bäst? • Vilken spelare vinner om båda spelar enligt strategi 1? • Vilken spelare vinner om båda spelar enligt strategi 2? • Vilken spelare vinner om spelare 1 använder strategi 1 och spelare 2 strategi 2?
1
Figur 1: Ett klassiskt Kalaha-bräde.
• Vilken spelare vinner om spelare 1 använder strategi 2 och spelare 2 strategi 1?
Skriv ett program som kan utföra upprepade experiment med olika kombinationer av strategier. Användaren ska kunna välja vilket experiment som ska göras och hur många partier som ska spelas. Utdata ska ges som ett enkelt litet textmeddelande samt ett stapeldiagram som visar utfallet av experimentet (se figur 2).
Exempelkörning En körning av ditt program ska se ut ungefär så här:
Vilken strategi ska spelare 1 ha? 1 Vilken strategi ska spelare 2 ha? 1 Hur många kulor i varje skål (3 till 6)? 6 Hur många partier vill du simulera? 100
Spelare 1 vann i 67 partier av 100. En figur som visar utfallet är sparat i filen "utfall.pdf"
Krav • En strategi ska vara generellt implementerad, med hjälp av en funktion eller metod. Samma strategi får inte vara kodad två gånger. • Programmet ska använda matplotlib för att visualisera resultatet av programmet med hjälp av en PDF-fil. Programmet ska inte presentera ett fönster med figuren, utan måste generera en PDF-fil. • Det får inte finnas diagnostiska utskrifter från varje parti, bara en sammanfattning av resultaten, som i exempeldialogen ovan.
Glöm inte de gemensamma kraven för alla projekt och betygskriterierna!
2
1 2 Spelare
0
10
20
30
40
50
60
70
Vinster
Kalaha-experiment
Figur 2: Visualisering av ett Kalaha-experiments utfall med hjälp av matplotlib.

 

fredrikd2 3
Postad: 27 mar 2023 15:19 Redigerad: 27 mar 2023 19:47

Detta är ett litet projekt, d v s en större uppgift. För att enklare kunna förstå vad som behöver göras kan det vara lämpligt att dela upp uppgiften i flera delar, helst så pass detaljerat att varje del blir nästan trivial att lösa. Detta knep är generellt och bör alltid övervägas när en uppgift eller ett problem känns övermäktigt i någon mån alternativ att det inte är trivialt att lösa. Att använda papper penna underlättar för mig så att jag slipper hålla för många detaljer i huvudet samtidigt.

Objektorientering är bra om man behöver flera instanser av likadana ”saker”, där saken definieras som en klass, vilket kan jämföras med en egendefinietad datatyp. Om saken dessutom har egenskaper/tillstånd kan de definieras som attribut till klassen. Om saken ska kunna ombes att utföra saker kan detta definieras som metoder i klassen. Läs gärna på lite övergripande om objektorienterad analys och design.

Svara
Close