Creating a Wordscramble using matlab

Hi, working on a review sheet (not for a grade), and I need to create a function that recieves a word and scrambles every letter except for the first and last letters of the word. I've already created a function that scrambles a word entirely in a previous problem, but I can't figure out how to rearrange it to leave the first and last letters unscrambled. Here's my function:
function outword =wordscramble(inword)
len = length(inword);
% Puts random index in the first element
indvec = zeros(1,len);
indvec(1) = randi([1 len]);
% Makes sure every index is only used one time
for i = 2:len
ran = randi([1 len]);
while any(indvec(1:i-1)== ran)
ran = randi([1,len]);
end
indvec(i) = ran;
end
outword = inword(indvec);
end

 Risposta accettata

Ameer Hamza
Ameer Hamza il 21 Apr 2020
Modificato: Ameer Hamza il 21 Apr 2020
Try this
function outword = wordscramble(inword)
outword = inword;
n = numel(inword);
idx = randperm(n-2)+1;
outword(2:end-1) = outword(idx);
end
Example
>> wordscramble('A quick brown fox')
ans =
'Acqoouwb f r iknx'

5 Commenti

Although your function yields the correct answer, my instructor hasn't taught us the randperm function yet, so I wouldn't be able to use that function on a test or homework assignment. Thanks for finding an answer!
Try this version free of randperm:
function outword = wordscramble(inword)
outword = inword;
n = numel(inword);
vec = 2:n-1;
idx = zeros(size(vec));
for i=1:numel(vec)
I = randi([1 numel(vec)], 1);
idx(i) = vec(I);
vec(I) = [];
end
outword(2:end-1) = outword(idx);
end
Test:
>> wordscramble('A quick brown fox')
ans =
'Ao oi bfcnurkwqx'
That should do the trick, thanks for your help!
I am glad to be of help.
You can create your own randperm by sorting any random vector of numbers:
>> str = 'A quick brown fox';
>> [~,idx] = sort(rand(1,numel(str)));
>> str(idx)
ans = uoqbio kAfwcx rn

Accedi per commentare.

Più risposte (0)

Categorie

Prodotti

Release

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by