Match numbers with letters

2 views (last 30 days)
Pax Azx
Pax Azx on 29 Jan 2021
Commented: Mathieu NOE on 1 Feb 2021
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 Comments
Philippe Lebel
Philippe Lebel on 29 Jan 2021
as there are many solutions posted that answer your question, i'd suggest to mark your question as answered.

Sign in to comment.

Accepted Answer

Mathieu NOE
Mathieu NOE on 29 Jan 2021
hello
this code does the trick :
ascii_value = uint32(yourstring); % convert your char / string into corresponding ASCII value
% let's converts ASCII values into values ranging from 1 to 26 (use offsets)
% uppercase letters
ind = find(ascii_value<91);
UL = ascii_value(ind) - 64;
% lowercase letters
ind = find(ascii_value>96);
LL = ascii_value(ind) - 96;
value = sum(UL) + sum(LL); %
  4 Comments
Pax Azx
Pax Azx on 29 Jan 2021
I wrote to you. Thank you if you help.

Sign in to comment.

More Answers (2)

Jan
Jan on 29 Jan 2021
Edited: Jan on 31 Jan 2021
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 Comments
Mathieu NOE
Mathieu NOE on 1 Feb 2021
@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.

Sign in to comment.


Philippe Lebel
Philippe Lebel on 29 Jan 2021
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

Community Treasure Hunt

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

Start Hunting!