-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathproblem 42
More file actions
59 lines (52 loc) · 1.61 KB
/
Copy pathproblem 42
File metadata and controls
59 lines (52 loc) · 1.61 KB
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
/*
The nth term of the sequence of triangle numbers is given by, tn = ½n(n+1); so the first ten triangle numbers are:
1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
By converting each letter in a word to a number corresponding to its alphabetical position and adding these values we form a word value. For example, the word value for SKY is 19 + 11 + 25 = 55 = t10. If the word value is a triangle number then we shall call the word a triangle word.
Using words.txt (right click and 'Save Link/Target As...'), a 16K text file containing nearly two-thousand common English words, how many are triangle words?
*/
#include<iostream>
#include<algorithm>
#include<fstream>
#include<cmath>
#include<string>
#include<vector>
#include <bits/stdc++.h>
#include<sstream>
using namespace std;
bool triangle(string name){
int sumof = 0;
int size = name.size();
char char_array[size];
strcpy(char_array , name.c_str());
for(int alpha = 0; alpha < size; alpha++){
sumof += char_array[alpha] - 'A' + 1;
}
int n = sqrt(2 * sumof);
int check_if = (n * (n + 1)) / 2;
if(check_if == sumof){
return true;
}
return false;
}
vector<string> read_words(const string& filename){
vector<string> value_words;
ifstream read;
string word;
read.open(filename);
while(getline(read, word, ',')){
value_words.push_back(word.substr(1,word.size() -2));
}
std::sort(value_words.begin(), value_words.end());
return value_words;
}
int main() {
int total = 0;
const auto& value_words = read_words("words.txt");
for(string n : value_words){
if(triangle(n)){
total += 1;
}
}
cout << total <<endl;
return 0;
}