-
Notifications
You must be signed in to change notification settings - Fork 1
/
object_selector.cpp
92 lines (72 loc) · 2.5 KB
/
object_selector.cpp
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
89
90
91
92
#include <string>
#include <iostream>
#include <vector>
#include <algorithm> // std::any_of
#include <array> // std::array
#include <sstream>
#include <iterator>
#define ARRAY_SIZE(array) (sizeof((array))/sizeof((array[0])))
// MAKE SURE YOU PUT THIS IN YOUR .PRO FILE
// CONFIG += c++11
enum ITEM {
PIKA,
PIN,
WPOT,
BALL};
const std::string pika_words[] = {"mouse", "doll", "plush", "yellow", "toy", "cartoon"};
const std::string pin_words[] = {"orange", "pin", "bowling", "bowl"};
const std::string wpot_words[] = {"watering", "can", "green", "pail", "pale", "bucket", "water"};
const std::string ball_words[] = {"ball", "volleyball", "basketball", "blue", "round", "circular"};
// unsigned int split(const std::string &txt, std::vector<std::string> &strs, char ch);
ITEM find_object(std::string input);
// unsigned int split(const std::string &txt, std::vector<std::string> &strs, char ch)
// {
// unsigned int pos = txt.find( ch );
// unsigned int initialPos = 0;
// strs.clear();
// // Decompose statement
// while( pos != std::string::npos ) {
// strs.push_back( txt.substr( initialPos, pos - initialPos + 1 ) );
// initialPos = pos + 1;
// pos = txt.find( ch, initialPos );
// }
// // Add the last one
// strs.push_back( txt.substr( initialPos, std::min<int>( pos, txt.size() ) - initialPos + 1 ) );
// return strs.size();
// }
ITEM find_object(std::string input){
// Split the string into tokens
std::istringstream iss(input);
std::vector<std::string> v{std::istream_iterator<std::string>{iss},
std::istream_iterator<std::string>{}};
int i = 0;
for (i = 0; i < ARRAY_SIZE(pika_words); i++) {
if (std::find(v.begin(), v.end(), pika_words[i]) != v.end()){
return PIKA;
}
}
for (i = 0; i < ARRAY_SIZE(pin_words); i++) {
if (std::find(v.begin(), v.end(), pin_words[i]) != v.end()){
return PIN;
}
}
for (i = 0; i < ARRAY_SIZE(wpot_words); i++) {
if (std::find(v.begin(), v.end(), wpot_words[i]) != v.end()){
return WPOT;
}
}
for (i = 0; i < ARRAY_SIZE(ball_words); i++) {
if (std::find(v.begin(), v.end(), ball_words[i]) != v.end()){
return BALL;
}
}
std::cout << "uhoh";
return PIKA;
}
int main()
{
std::string input = "Get me the yellow doll";
ITEM thing = find_object(input);
std::cout << thing;
return 0;
}