blob: 5aab81b91c865ef44e57ce0a939add0824c488c3 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
#include "Response.hpp"
#include "RelationshipHandler.hpp"
using std::string;
using std::vector;
vector<int> Handler::RelationShipHandler::buildCalArr(vector<string> nameV) {
string ges = nameV.at(0) + nameV.at(1);
for (auto &c : ges) {
c = tolower(c);
}
vector<int> v{};
for (auto c1 : ges) {
int count = 0;
for (auto c2: ges) {
if (c1 == c2) {
++count;
}
}
v.push_back(count);
}
return v;
}
int Handler::RelationShipHandler::calculate(vector<string> names) {
sort(names.begin(), names.end());
vector<int> nums = buildCalArr(names);
while (nums.size() > 2) {
vector<int> tempNums{};
for (std::size_t i = 0; i < nums.size() / 2; i++) {
int temp = nums.at(i) + nums.at(nums.size() - i - 1);
if (nums.size() % 2 == 1 && i == nums.size() / 2) {
tempNums.push_back(nums.at(i));
} else {
if (temp < 10) {
tempNums.push_back(temp);
} else {
tempNums.push_back(temp / 10);
tempNums.push_back(temp % 10);
}
}
}
if (nums.size() % 2 == 1) {
tempNums.push_back(nums.at(nums.size() / 2));
}
nums.clear();
for (auto i: tempNums) {
nums.push_back(i);
}
}
return 10 * nums.at(0) + nums.at(1);
}
bool Handler::RelationShipHandler::isAlphaNum(const string &str) {
for (char i: str) {
if (!isalnum(i)) {
return false;
}
}
return true;
}
string Handler::RelationShipHandler::rsStart(vector<string> const &names) {
//vector<string> names = removeDupWord(str);
if (names.size() != 2) {
return "Gib zwei Namen ein Du Troll!";
}
if (!isAlphaNum(names.at(0))) {
return "Seit wann enthælt ein Name Sonderzeichen oder Zahlen? Spüre den Zorn von N!";
}
if (!isAlphaNum(names.at(1))) {
return "Seit wann enthælt ein Name Sonderzeichen oder Zahlen? Spüre den Zorn von N!";
}
int result = calculate(names);
return (names.at(0) + " und " + names.at(1) + " passen nach Angaben von N zu " + std::to_string(result) +
"% zusammen. Gratuliere!\n");
}
Handler::json Handler::relationShipHandler(const string &arguments, const string &session, void *payload) {
(void) payload;
return Response::simple_response(RelationShipHandler::rsStart(tokenizeArguments(arguments)));
}
|