...
Sannhetsmatriser eller logiske matriser skal benyttes i denne oppgaven. Disse er på formen: sannhetsListe = (liste)(betingelse)En sannhetsmatrise inneholder sannhetsverdier.
Feks: fiveOrMore = [1,2,3,4,5,6,7,8]>=5;
Gir: [0,0,0,0,1,1,1,1].
Små deloppgaver kan skrives i et skript.
...
Cheryl skal ta et semester i Singapore og er på jakt etter en plass å bo. Hun har høydeskrekk og vil derfor ikke bo høyt oppe, men pga trafikkstøy kan hun ikke bo for lavt heller. Hun inngår et kompromiss med seg selv og finner ut at 20-50m er bra intervall. Utleienettsiden i Singapore lar Carol
eksportere kart over alle hybler med høyde. Resultatet er matrisen underHun får følgende matrise over høyden på hyblene:HTML Comment hidden true Cheryl/Carol er en Archer referanse
Code Block language delphi dataflatHeight = [[32,31,27,21,13,6,6,13,21,27,31] [49,46,41,32,23,13,13,23,32,41,46] [66,63,55,44,32,21,21,32,44,55,63] [86,81,69,55,41,27,27,41,55,69,81] [106,97,81,63,46,31,31,46,63,81,97] [128,106,86,66,49,32,32,49,66,86,106] [106,97,81,63,46,31,31,46,63,81,97] [86,81,69,55,41,27,27,41,55,69,81] [66,63,55,44,32,21,21,32,44,55,63] [49,46,41,32,23,13,13,23,32,41,46] [32,31,27,21,13,6,6,13,21,27,31]];
flatHeight plottet ved hjelp av vedlagt fil
Lag funksjonen
isBetween(data, lower, upper)
som returnerer en sannhetsmatrise for de elementene i data som ligger mellomlower
ogupper
. Dette gjøres ved å finne sannhetsmatrisen for data med lower, så med upper og til slutt sammenligne disse to matrisene.
Om matrisen plottes Dersom man kjører isBetween(flatHeight, 20, 50), vil den returnerte matrisen se slik ut:
d)
Code Block language delphi ans = 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1
d)
Opprett en ny matrise, filteredHeight, hvor elementene har verdi 0 hvis tilsvarende element i data er utenfor Cheryls ønskede bohøyde. Ellers skal elementene ha samme verdi som i data.
Under er det vist hvordan matrisen filteredHeight skal se ut.
Code Block language delphi filteredHeight = 32 31 27 21 0 0 0 0 21 27 31 49 46 41 32 23 0 0 23 32 41 46 0 0 0 44 32 21 21 32 44 0 0 0 0 0 0 41 27 27 41 0 0 0 0 0 0 0 46 31 31 46 0 0 0 0 0 0 0 49 32 32 49 0 0 0 0 0 0 0 46 31 31 46 0 0 0 0 0 0 0 41 27 27 41 0 0 0 0 0 0 44 32 21 21 32 44 0 0 49 46 41 32 23 0 0 23 32 41 46 32 31 27 21 0 0 0 0 21 27 31
I et skript: Legg inn matrisen, lower og upper. Lagre resultatet fra isBetween(data,lower,upper) i variabelen goodHeight.
filteredHeight plottet med plotter-funksjonen
Det ønskes å behandle data slik at man kun har høyden på de husene Cheryl vil bo i. Det vil si, at man skal elementvis gange data med goodHeight.
Fra dette resultatet kan man ved vedlagt fil få følgende figur: