Kodeforståelsesoppgaver
Kodeoppgaver
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.
Image Added
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.
Videoforklaring
Del 1
Widget Connector |
---|
url | https://www.youtube.com/watch?v=sAp6myK9NOQ |
---|
|
Del 2
Widget Connector |
---|
url | https://www.youtube.com/watch?v=_DtIm4Ic4L0 |
---|
|
Del 3
Widget Connector |
---|
url | https://www.youtube.com/watch?v=cxcUcjXlyj4 |
---|
|
Utdelt kode
opprett_testbrett.m
Løsningsforslag
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 |
|