Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Kodeforståelsesoppgaver

 

Kodeoppgaver

Oppgave 2.2.6: Extra-spill

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:

  1. Hvis man fyller det innerste 9x9-området av brettet, kalt bilde.
  2. Hvis man fyller ytterkanten av brettet, kalt ramme.
  3. 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
urlhttps://www.youtube.com/watch?v=sAp6myK9NOQ

Del 2

Widget Connector
urlhttps://www.youtube.com/watch?v=_DtIm4Ic4L0

Del 3

Widget Connector
urlhttps://www.youtube.com/watch?v=cxcUcjXlyj4

Utdelt kode

opprett_testbrett.m

Løsningsforslag

Expand
titleHvis du har prøvd selv, trykk her for å se svaret...
Code Block
titleer_vinnerbrett.m
function retur = er_vinnerbrett(brett)
    retur = har_fylt_bilde(brett) || har_fylt_ramme(brett);
end
Code Block
titlehar_fylt_bilde.m
 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
titlehar_fylt_ramme.m
 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