blob: 808e17c4b68b9d14760a38f4380d9b4dbfb95efb (
plain) (
tree)
|
|
#include "RelationshipHandler.h"
#include<string>
#include<vector>
#include <algorithm>
using namespace std;
//Takk til https://www.geeksforgeeks.org/split-a-sentence-into-words-in-cpp/
//fucking c++ does not has a split function like every other programming language in the world
vector<string> removeDupWord(const string& str) {
vector<string> v = {};
string word; // = "";
for(auto x : str) {
if(x == ' ') {
if(word != "/relation") {
v.push_back(word);
}
word = "";
} else {
word += x;
}
}
v.push_back(word);
return v;
}
vector<int> 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) {
//cout << c1 << '\n';
int count = 0;
for(auto c2: ges) {
if(c1==c2) {
++count;
}
}
v.push_back(count);
}
//cout << ges << endl;
/*for(auto i: v) {
cout << i << ' ';
}
cout << v.size() << "\n";*/
return v;
}
int 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);
}
/*for(auto i: nums) {
cout << i << ' ';
}
cout << "\n";*/
}
return 10*nums.at(0)+nums.at(1);
}
bool isAlphaNum(const string& str) {
//if(!std::for_each(str.begin(), str.end(), [](char& c) { if(!std::isalnum(c)) return false;})) return false;
for(char i: str) {
if(!isalnum(i)) {
return false;
}
}
return true;
}
string rsStart(vector<string> 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 " + to_string(result) + "% zusammen. Gratuliere!\n");
}
void RelationshipHandler::onCall(Mongoose::Request& request, Mongoose::StreamResponse& response) {
// only react when command was issued after this boot
std::cout << "/relation was called\n";
response << rsStart(vector<string>{request.get("name1", "Lukas"), request.get("name2", "cpp")});
/*if (messagePtr->date > telegram->getBootDate()) {
log(messagePtr->from->username + ": "+messagePtr->text);
telegram->sendMessage(messagePtr->chat->id, rsStart(messagePtr->text));
}*/
}
|