Hviskeleken er en festlek 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)

Løsningsforslag

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 
  • No labels