I tippingsspillet Extra leverer spillere et 5 x 5-brett med unike tall mellom 1 og 75. Det trekkes så 47 unike tall mellom 1 og 75. Man kan vinne en premie med tre forskjellige kriterier:
- Hvis man fyller det innerste 9x9-området av brettet, kalt bilde.
- Hvis man fyller ytterkanten av brettet, kalt ramme.
- Hvis man fyller hele brettet.
Et eksempelbrett er avbildet under.
Vi skal lage en simulator av dette spillet i Matlab, for å analysere våre vinnersjanser. Vi har funnet ut at vi kan representere et resultat-brett som en 5x5 matrise med logiske verdier, hvor en posisjon har verdien true hvis det tilsvarende Extra-brettet hadde en verdi der som ble trukket og false ellers.
Lag en funksjon som tar inn et slikt Extra-brett, og som returnerer true hvis brettet er et vinnerbrett og false hvis det ikke er det.
Del 1 (8:35) | Del 2 (6:38) | Del 3 (6:40) | Del 4 (2:31) |
---|
Widget Connector |
---|
url | https://www.youtube.com/watch?v=sAp6myK9NOQ |
---|
|
| Widget Connector |
---|
url | https://www.youtube.com/watch?v=_DtIm4Ic4L0 |
---|
|
| Widget Connector |
---|
url | https://www.youtube.com/watch?v=cxcUcjXlyj4 |
---|
|
| Widget Connector |
---|
url | https://www.youtube.com/watch?v=yMKretVpSsE |
---|
|
|
Tolkning av oppgaveteksten, oppdeling av problemet i mindre biter, og bruk av funksjoner for å strukturere problemløsningen. | Hvordan finne ut om det indre området i brettet er fylt, vha posisjonsindeksering og funksjonen all. | Hvordan finne ut om det ytre området av brettet er fylt, vha posisjonsindeksering og funksjonen all. | Testing av den endelige løsningen, og konklusjon rundt fremgangsmåte for problemløsning. |
Dette scriptet lager noen variabler som inneholder eksempelbrett man kan teste løsningen sin med.
Expand |
---|
|
Code Block |
---|
| fylt_brett = true(5);
fylt_ramme = fylt_brett;
fylt_ramme(2:4,2:4) = false;
fylt_bilde = ~fylt_ramme;
ufylt_1 = fylt_bilde;
ufylt_1(3, 3) = false;
ufylt_2 = fylt_ramme;
ufylt_2(1, 1) = false;
ufylt_3 = fylt_ramme;
ufylt_3(5, 5) = false; |
|
Expand |
---|
title | Hvis du har prøvd selv, trykk her for å se svaret... |
---|
|
Code Block |
---|
| function retur = er_vinnerbrett(brett)
retur = har_fylt_bilde(brett) || har_fylt_ramme(brett);
end |
Code Block |
---|
| function retur = har_fylt_bilde(brett)
bilde = brett(2:4, 2:4);
kol_har_bare_true = all(bilde);
retur = all(kol_har_bare_true);
end |
Code Block |
---|
| function retur = har_fylt_ramme(brett)
rad1 = brett(1, :);
rad5 = brett(5, :);
kol1 = brett(:, 1);
kol5 = brett(:, 5);
retur = all(rad1) && all(rad5) && all(kol1) && all(kol5);
end |
|