Buchstabenwerte addieren (Zeichenketten)
Schreibe ein Programm, das aus einer beliebigen Zeichenkette, den Gesamtwert aller darin enthaltenen Buchstaben aufsummiert. Der Wert eines Buchstabes ergibt sich dabei aus seiner Position im Alphabet, also A=1, B=2 ... Z=26.
Groß- und Kleinschreibung spielt dabei keine Rolle.
Welchen Wert hat die folgende Zeichenkette?
'slkdfjb543--..wdwnsmwqpieo fubwicbxoiwkewdioefncwbviwrc., fueodoqiewncvnwofuwb'
0 Kommentare
10 Lösung(en)
import re
string='slkdfjb543--..wdwnsmwqpieo fubwicbxoiwkewdioefncwbviwrc., fueodoqiewncvnwofuwb'
ABC={chr(i):i-96 for i in range(97,123)}
print(sum([ABC[a] for a in re.findall('[a-z]',string.lower())]))
Lösung von: rob ert (tub)
s="slkdfjb543--..wdwnsmwqpieo fubwicbxoiwkewdioefncwbviwrc., fueodoqiewncvnwofuwb"
print(sum((ord(c)-ord('a')+1 for c in s.lower() if 'a' <= c <= 'z')))
Lösung von: Name nicht veröffentlicht
function letterSum(str) {
let sum = 0;
str = str.toUpperCase().replace(/[^A-Z]/g, '');
for (let i = 0; i < str.length; i++)
sum += str.charCodeAt(i) - 64;
return sum;
}
let w = `slkdfjb543--..wdwnsmwqpieo fubwicbxoiwkewdioefncwbviwrc., fueodoqiewncvnwofuwb`;
console.log( letterSum(w) );
Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)
// NET 7.x | C# 11.x | VS-2022
var txt = "slkdfjb543--..wdwnsmwqpieo fubwicbxoiwkewdioefncwbviwrc., fueodoqiewncvnwofuwb";
Console.WriteLine(txt.ToLower().Where(char.IsLetter).Select(x => x - 96).Sum());
Lösung von: Jens Kelm (@JKooP)
// C++ 14 | VS-2022
#include <iostream>
#include <algorithm>
#include <numeric>
auto sum_of_char_values(const std::string& txt) {
auto str{ txt };
std::transform(str.begin(), str.end(), str.begin(), ::tolower);
return std::accumulate(str.begin(), str.end(), 0, [](auto a, auto b) { return a + (std::isalpha(b) ? (b - 96) : 0); });
}
int main() {
const std::string txt{ "slkdfjb543--..wdwnsmwqpieo fubwicbxoiwkewdioefncwbviwrc., fueodoqiewncvnwofuwb" };
std::cout << sum_of_char_values(txt) << "\n";
}
Lösung von: Jens Kelm (@JKooP)
// NET 7.x | C# 11.x | VS-2022
using System.Text.RegularExpressions;
int SumOfCharValues2(string txt) {
var sum = 0;
foreach (var c in txt) {
if (char.IsAsciiLetterLower(c)) sum += c - 96;
else if (char.IsAsciiLetterUpper(c)) sum += c - 64;
}
return sum;
}
int SumOfCharValues3(string txt) => new Regex(@"[a-z]").Matches(txt.ToLower()).Select(x => x.Value[0] - 96).Sum();
Lösung von: Jens Kelm (@JKooP)
// C++ 14 | VS-2022
#include <iostream>
auto sum_of_char_values2(const std::string& txt) {
auto sum{ 0 };
for (const auto& c : txt) {
if (c >= 'A' && c <= 'Z') sum += (c - 64);
else if (c >= 'a' && c <= 'z') sum += (c - 96);
}
return sum;
}
int main() {
const std::string txt{ "slkdfjb543--..wdwnsmwqpieo fubwicbxoiwkewdioefncwbviwrc., fueodoqiewncvnwofuwb" };
std::cout << sum_of_char_values2(txt) << "\n";
}
Lösung von: Jens Kelm (@JKooP)
// C++ 14 | VS-2022
#include <iostream>
#include <numeric>
int main() {
const std::string str{ "slkdfjb543--..wdwnsmwqpieo fubwicbxoiwkewdioefncwbviwrc., fueodoqiewncvnwofuwb" };
const auto sum{ std::accumulate(str.begin(), str.end(), 0, [](auto a, auto b) { return a + (std::isalpha(b) ? (std::islower(b) ? (b - 96) : (b - 64)) : 0); }) };
std::cout << sum << "\n";
}
Lösung von: Jens Kelm (@JKooP)
' VBA
Function CharIsAlpha(ByVal s$)
tmp$ = Asc(Left(s, 1))
CharIsAlpha = tmp > 96 And tmp < 123
End Function
Function SumOfCharValues(txt$)
Dim sum%
txt = LCase(txt)
For i% = 1 To Len(txt)
tmp$ = Mid(txt, i, 1)
If CharIsAlpha(tmp) Then
sum = sum + (Asc(tmp) - 96)
End If
Next i
SumOfCharValues = sum
End Function
Sub Main()
Const txt As String = "slkdfjb543--..wdwnsmwqpieo fubwicbxoiwkewdioefncwbviwrc., fueodoqiewncvnwofuwb"
Debug.Print SumOfCharValues(txt)
End Sub
Lösung von: Jens Kelm (@JKooP)
#include <stdio.h>
#include <ctype.h>
#include <string.h>
unsigned(*fun_ptr)(char);
unsigned chr2num(char chr) {
return isalpha(chr) ? (islower(chr) ? chr - 96 : chr - 64) : 0;
}
int accumulate(const char* string, unsigned begin, unsigned end, int init, unsigned(*fun_ptr)(char)) {
unsigned sum = init;
for (unsigned i = begin; i <= end; ++i)
sum += (*fun_ptr)(string[i]);
return sum;
}
int main() {
const char* str = "slkdfjb543--..wdwnsmwqpieo fubwicbxoiwkewdioefncwbviwrc., fueodoqiewncvnwofuwb";
int res = accumulate(str, 0, strlen(str), 0, &chr2num);
printf("%i", res);
}
Lösung von: Jens Kelm (@JKooP)
Verifikation/Checksumme:
840
Aktionen
Neue Lösung hinzufügen
Bewertung
Durchschnittliche Bewertung: