diff options
Diffstat (limited to 'challenge-240/paulo-custodio/cpp')
| -rw-r--r-- | challenge-240/paulo-custodio/cpp/ch-1.cpp | 84 | ||||
| -rw-r--r-- | challenge-240/paulo-custodio/cpp/ch-2.cpp | 53 |
2 files changed, 137 insertions, 0 deletions
diff --git a/challenge-240/paulo-custodio/cpp/ch-1.cpp b/challenge-240/paulo-custodio/cpp/ch-1.cpp new file mode 100644 index 0000000000..723d518db2 --- /dev/null +++ b/challenge-240/paulo-custodio/cpp/ch-1.cpp @@ -0,0 +1,84 @@ +/* +Challenge 240 + +Task 1: Acronym +Submitted by: Mohammad S Anwar + +You are given an array of strings and a check string. + +Write a script to find out if the check string is the acronym of the words in +the given array. +Example 1 + +Input: @str = ("Perl", "Python", "Pascal") + $chk = "ppp" +Output: true + +Example 2 + +Input: @str = ("Perl", "Raku") + $chk = "rp" +Output: false + +Example 3 + +Input: @str = ("Oracle", "Awk", "C") + $chk = "oac" +Output: true +*/ + +#include <algorithm> +#include <cctype> +#include <iostream> +#include <string> +#include <vector> +using namespace std; + +void usage(void) { + cerr << "Usage: ch-1 -str s1 s2 s3 ... -chk check" << endl; + exit(EXIT_FAILURE); +} + +int main(int argc, char* argv[]) { + vector<string> strs; + string check, inits; + + // parse args + int i = 1; + while (i < argc) { + string arg = argv[i]; + if (arg=="-str") { + i++; + while (i < argc && argv[i][0] != '-') { + strs.emplace_back(argv[i]); + i++; + } + } + else if (arg=="-chk") { + i++; + if (i < argc) { + check = argv[i]; + i++; + } + } + else { + usage(); + } + } + if (strs.empty() || check.empty()) + usage(); + + // process + transform(check.begin(), check.end(), check.begin(), ::tolower); + + for (size_t i = 0; i < strs.size(); i++) { + inits.push_back(tolower(strs[i].front())); + } + + if (inits==check) { + cout << "true" << endl; + } + else { + cout << "false" << endl; + } +} diff --git a/challenge-240/paulo-custodio/cpp/ch-2.cpp b/challenge-240/paulo-custodio/cpp/ch-2.cpp new file mode 100644 index 0000000000..9487ed0fea --- /dev/null +++ b/challenge-240/paulo-custodio/cpp/ch-2.cpp @@ -0,0 +1,53 @@ +/* +Challenge 240 + +Task 2: Build Array +Submitted by: Mohammad S Anwar + +You are given an array of integers. + +Write a script to create an array such that new[i] = old[old[i]] where 0 <= i < new.length. +Example 1 + +Input: @int = (0, 2, 1, 5, 3, 4) +Output: (0, 1, 2, 4, 5, 3) + +Example 2 + +Input: @int = (5, 0, 1, 2, 3, 4) +Output: (4, 5, 0, 1, 2, 3) +*/ + +#include <iostream> +#include <vector> +using namespace std; + +int main(int argc, char* argv[]) { + if (argc < 2) { + cerr << "Usage: ch-2 n n n ..." << endl; + exit(EXIT_FAILURE); + } + + vector<int> olds; + vector<int> news; + + // parse args + for (int i = 1; i < argc; i++) { + int n = atoi(argv[i]); + olds.push_back(n); + } + + // process + for (size_t i = 0; i < olds.size(); i++) { + int n = olds[olds[i]]; + news.push_back(n); + } + + // output + const char* sep = ""; + for (size_t i = 0; i < news.size(); i++) { + cout << sep << news[i]; + sep = " "; + } + cout << endl; +} |
