...
Expand |
---|
|
Code Block |
---|
| kupong1 = [ true false false;
false true false;
true false false;
true false false;
false false true;
false true false;
false true false;
false true false;
false false true;
true false true;
false false true;
true false false ];
kupong2 = [ false true false;
false true false;
true false false;
false false true;
false true false;
false true false;
true false false;
false true false;
false true false;
false false true;
false false true;
true false false ];
kupong3 = [ true true true;
true true true;
true true true;
true true true;
true true true;
true true true;
true true true;
true true true;
true true true;
true true true;
true true true;
true true true ];
fasit_kupong = [ false true false;
false true false;
true false false;
false false true;
false false true;
false false true;
false false true;
true false false;
false true false;
true false false;
true false false;
false false true ];
assert(all(size(kupong1) == [12, 3]));
assert(all(size(kupong2) == [12, 3]));
assert(all(size(kupong3) == [12, 3]));
assert(all(size(fasit_kupong) == [12, 3]));
|
|
Videoforklaring (mm33:ss08)
Del 1 (8:14) | Del 2 (4:29) | Del 3 (mm8:ss14) | Del 4 (mm12:ss11) |
---|
Widget Connector |
---|
url | https://www.youtube.com/watch?v=3CppbuUFATk |
---|
|
| Widget Connector |
---|
url | https://www.youtube.com/watch?v=3dJdp9RsOaM |
---|
|
| | | Widget Connector |
---|
url | https://www.youtube.com/watch?v=-gYxcc5CavQ |
---|
|
| Widget Connector |
---|
url | https://www.youtube.com/watch?v=SnCna-Ih-ME |
---|
| |
Introduksjon av problemet, om retur av flere parametre, og konstruksjon av funksjonens ytre. | Problemoppdeling, bruk av lokale funksjoner/hjelpefunksjoner til å gjenspeile dette, og løsning av hovedfunksjonen. | | . | Kode for å avgjøre om en kupong er gyldig eller ikke. | Kode for å avgjøre på hvilke rader en kupong treffer en fasit, og test av hele funksjonen. |
Løsningsforslag
Expand |
---|
title | Hvis du har prøvd selv, trykk her for å se svaret... |
---|
|
Code Block |
---|
title | analyser_tippekupong.m |
---|
| function [ er_gyldig, treff, antall_treff ] = analyser_tippekupong(gjetninger, fasit)
er_gyldig = er_kupong_gyldig(gjetninger);
treff = finn_treff(gjetninger, fasit);
antall_treff = length(treff);
end
function retur = er_kupong_gyldig(kupong)
%% Vektorisert løsning
antall_kryss_per_rad = sum(kupong, 2);
er_rad_gyldig = antall_kryss_per_rad == 1;
retur = all(er_rad_gyldig);
%% Uvektorisert kan den skrives slik:
% for i = 1:size(kupong, 1)
% n_kryss = 0;
% for j = 1:size(kupong, 2)
% if kupong(i, j)
% n_kryss = n_kryss + 1;
% end
% end
% if n_kryss ~= 1
% retur = false;
% return;
% end
% end
% retur = true;
end
function retur = finn_treff(kupong, fasit)
%% Vektorisert kan den skrives slik:
% retur = find(any(kupong & fasit, 2));
%% Uvektorisert kode følger.
retur = [];
for i = 1:size(kupong, 1)
for j = 1:size(kupong, 2)
if kupong(i, j) && fasit(i, j)
retur(end+1) = i;
end
end
end
end |
|