fork download
  1. #define display(v) {for(auto it: v) cout << it << " :: "; cout << endl;}
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4.  
  5.  
  6. enum Status {
  7. VERIFIED,
  8. UNVERIFIED
  9. };
  10.  
  11. class Utils {
  12. public:
  13. static vector<string> splitString(string s, char delimiter = ',') {
  14. stringstream ss(s);
  15. string word;
  16. vector<string> v;
  17. while (getline(ss, word, delimiter)) {
  18. v.push_back(word);
  19. }
  20. return v;
  21. }
  22.  
  23. static string getStatusString(Status s) {
  24. switch (s) {
  25. case VERIFIED: return "VERIFIED";
  26. case UNVERIFIED: return "NOT VERIFIED"; // todo
  27. default: return "UNKNOWN";
  28. }
  29. }
  30. };
  31.  
  32.  
  33. struct Business {
  34. string productDescription;
  35. string full_statementDescriptor;
  36. string short_statement_descriptor;
  37. string business_name;
  38. string business_profile_name;
  39. string url;
  40.  
  41. Status kycStatus;
  42.  
  43. // assumes that array is correct
  44. void createBusinessFromRawData(string rawBusinessData) {
  45. vector<string> parsedBusinessData = Utils::splitString(rawBusinessData, ',');
  46. kycStatus = UNVERIFIED;
  47.  
  48. if (parsedBusinessData.size() < 6)
  49. return;
  50.  
  51. productDescription = parsedBusinessData[0];
  52. full_statementDescriptor = parsedBusinessData[1];
  53. short_statement_descriptor = parsedBusinessData[2];
  54. business_name = parsedBusinessData[3]; // key
  55. business_profile_name = parsedBusinessData[4];
  56. url = parsedBusinessData[5];
  57. }
  58. };
  59.  
  60. struct KycData {
  61. string businessName;
  62. string status;
  63.  
  64. void print() {
  65. string output = status + " ";
  66. if (status == "VERIFIED")
  67. output += " ";
  68. output += businessName;
  69. cout << output << "\n";
  70. }
  71. };
  72.  
  73. class KYCValidator {
  74. public:
  75. vector<KycData> verifyBusinesses(string csvData) {
  76. vector<string> parsedLines = Utils::splitString(csvData, '\n');
  77.  
  78. unordered_map<string, Business> businessMap;
  79. for (int i = 1; i < parsedLines.size(); i++) {
  80. Business b;
  81. b.createBusinessFromRawData(parsedLines[i]);
  82.  
  83. if (b.business_name.empty())
  84. continue;
  85.  
  86. b.kycStatus = getKYVStatusOfBusiness(b);
  87.  
  88. businessMap[b.business_name] = b;
  89. }
  90.  
  91. vector<KycData> res;
  92. for (auto [businessName, b]: businessMap) {
  93. res.push_back(KycData{businessName, Utils::getStatusString(b.kycStatus)});
  94. }
  95. return res;
  96. }
  97. private:
  98. Status getKYVStatusOfBusiness(Business b) {
  99. if (b.business_name.empty())
  100. return UNVERIFIED;
  101. if (b.business_profile_name.empty())
  102. return UNVERIFIED;
  103. if (b.full_statementDescriptor.empty())
  104. return UNVERIFIED;
  105. if (b.productDescription.empty())
  106. return UNVERIFIED;
  107. if (b.short_statement_descriptor.empty())
  108. return UNVERIFIED;
  109. if (b.url.empty())
  110. return UNVERIFIED;
  111. return VERIFIED;
  112. }
  113. };
  114.  
  115.  
  116. int main() {
  117. string input = R"(product_description,full_statement_descriptor,short_statement_descriptor,business_name,business_profile_name,url
  118. User experience platform,UXP,U,Users First Inc.,Users First Platform,https://u...content-available-to-author-only...t.com
  119. Process optimization,MUDA WASTE SOLUTIONS,MUDAWASTE,Kaizen Consulting Inc.,Muda Waste Solutions,https://m...content-available-to-author-only...s.com
  120. Artisanal coffee roaster,OYSTER POINT COFFEE,,Oyster Point Coffee Bar LLC,Oyster Point Coffee,https://o...content-available-to-author-only...e.com
  121. Artisan home goods,FIRESIDE HEARTH CRAFTS AND RUSTIC FURNITURE BOUTIQUE,FIRESIDEHTH,Fireside Furniture Studios LLC,Fireside Hearth Crafts,https://f...content-available-to-author-only...h.com
  122. Tech conference,CONVERGE,CON,Convergence Summit Group LLC,Convergence Events,https://c...content-available-to-author-only...t.com
  123. Payment infrastructure,CBPS,CBP,Collison Brothers Payment Systems Inc.,CBPS,https://c...content-available-to-author-only...s.com
  124. Learning platform,RETAIL,RETAILCO,Trailhead Education Solutions Inc.,Trailhead Learning,https://t...content-available-to-author-only...n.com
  125. Digital marketing agency,PREMIUM SALE PLATFORM,PREMIUMSALE,Sail Design Systems LLC,Sail Framework Studio,https://s...content-available-to-author-only...s.com
  126. Artisan sorbet shop,FROSTY SORBET DELIGHTS,FROSTYSRBT,Frosty Sorbet Delights LLC,Frosty Sorbet Paradise,https://f...content-available-to-author-only...s.com
  127. Emergency systems,BRBS,BRB,Big Red Button Systems Inc.,Big Red Button,https://b...content-available-to-author-only...n.com
  128. Payment processing,LPS,LPS,Link Payment Technologies Corporation,Link Payment Solutions,https://l...content-available-to-author-only...h.com
  129. E-commerce analytics,RETAIL,RET,Black Friday Cyber Monday Analytics Inc.,BFCM Retail Analytics,https://b...content-available-to-author-only...s.com
  130. Energy solutions,ECOMMERCE,ECOM,Exothermic Reactions Inc.,Exothermic Energy,https://e...content-available-to-author-only...y.com
  131. Security consulting,BUFO SECURITY LABS,BUFOSEC,Bufo Cybersecurity Consulting LLC,Bufo Security Labs,https://b...content-available-to-author-only...y.com
  132. Restaurant delivery,NOMS,NOMS,Nom Nom Nom Inc.,Nom Delivery Express,https://n...content-available-to-author-only...s.com
  133. Landscaping services,DIRT PILE LANDSCAPING AND EXCAVATION,DIRTPILE,Dirt Pile Earthworks LLC,Dirt Pile Landscaping,https://d...content-available-to-author-only...s.com
  134. Meticulous craft gallery,POWER CRAFT BEAUTY,PCB,Power Craft Beauty Gallery Inc.,Quality = Power + Craft + Beauty,https://p...content-available-to-author-only...y.com
  135. Platform services,SESSIONS PLATFORM SERVICES,SESSIONS,Sessions Management Inc.,Sessions Platform,https://s...content-available-to-author-only...m.com
  136. ,URGENCY FOCUS,URGENT,Urgency Focus Solutions Inc.,Urgency and Focus,https://u...content-available-to-author-only...s.com
  137. Advisory services,SEEK FEEDBACK,FEEDBACK,,Seek Feedback Advisory,https://s...content-available-to-author-only...k.com
  138. Performance consulting,DELIVER RESULTS,RESULTS,Outstanding Results Inc.,Deliver Outstanding Results,https://o...content-available-to-author-only...s.com
  139. Llama accessories,Shop,SH,Llama Love Boutique LLC,Llama Shop,https://l...content-available-to-author-only...e.com
  140. ,FAL,F,Falafel Paradise Restaurant LLC,Falafel Paradise,https://f...content-available-to-author-only...e.com
  141. Educational technology,LEARN,LRN,Curious Learning Solutions Inc.,Learn Solutions,https://c...content-available-to-author-only...g.com
  142. Infrastructure services,RESILIENT SYSTEMS MGMT SERVICES,RSMS,Resilient Systems Corporation,Resilient Management Services,https://r...content-available-to-author-only...t.systems
  143. E-commerce platform,ONLINE STORE,ONLSTORE,Humble Commerce LLC,Online Store Builders,https://h...content-available-to-author-only...e.com
  144. Investment services,GENERAL MERCHANDISE,GENMERCH,Macro Optimistic Ventures Inc.,General Merchandise Partners,https://m...content-available-to-author-only...c.com
  145. Human resources,Retail,RTL,Talent Elevation Corp,Retail Talent Solutions,https://t...content-available-to-author-only...n.com
  146. Energy consulting,PACE,PCE,Set Pace Energy Solutions Inc.,Pace Energy,https://s...content-available-to-author-only...y.com
  147. Management consulting,CCS,CCS,Clarity Context Solutions LLC,Clarity Context Solutions,https://c...content-available-to-author-only...t.com
  148. Data analytics,FIRST2LAST,F2L,First Principles Analytics Inc.,First 2 Last Data,https://f...content-available-to-author-only...s.com
  149. Risk management consulting,FEAR ANALYSIS,FEARANA,Fear Fear Fear Uncertainty Doubt Inc.,Fear Uncertainty Doubt Solutions,https://f...content-available-to-author-only...s.com
  150. )";
  151.  
  152. KYCValidator *validator = new KYCValidator();
  153. vector<KycData> kycDataArray = validator->verifyBusinesses(input);
  154.  
  155. for (auto kycData: kycDataArray) {
  156. kycData.print();
  157. }
  158. return 0;
  159. }
Success #stdin #stdout 0s 5308KB
stdin
Standard input is empty
stdout
VERIFIED      First Principles Analytics Inc.
VERIFIED      Clarity Context Solutions LLC
VERIFIED      Talent Elevation Corp
VERIFIED      Resilient Systems Corporation
VERIFIED      Curious Learning Solutions Inc.
VERIFIED      Sail Design Systems LLC
NOT VERIFIED  Oyster Point Coffee Bar LLC
VERIFIED      Fear Fear Fear Uncertainty Doubt Inc.
VERIFIED      Nom Nom Nom Inc.
VERIFIED      Collison Brothers Payment Systems Inc.
VERIFIED      Trailhead Education Solutions Inc.
VERIFIED      Black Friday Cyber Monday Analytics Inc.
VERIFIED      Convergence Summit Group LLC
VERIFIED      Kaizen Consulting Inc.
VERIFIED      Humble Commerce LLC
VERIFIED      Link Payment Technologies Corporation
VERIFIED      Fireside Furniture Studios LLC
VERIFIED      Frosty Sorbet Delights LLC
VERIFIED      Exothermic Reactions Inc.
VERIFIED      Set Pace Energy Solutions Inc.
VERIFIED      Macro Optimistic Ventures Inc.
NOT VERIFIED  Urgency Focus Solutions Inc.
VERIFIED      Bufo Cybersecurity Consulting LLC
VERIFIED      Big Red Button Systems Inc.
VERIFIED      Users First Inc.
VERIFIED      Power Craft Beauty Gallery Inc.
VERIFIED      Sessions Management Inc.
VERIFIED      Outstanding Results Inc.
VERIFIED      Dirt Pile Earthworks LLC
VERIFIED      Llama Love Boutique LLC
NOT VERIFIED  Falafel Paradise Restaurant LLC