Für diese Aufgabe wird die folgende Datei benötigt:
Diese 36K Textdatei enthält über 5000 Vornamen. Beginne damit, die Namen alphabetisch zu sortieren. Anschließend ermittle den alphabetischen Wert jedes Namens und multipliziere diesen mit der Position in der Liste, um die Punktzahl des Namens zu finden.
Beispiel:
Wenn die Liste alphabetisch sortiert ist, ist COLIN der 938ste Name. Der Wert des Namens ist
. Die Punktzahl ist also
.
Was ist die Summe aller Punktzahlen in der Datei?
Lösung
Durch die Verwendung der Matlab-Funktion “textread” können wir die lowlevel-Routinen umgehen und erhalten direkt einen Vektor mit Namen. Diesen zu sortieren kostet nur einen weiteren Befehl. Anschließend werden die Buchstabenwerte ermittelt, wobei jeweils 64 abgezogen werden muss, damit das A den Wert 1 bekommt.
Matlab-Code:
function euler022
clear
tic
names = textread('names-opt.txt', '%s');
names = sort(names);
n = length(names);
res = 0;
for i = 1 : n
c = char(names(i));
d = double(c) - ones(1, length(double(c))) * 64;
res = res + sum(d) * i;
end
res
toc
end
Ergebnis: 871198282
Rechenzeit: 0.158471 Sekunden


