Jes*_*rie 2 string indexing matlab ascii
我有一个家庭作业计划我遇到了问题.我们基本上必须采用一个词(例如MATLAB),并使用Scrabble规则为函数提供正确的分数值.还有其他的事情,如双字和双点值,但我正在努力的是转换为ASCII.我需要将我的字符串转换为ASCII格式,然后总结这些值.我们只知道字符串的基本知识,我们的老师很无用.我已经尝试将字符串转换为数字,但这并不完全正常.有什么建议?
function[score] = scrabble(word, letterPoints)
doubleword = '#';
doubleletter = '!';
doublew = [findstr(word, doubleword)]
trouble = [findstr(word, doubleletter)]
word = char(word)
gameplay = word;
ASCII = double(gameplay)
score = lower(sum(ASCII));
Run Code Online (Sandbox Code Playgroud)
建立弗朗西斯的帖子,我建议你做的是创建一个查找数组.你当然可以将每个字符转换成它的ASCII等价物,但是我要做的是有一个数组,其中输入是你想要的字符的ASCII码(稍加修改),输出将是点值人物.一旦你找到了这个,你可以总结点数来得到你的最终得分.
为了获得你想要的工作,我现在要在Scrabble中省去双点,双字母,空白瓷砖和整个有趣的东西.通过咨询维基百科,这是Scrabble中遇到的每个字母的点分布.
我们要做的是将您的单词转换为小写以确保一致性.现在,如果你看一下这个字母a
,这就对应于ASCII代码97.你可以通过使用double
我们之前谈到过的函数来验证:
>> double('a')
97
Run Code Online (Sandbox Code Playgroud)
由于字母表中有26个字母,这意味着从7 a
开始z
应该从97到122.由于MATLAB开始将数组索引为1,我们可以做的是将每个字符减去96,这样我们就能够弄清楚这些字符的数字位置从1到26.
让我们从构建查找表开始.首先,我要定义一大堆字符串.每个字符串表示与Scrabble中的每个点相关联的字母:
string1point = 'aeionrtlsu';
string2point = 'dg';
string3point = 'bcmp';
string4point = 'fhvwy';
string5point = 'k';
string8point = 'jx';
string10point = 'qz';
Run Code Online (Sandbox Code Playgroud)
现在,我们可以使用每个字符串,转换为double
,减去96,然后将每个相应的位置分配给每个字母的点.让我们像这样创建我们的查找表:
lookup = zeros(1,26);
lookup(double(string1point) - 96) = 1;
lookup(double(string2point) - 96) = 2;
lookup(double(string3point) - 96) = 3;
lookup(double(string4point) - 96) = 4;
lookup(double(string5point) - 96) = 5;
lookup(double(string8point) - 96) = 8;
lookup(double(string10point) - 96) = 10;
Run Code Online (Sandbox Code Playgroud)
我首先通过zeros
函数创建一个长度为26的数组.然后我找出每个字母的位置,并为每个字母分配它们的点值.
现在,你需要做的最后一件事是取一个字符串,小写以确定,然后将每个字符转换为它的ASCII
等价物,减去96,然后总结这些值.如果我们给...说...... MATLAB:
stringToConvert = 'MATLAB';
stringToConvert = lower(stringToConvert);
ASCII = double(stringToConvert) - 96;
value = sum(lookup(ASCII));
Run Code Online (Sandbox Code Playgroud)
瞧,我们得到:
value =
10
Run Code Online (Sandbox Code Playgroud)
上面代码的最后一行至关重要.基本上,ASCII
将包含一堆索引位置,其中每个数字对应于字母出现在字母表中的数字位置.我们使用这些位置来查找每个字母给我们的点/分数,并总结所有这些值.
双点值和双字出现的下一部分可以在我的其他StackOverflow帖子中找到: