Hviskeleken er en festlek
...
Utdelt kode
Expand |
---|
title | opprett_barnesanger.m |
---|
|
Code Block |
---|
title | opprett_barnesanger.m |
---|
| |
|
Videoforklaring (mm:ss)
Del 1 (mm:ss) | Del 2 (mm:ss) |
---|
| |
| |
som spilles av en gruppe personer, hvor en person starter med å finne på et hemmelig ord. Dette ordet hviskes så til alle deltakerne etter tur, og unøyaktighet i ordoverføringen gjør at ordet gjerne endres underveis. Når alle deltakerne har hørt ordet, ser man hvor forskjellig fra originalordet det siste ordet har blitt.
Du har lyst til å lage en Matlab-simulator av hviskeleken, med et valgfritt antall deltakere. Unøyaktigheten i ordformidlingen mellom deltakerne planlegger du å modellere ved å bytte plassen til to tilfeldige bokstaver i ordet. Du innser at siden alle deltakerne i spillet gjør den samme jobben, kan problemet løses rekursivt. Lag en rekursiv funksjon hviskelek(ord, n)
, som bruker rekursjon til å returnere resultatordet etter n
runder med hvisking.
Videoforklaring (9:45)
Widget Connector |
---|
url | https://www.youtube.com/watch?v=VomU3oquZuE |
---|
|
Løsningsforslag
Expand |
---|
title | Hvis du har prøvd selv, trykk her for å se svaret... |
---|
|
Code Block |
---|
title | tell_ord.m | hviskelek.m |
---|
| function retur = hviskelek(ord, n)
if n == 0
retur = ord;
return;
end
pos1 = randi(length(ord));
pos2 = randi(length(ord));
ord([pos1, pos2]) = ord([pos2, pos1]);
retur = hviskelek(ord, n-1);
end |
|