Add part 2 for day 1 (didn't initially notice there was a part 2)
[?]
Aug 18, 2018, 8:45 AM
JBL2GF5KB55G4CMB7DS6WVXOHPFGF5PYB7RJIAAB2HSS5QJUNSIACDependencies
- [2]
XBZHQ672Day 1 solution
Change contents
- file addition: day1p2.cpp[2.7]
#include <iostream>#include <fstream>struct cll {char c;cll *next;~cll() {delete next;}};int cll_length(cll *node) {int r = 0;while(node) {r++;node = node->next;}return r;}cll* cll_rotate(cll *root, int dist) {cll *ns = root;for(int i = 0; i < dist; i++) {ns = ns->next;}cll *cs = ns;cll *ct = NULL;cll *nroot = NULL;while(cs) {cll *n = new cll();n->c = cs->c;if(ct) {ct->next = n;} else {nroot = n;}ct = n;cs = cs->next;}cs = root;while(cs != ns) {cll *n = new cll();n->c = cs->c;ct->next = n;ct = n;cs = cs->next;}ct->next = NULL;return nroot;}int main(int argc, char** args) {std::ifstream input = std::ifstream(args[1]);cll *root = NULL;cll *current = NULL;char c;while(input.get(c)) {if(c >= '0' && c <= '9') {if(current) {current->next = new cll();current = current->next;} else {root = new cll();current = root;}current->c = c;}}current->next = NULL;cll *root2 = cll_rotate(root, cll_length(root) / 2);unsigned long long tally = 0;current = root;cll *current2 = root2;while(current->next) {if(current->c == current2->c) {tally += current->c - '0';}current = current->next;current2 = current2->next;}delete root;delete root2;std::cout << tally << "\n";}