-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #411 from david-ds/skasch/day24
Day 24, C++
- Loading branch information
Showing
3 changed files
with
521 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | ||
} |
Oops, something went wrong.