3 svar
77 visningar
Ygolopot är nöjd med hjälpen
Ygolopot 215
Postad: 10 mar 2021 19:22

Generera alla kombinationer från inputen:

Hej, sitter med en programmeringsuppgift som jag funderar lite på:

Jag har inte skrivit någon tenta i programmering innan och känner mig därför osäker på när gränsen för "allt för ineffektiva lösningar kan ge poängavdrag"  är passerad.

Jag har löst (iaf tror jag att jag har löst den) uppgiften på följande sätt och undrar om någon skulle vilja hjälpa mig och komma med förbättringsförslag? 

function words = makeWords(vector)
x = ["ÅÄÖ","AB","CD","EF","GHI","JKL","MNO","PQR","STU","VXY"];
for i = 1:length(vector)
    vector(i) = vector(i)+1;
end
y = [];
for j = 1:length(vector)
    y = [(x(vector(j))), y];
end
y1 = convertStringsToChars(y(1));
y2 = convertStringsToChars(y(2));
y3 = convertStringsToChars(y(3));
y4 = convertStringsToChars(y(4));
subset = [];
for i=1:length(y1)
    for j = 1:length(y2)
        for k = 1:length(y3)
            for l = 1:length(y4)
                x1 = convertCharsToStrings(y1(i));
                x2 = convertCharsToStrings(y2(j));
                x3 = convertCharsToStrings(y3(k));
                x4 = convertCharsToStrings(y4(l));
                subset = [x1+x2+x3+x4, subset];
            end
        end
    end
end
words = subset;
end

Mvh

emilg 478
Postad: 11 mar 2021 09:44

Tycker inte det ser väldigt ineffektivt ut. Du kommer behöva de där fyra looparna på något sätt. 

Har inte satt mig in i det helt, men kanske kan fundera på hur du kan slippa behöva använda convertCharsToStrings längst ner i loopen hela tiden? Går det att göra innan?

Ygolopot 215
Postad: 11 mar 2021 10:44

Tack för svar! Okej, det var mest dom fyra looparna jag var rädd för. Såg att vår lärare använder celler (något jag fortfarande är väldigt obekväm med) och grejen är att jag behöver ha dom som char när jag ska gå loopa igenom för behöver veta längden eftersom den varierar med knapptrycken. Och problemet sen när jag ska addera ihop mina char så blir det inte rätt. 'X' + 'Y' blir 177 i matlab och char(177) blir +/-. Men ska fundera på om det går att ändra! :)

emilg 478
Postad: 11 mar 2021 10:56

Du bör kunna representera varje tecken som en egen sträng innan looparna tar vid? 

Vad gäller Matlab celler så kan jag bara generellt säga att det är möjligt att de kan vara mycket snabbare om de t.ex. är implementerade i C i bakgrunden (men det är ju väldigt specifikt för just Matlab då).

Svara Avbryt
Close