Match numbers with letters
古いコメントを表示
I need to find the name score of the names in a text file.
name point: David --> 4 1 22 9 4 = 4+1+22+9+4 = 40
Thanks for your help.
2 件のコメント
dpb
2021 年 1 月 29 日
What have you tried?
Philippe Lebel
2021 年 1 月 29 日
as there are many solutions posted that answer your question, i'd suggest to mark your question as answered.
採用された回答
その他の回答 (2 件)
Name = 'David';
Num = lower(Name) - 'a' + 1; % 'a' -> 1, 'b' -> 2, ...
Score = sum(Num);
[EDITED] You mention in comments, that you want to do this for "names in a text file". Do the files contain one name per line?
Str = fileread('YourTextFile.txt');
Str(Str == char(13)) = [];
CStr = strsplit(Str, char(10));
Score = zeros(size(CStr));
for k = 1:numel(CStr)
Score(k) = sum(lower(CStr{k}) - 'a' + 1);
end
4 件のコメント
Mathieu NOE
2021 年 1 月 29 日
I cannot fight against Jan, he's really too good ...
Score = sum(Num(Num>0)); % just avoid taking blanks into account
Pax Azx
2021 年 1 月 29 日
Jan
2021 年 1 月 30 日
@Mathieu NOE: I'm very happy that we are fighting together to get the best solution for the question. Seeing different approachs is useful to understand the power of MATLAB.
Mathieu NOE
2021 年 2 月 1 日
@Jan : tx for your nice comments , but I'm not yet to your level - still I like to see how tricky problems can be solved elegantly by knowledgable people like you and others contributors here.
Philippe Lebel
2021 年 1 月 29 日
im late to the show, but here we go anyway...
clear
clc
name = 'david';
a = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
total = 0;
for i=1:length(name)
arr = cellfun(@(x)isequal(x,name(i)),a);
[row,col] = find(arr);
total = total + col
end
カテゴリ
ヘルプ センター および File Exchange で Convert Image Type についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!