Skip to content

Commit

Permalink
Merge pull request #411 from david-ds/skasch/day24
Browse files Browse the repository at this point in the history
Day 24, C++
  • Loading branch information
skasch authored Nov 2, 2024
2 parents 961d077 + 660ae05 commit 3d8733e
Show file tree
Hide file tree
Showing 3 changed files with 521 additions and 0 deletions.
292 changes: 292 additions & 0 deletions day-24/input/skasch.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,292 @@
nwswswnenwswsweswseswswnwswsweswsw
swseswsenwswnenwsesesenwseseesesenwenw
seswseswseswswseswwswneseswsese
nwwwsewenwwwwswwwe
seswwwseeseseseseseseswseswneneesew
eenewewweseneneneenene
nenenenenwnwwswseenwwneneenwneswnwnw
swneswwswwnewwwswwswwww
seseweewwnwwnwwsewwnwnenewnwne
nwwewewnwnwwwwnwswnwwsenwneww
sewnewswswwsenwsenenwneswswsesweenw
nwwnwnenwnwwnwsewnwseewsenwsesenwnwnw
enwnenwnwswnwnenesenwneswnenwnenwwnenese
neneneneneswneneenwenenenenenenewnwse
nwenwswsenwwnwwnwwnwwnwneww
wnwnwnwnwnenenwnesenwnwnwneswnwnenwsewne
wnwnwnwsesenwwwnenewnwnwnwnww
wnewwwswwwwwsw
nenwnenenewnenwnesenesenewnenenw
eeseeseeesenwesesese
seneseneneeeneewwswenweeneeneenene
wswsesenwseeeeseseseseseswnewseswnwnwse
swnenewwneneneneneneneseenenenenenee
swenwwwwewweswswwswswwswwnww
neswnenenenwswnwnwnwneneneneewnwneenw
eeesewswseenweewnwweeseene
swnwseeswneenwsesenwseeswnw
enwwnwwwswnwnwnenenenenwnenwnesesesenw
swwwwwwnewnewewwnewwsesw
eneseswwneseewnwnweswswwwnenwnenwne
sewsesesesenwnesewnweeswswswneseswwsw
nwneswnwnenenwnenweneswnesenwswnewnw
seneneseseseewsenenwswsewseswswsenesw
nwneseneenesewwnesenene
swwnwwsenwewswneewnweweswewnewse
nenenwseneswnwnwnwsenwwnwnenwnenenenw
neneneswneneenweesweneeeewenenw
swswswsenewseseseewswnesewswswseseswnw
eswwnwnwwswnwwwnwnwewwnw
swneseswenwseswsesesenwneseseseseswsese
nesenesenewnenenenwsenewnewsenwwnwne
swswseswseseswswnwseswsenesweswsw
swnwnwwswwswswswswwswsweneseswswnewne
nenenenenenwswneneswsenwnesenenenwnenenwnee
newnwneneeswneswnenwwsenenwneneenwnenw
swneeesesenesesewseseeesewse
nenwnwswseeenwseswneenewwene
enenenenenenenwnenesw
nwwswwwseneewwwwnwwwswnenweww
sewseneeesenwesesesesewneswseeew
swnwnweneswneneseswnwnenenenenenenwnese
nwsenwneseswwewnweswneewnwnwnwenw
wsenwwnwwnwenwwwnweswnw
swswwewnwnenesesewsesewneesewnene
neswnwwseswenenenwneseneeneenewsesww
nwwwsesenesesesesesenwseneeswnwsenewse
wnwswneswswswsweswne
enesenweneswsewneenenenwswnewnwnwsw
enenwnwswsenenwnwswnwwnwnwnwnwwnwwnw
wswswswwswwsesenwnwswnewsewswswnese
swwswneswswswneswswswsw
swswseswsesesenwseeeswseseswnwseseswnewsw
nwseeseseseswwesesesesesesesenesesenwe
swnwewewwwnwnwwnwnenwwwnwsewnw
swswswswnwswsenwswwweswwswsw
swenwswnesenwswesweseswwnewswenwswswnw
enewswnwwwwswswneewneewsw
nwsewnenwnwwnwnwnwenwnwnwnwnwswsesenwnw
wneeseseswseseesenweeseenwsenesewwne
senenwnwnenwnwnwnewnwnwnwnwenwnwswnesw
seseseseeseseseneseewse
neneeeneewweeneeneesesw
swswnwseswswwneseswswswswnwneswseswwswe
wsenenwwwseseeseswsewneneneneseswse
seeseeneeeswswseseenwneewneeseese
eeseeeeswsenweweenwneeewseene
wnenewnenenenesesenewnwnwnenenenwsenwne
neneneeswswnenenenenwenwnenwneneneswne
nwnwnwnwswwwnwnwwneenwwwswnwnwsenw
eneweneeneneenesweneneneesweswnww
neseseseseswsesesenwseseswseseseseswnew
seseseswswseseswsewne
swnwnewsweswswweswswswswwswswsesenwswsw
neewnwswnwswswewswnenwseswnwswswswsesw
esewnewwwwwswwwwwnwseewwwne
swswswnwswesweswswsweswswswswsewswnwsw
swneswswwnwswswswwswneswsweewswswsw
swwwesesewwswseneseneseseseeswsesesw
nwswnwnwnweswwnwnwenwnwnwnwe
nwwwnenwseseswnewsenesesewneswswwwe
nwnenenenwsenwwnenwnewseneewse
wwnwswnewwwwnw
swneneswnesenenenewnesenwewnewnenene
nenwneeneneesenwnesenewsw
neseseeewswweesesese
seenwsesesenwseeseseseseesesese
wwwwwswnewswswwwwnwswnewesw
swswwswswseswsenwwwseneeneswseswnwneese
nesenweseswesewsenwwsesesesesesee
neswseswsenwsweseneswswswseswswswswswwwnw
sesesewswseneswnwswswswswnwsesenwswesesw
nwwswesenewnwswswnwswwnwenenwne
eeeeneeweeeneneseeeenw
seseneseswwsewnwneseeeseneseswsenesw
nwnwneenwwnewewenwwnwnenwsesenenenw
neneneneswnenenwneneneeneneswneswswnene
wswseewneneseenewsesewwwswnwnwnwnwnw
nwnwnwnwnwnenwnwswnwnenenwsenwe
swnwnweswnwseeeeenwsesewswwnenesw
ewswseswnwwnwwnwnwsweweeenwnenw
wnewwnwneswsenwsewwenewnwnwwwww
nwnenenenewnwsenwnenwnwnesewnenwnwnwnwse
swsenewneswneneneenwnw
sweseswneeeneesenwnwneneenwnesenww
seswswneswswseswwseswnenwseseneswswswswse
nenwsenenwneneewneneneneneneswswene
wsewwwwwnewwwwwwwnw
swswseseeswswswwswsesesesewneneseswnw
nenweswnwnenenwnwnenwnewsewwnenenwe
neeewnenwnwnwnwnwsenwnwnwswwnwnwnwnw
swsenwswswneseswenewewsenwwnesewsenwne
wswwswwweeswswwswswnwnwnwene
nwneneneneseswnenwnesweswnenenwnenesene
wseseswswsewseneeswneewswseseswsene
swsenweeneswswsesesene
weswswsenewnwwewwswswenwsewnwnesw
neswnewsenwewnesenwsweseeseene
seswswseseswwneswseenweswswswswswnwnw
eseswswsweeswseswswsenwswswswswsewsenw
enewnwswsesweneswseswseenwsewnwsee
neseneswseweseenweeweesweeenew
wnwenesenwswnwnewsenwnwswnwnesewnwwese
swnwswswseeseseeneswswswswswswswswsww
wsesewwneseswswswseswnwswseeswneswewsw
nwnenenwnwenwswnwnenewnwnwswnwsesenwnww
eswseseswsewseseswsesesesenese
nwswswseeswswseswswsenweseewnwsesese
seseeeeenewswnwwnwswsenwnenwnwnwwsesw
neeweewnenwneenwnwsenwsenwsesesene
nenwseeseenwenwseeswswnweeeneeswse
swswseswswswswswenwwwswnwswneswswesww
swswneswnwswswswswswseewswewswwnene
nwneeneenwnewswnenwnenwswnenwnwnwenwne
nenenenenwnenesweneseneneneswnwnenenenw
ewseesweenweneseenwesweewwew
eseseeseseseeweesewseesesene
wneeneneenwweswenwwseneeenesesese
nwnwnenesenenenwwnwwnwsenwnwnwnenenwse
senewnwseesenwwseseswesewesesenenesw
seneeewnwwwsewnenwewnwswswse
neswwewwwwwwwswsweewwwww
wwsweswwswewwsenewwswwswswswnw
nwnwnwnwneneswnwsenwenwnwnwneenewnwnw
senwwnwneneeswneneeeweeenenenesw
nweneswneneswneenwnewnwnwnwnwnenenwnesenw
sewneswnweweswnesewnwwwwnewswsww
wneswswswwswsewswwswswswewswsw
senwneseswseeseswneseswneswswswswswsenw
ewwsweneenwsene
seeneeseeenewnwewswnwswswsesenww
wsesewwsewwswwnewswwnewwwwwnew
wnwsewwwnwwnewsenwnwnewnwnesenwnw
swswseseswsenewsesesesesesesesenwsenwse
nwwwwneswwwwwseswewwwwnenew
seewneeeeseenwsewenwsesw
nwnenwwneneseswnwew
neeenwenwesweeeeeeeseesw
nwnwwswewswnwnenwnwnwnwsenene
ewnwsesesesenwswesesesewswseesesese
neenwwsewsenwseeeeewwswneeneswne
swsenwseeswsewnwweneseneseeswsesesee
swsenwnweseswseenwseswseseseenwwsesene
eseenenenwneswnwnwneeeeneseneenew
swnenesweeeswneswenenwswneeeeseswse
sewsesesweeeeweeneeneseswesee
swwwwwwewnwnwwwewwwwnw
seswswenenwnweeneneneneswwenenenenenwne
seseeeseswwneeesenww
nwnwnwswneenwnenwneneswnwswnwsw
swswswswseswneswswswswnwseswsww
wnwwnwwsenwnwwneenwnwnwsesenwnwenww
eseeseeesewseseswesesenwnenwesese
swswnenwnenenwnenwenenenwenenwnwswnwnwswne
newwsewwwnwwnewsew
swswswseseswwseswswneswneneswnwnwswsesw
eeeesenwswseeeeewwseeneeeee
neswswseswneeswswneswswseswswww
neseeesesesewnwseswsesesewseseswwnwsee
nwnwnesenenwnwsesweswswenwnwnwewnwwse
eswswswswswseeeswwseewsenenwwsesww
newwnesesesweeneewwenee
swnwswwnwswseeneeseeneswswenwswwnesw
sesesweeseswseeseseenweseeswnesenenw
wwwwwwseewwwwwwwwswwnesene
swnwnwnenwesweswswsenwwneneenwnwnww
swnwnwewenwenweenwnwswwwnwnwnwww
wsweswswswswnwswswsweswswswswswswswne
neneneswwnwnenwnwneswneenwsesenene
swewswseneswnwswseswswseseenwswswsee
enweeesweseseweeeeeenwswee
sewseseswnenesewenwneeneneneewnewnew
esenwswewneswneswnwnenwnwnwenwenwnw
swneswwswwswswswwwwenwswswsweswsw
newseswseswnwseseneeswsenwwswnw
wwesweewswswnwwewewwwenwnesenw
seswenwseswenwwseewnenenwnesenwsese
wwwwnewwwswswww
nwwnwnwswnesenenenwwenwenwwnwnwsenwwnw
nwsewesesewswsesweseseneseneseswnese
eseeeeenwseeseswe
swseenwseswwneneswsweseswseswnwwnene
eenwewesweseneweswnenwswsewenee
wewwwwwwwwwnewsewwwwsenw
wwwsewwwwneww
senwneneenenwsenwnesenenenenewnewsesw
eweeeeeeee
nwnewneneneseneneenewseneneswsenenwnenw
swsewswnwneeenwseweseenwwwenesww
swswnwswneneswsesewswseswsewswnesese
newwnwnwwwwnwswswnenwnwneenwnwswnw
eenwsenwnewwneneenenwnenwsewwwsee
eseesenweeseseswseenesenweeewswnwe
nwenwenewnwwwnwswwsweswseswnwwe
nwseneeswswseseseswswswseswseeewswnw
seeeenweeweeeeesweeenee
eneweswnesenenewnenewneswnenesesww
nwwnewswnwwwnwe
swswswswswseswswswswwswswnesw
wwwsewnenwwwwnwsewnw
neeeseseesewseseesesewsesesene
nwnwswswneswwswseswswswsweswswseneswswsw
sesesenewsewseseswseseseseswnesesese
seneseswswseswseeeseenwnwseenesewnwse
nwwnwwwwwnwwewe
swseswwsweswswswnwswsweswswswswneswse
swseeswswswswswswswwnwnwswwnesesenwswsw
senwseseswsesenesenenwsesesewsesesesese
ewswwswnwseneswseswnenwswsenwseseswswne
sweswseswseswwwseneneenesenwseswnwsenw
nwwweswnwswnwswswseeseswsenenwsesww
sesewseesenwesweseeneseeneseswnewese
esewseeeesewenwseeweenesewew
eneseneswnesewwneenwneneswewsewnesw
newneweeseenesweneeeseenwneeswe
seswseseneswswswswswswsw
wsesesesesenesesenwseesenwsesesesesese
nenenenesenenewnenenene
seswwnwswwsesesweswsweswenesenwene
neswesenenesenenweeswseeenwnewnwnene
eeeeeeeenweeneswenenwnweswsw
seneenenesweneswneewnwswnene
swswwswswswwswswnwwwnweenwwseswww
swswwswneswseneswswswsenesw
swwswswswswswsweswswswswsw
seneseseseenwnwsweswnwseseswseswwneswswsw
nenwnwswnenwewneswnwnewnenenesenenee
nwseseesenwwswseeenesesesesenwnwew
swnwswseenewswwswswswwwwwnwswwe
nwneenesenwneewnewneseeneneesw
neswnwwnenweswneneneneswnenwwneenwneene
neeneneswwsenwnwneneneseenenenewsene
swswnewseseseswswseswneswnwseeseswsese
swnwwswseswwnwsweeswwnweenewnwsw
nenweeeeswneweseswneswne
weneenwnenenenenwnenwswnewneeneneenesw
swnenwnwwwswwwnenewwnwsewnesewnw
neswswwswswseesweneswswsewswswwswse
nenenenwwsenwnwnenwnwnenwsenenwnwnwsenw
nwseseswseesenwseswswsenwese
wswneswnwneneswseseswwnwseswswnesenwsesew
weeeewsweeeneneneswesenwswee
senwnwwwnwsenwnwwwnwsesenesesenewsene
wwwesewwsenwwwwswweswwswnenww
swwneneseswswwswsewwwsw
enenwneneeneeseneswnwneeneswnesenene
eseesenenenewwneneseenenewnenenewnene
wenwswewnwewnweswseeeneeneenesw
neneneneswnenewsenwneseneenenwneswnenewne
eneswneneeseeswenewneeeeeenwnee
eswswsenwneseeseeeeeswnweeeewne
nwewwwwenwwwwewnwwnwwewsw
nwwwwnwnesenwwseenwswnwewnwswwnewnw
seweeweeenwseeeeenwseeeene
wswsenenewwwwwwwswwswwwneseww
nenenenweeseneneneeeeeweewswse
neneneneenweseeneswswnenenweeneswee
sesweeeswenwnese
enweseneneneneenwneenwneswneswneswnew
senenweseneneswsesenwseswswnwwswnwsewse
nwnwnwenwnwnwnwnwnwnwswnwnwnwsesenwnwnw
wwwnwnwwenwnwnwnwsenwswww
nwnwnweswnenenwnesenwwswnenenenwnesenwe
87 changes: 87 additions & 0 deletions day-24/part-1/skasch.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
#include <ctime>
#include <iostream>
#include <sstream>
#include <string>
#include <unordered_map>
#include <unordered_set>

static std::unordered_map<int, std::unordered_set<int>> kFlipped;
static int kFlippedCount = 0;

void Flip(const std::string &line) {
int pos = 0;
int row = 0;
int col = 0;
while (pos < line.size()) {
switch (line[pos]) {
case 'w':
col -= 2;
break;
case 'e':
col += 2;
break;
case 'n': {
--row;
++pos;
switch (line[pos]) {
case 'w':
--col;
break;
case 'e':
++col;
break;
}
break;
}
case 's': {
++row;
++pos;
switch (line[pos]) {
case 'w':
--col;
break;
case 'e':
++col;
break;
}
break;
}
}
++pos;
}
auto it = kFlipped.find(row);
if (it != kFlipped.end()) {
auto it2 = it->second.find(col);
if (it2 != it->second.end()) {
it->second.erase(it2);
--kFlippedCount;
return;
}
}
kFlipped[row].insert(col);
++kFlippedCount;
}

std::string run(const std::string &input) {
// Your code goes here
std::istringstream iss(input);
for (std::string line; std::getline(iss, line);) {
Flip(line);
}
return std::to_string(kFlippedCount);
}

int main(int argc, char **argv) {
if (argc < 2) {
std::cout << "Missing one argument" << std::endl;
exit(1);
}

clock_t start = clock();
auto answer = run(argv[1]);

std::cout << "_duration:" << float(clock() - start) * 1000.0 / CLOCKS_PER_SEC
<< "\n";
std::cout << answer << "\n";
return 0;
}
Loading

0 comments on commit 3d8733e

Please sign in to comment.