How to write a function to scramble letters?

6 Ansichten (letzte 30 Tage)
computing6
computing6 am 28 Apr. 2015
Beantwortet: Emil Latypov am 2 Apr. 2020
How would I create a function called 'wordScramble', which will randomly scramble letters in a word. The function accepts as an input a string of any length and returns a string with the same length as the input string, but with the characters randomly scrambled.
For example, if I input wordScramble('Hello') and it returned ans= l o e l H

Antworten (3)

Joseph Cheng
Joseph Cheng am 28 Apr. 2015
Bearbeitet: Joseph Cheng am 28 Apr. 2015
You can use the function randperm() to generate a random permutation of the indexes. so then you would use the random permutation to reorder the string array
  7 Kommentare
Joseph Cheng
Joseph Cheng am 28 Apr. 2015
Bearbeitet: Joseph Cheng am 28 Apr. 2015
Okay so... I'll only provide an outline so your function would look something like this.
function scrambled = wordScramble(Oword)
totNum = total number of letters using functions like length() or size();
while totNum does not equal 0
randindex = random number from 1 to totNum;
%using the randindex to add the letter to scrambled.
%using randindex remove that index from Oword.
totNum = totNum-1
end
While this is one way to do it there are multiple ways to accomplish the scrambling using basic Matlab calls. Maybe use rand and loops to perform a mixing like the shell game aka Thimblerig.
I'm not sure if it is the best way but one method is to write out an outline, like i have above, of what you're trying to accomplish.
Image Analyst
Image Analyst am 29 Apr. 2015
I would ask your instructor explicitly if you are, or are not, allowed to use other functions that you've learned about on your own outside of class.

Melden Sie sich an, um zu kommentieren.


Image Analyst
Image Analyst am 29 Apr. 2015
Bearbeitet: Image Analyst am 29 Apr. 2015
Well, try this:
string = 'abcdefghijklmnopqrstuvwxyz'
scrambledString = [];
while length(string) > 0
% Get a random location in string.
index = randi(length(string), 1);
% Append that to scrambledString.
scrambledString = [scrambledString, string(index)];
% Remove that letter from string.
string(index) = [];
end
% Show in the command window.
scrambledString
In the command window:
string =
abcdefghijklmnopqrstuvwxyz
scrambledString =
fcjknpbhwaytorgqzmselvuidx
Hopefully I didn't just do the entire homework question for you or you'd be plagiarizing. If it was homework, you were supposed to add the "homework" tag to it up below your question but I didn't see that.
  1 Kommentar
computing6
computing6 am 29 Apr. 2015
It's not homework! These are practice questions to work through to review for our final, so it's nothing I will be receiving credit for
Thank you!!

Melden Sie sich an, um zu kommentieren.


Emil Latypov
Emil Latypov am 2 Apr. 2020
word = 'fantastic'
newword = wordscramble(word)
function newword = wordscramble(word)
if isempty(word)
newword = '';
else
len = length(word);
k = randi(len);
ch = word(k);
word(k) = [];
newword = [ch wordscramble(word)];
end
end

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by