uint64_t -> uint64

master
Benjamin Kraft 2 years ago
parent e9487c662c
commit a263a89db3
  1. 22
      src/days/07/Day07.cpp
  2. 14
      src/days/07/Day07.h

@ -4,7 +4,7 @@ Result Day07::Task1() {
Dir* tree = parseTree();
set<Dir*> dirsBelow = tree->getAllDirsBelowSize(100000);
uint64_t sum = accumulate(dirsBelow.begin(), dirsBelow.end(), 0, [](uint64_t s, Dir* dir){
uint64 sum = accumulate(dirsBelow.begin(), dirsBelow.end(), 0, [](uint64 s, Dir* dir){
return s + dir->getSize();
});
@ -16,14 +16,14 @@ Result Day07::Task1() {
Result Day07::Task2() {
Dir* tree = parseTree();
uint64_t toBeFreed = 30000000 - (70000000 - tree->getSize());
uint64 toBeFreed = 30000000 - (70000000 - tree->getSize());
set<Dir*> dirsAbove = tree->getAllDirsAboveSize(toBeFreed);
set<uint64_t> sizes;
set<uint64> sizes;
std::transform(dirsAbove.begin(), dirsAbove.end(), inserter(sizes, sizes.begin()), [](Dir* dir){
return dir->getSize();
});
uint64_t result = *std::min_element(sizes.begin(), sizes.end());
uint64 result = *std::min_element(sizes.begin(), sizes.end());
delete tree;
@ -45,7 +45,7 @@ Dir* Day07::parseTree() {
cwd->items.insert(new Dir(name, cwd));
} else {
size_t ws = pos->find(' ');
uint64_t size = stoi(pos->substr(0, ws));
uint64 size = stoi(pos->substr(0, ws));
string name = pos->substr(ws + 1);
cwd->items.insert(new File(name, cwd, size));
}
@ -83,8 +83,8 @@ Dir *Dir::findRoot() {
return parent->findRoot();
}
uint64_t Dir::getSize() {
return accumulate(items.begin(), items.end(), 0, [](uint64_t s, Item* item){
uint64 Dir::getSize() {
return accumulate(items.begin(), items.end(), 0, [](uint64 s, Item* item){
return s + item->getSize();
});
}
@ -98,7 +98,7 @@ set<Dir*> Dir::getDirs() {
return dirs;
}
set<Dir*> Dir::getAllDirsBelowSize(uint64_t maxSize) {
set<Dir*> Dir::getAllDirsBelowSize(uint64 maxSize) {
set<Dir*> result;
for (Dir* dir : getDirs()){
@ -111,7 +111,7 @@ set<Dir*> Dir::getAllDirsBelowSize(uint64_t maxSize) {
return result;
}
set<Dir *> Dir::getAllDirsAboveSize(uint64_t minSize) {
set<Dir *> Dir::getAllDirsAboveSize(uint64 minSize) {
set<Dir*> result;
for (Dir* dir : getDirs()){
@ -124,11 +124,11 @@ set<Dir *> Dir::getAllDirsAboveSize(uint64_t minSize) {
return result;
}
uint64_t File::getSize() {
uint64 File::getSize() {
return size;
}
uint64_t Item::getSize() {
uint64 Item::getSize() {
return 0;
}

@ -8,7 +8,7 @@ struct Item {
Item(string name, Dir* parent) : name(name), parent(parent){};
string name;
Dir* parent;
virtual uint64_t getSize();
virtual uint64 getSize();
virtual ~Item() = default;
};
@ -16,17 +16,17 @@ struct Dir : Item {
Dir(string name, Dir* parent) : Item(name, parent) {}
set<Item*> items;
Dir* findRoot();
uint64_t getSize();
uint64 getSize();
set<Dir*> getDirs();
set<Dir*> getAllDirsBelowSize(uint64_t maxSize);
set<Dir*> getAllDirsAboveSize(uint64_t minSize);
set<Dir*> getAllDirsBelowSize(uint64 maxSize);
set<Dir*> getAllDirsAboveSize(uint64 minSize);
~Dir();
};
struct File : Item {
File(string name, Dir* parent, uint64_t size) : Item(name, parent), size(size) {}
uint64_t size;
uint64_t getSize();
File(string name, Dir* parent, uint64 size) : Item(name, parent), size(size) {}
uint64 size;
uint64 getSize();
};
class Day07 : public Day {

Loading…
Cancel
Save