Day 20 (WIP)

This commit is contained in:
immortaly007 committed 2018-12-20 23:23:39 +01:00
1 parent 0b28df1f3c
commit 14e7ca488e
4 files changed
+56

No files matched your search

@@ -0,0 +1,53 @@
package com.basdado.adventofcode
import java.util.*
const val DAY20_INPUT = "/day/20/example1.txt"
fun main() {
val day = Day20()
day.puzzle1()
}
class Day20 {
fun puzzle1() {
val input = lines(DAY20_INPUT).findFirst().get()
]
val rooms = mutableListOf(Room(Vector2(0, 0), mutableListOf()))
val bracketStarts = Stack<Room>()
var currentRoom = rooms[0]
for(c in input) {
if (c == '^') {
continue
}
if (c == '(') {
bracketStarts.push(currentRoom)
}
if (c == '|') {
currentRoom = bracketStarts.pop()
}
}
}
class Room(val pos: Vector2, val connections: MutableList<Room>)
data class Vector2(val x: Long, val y: Long) {
fun move(c: Char): Vector2 {
return when(c) {
'N' -> Vector2(x, y - 1)
'E' -> Vector2(x + 1, y)
'S' -> Vector2(x, y + 1)
'W' -> Vector2(x - 1, y)
}
}
}
}
+1
View File
@@ -0,0 +1 @@
^ESSWWN(E|NNENN(EESS(WNSE|)SSS|WWWSSSSE(SW|NNNE)))$
+1
View File
@@ -0,0 +1 @@
^WSSEESWWWNW(S|NENNEEEENN(ESSSSW(NWSW|SSEN)|WSWWN(E|WWS(E|SS))))$
+1
View File
@@ -0,0 +1 @@
^ESWSESENENNW(S|NWWWWWSEESSSWWNENWWWWNWNWSSWSESSSWSESWSSWNNWWSSE(SWSSEEN(W|ESESWSESWSEENESENNENNWWS(E|W(SEWN|)NNEEENNNNWWW(NNESEENWNE(EESSENNE(N|EESSWSESWSESSSEEENNENENWWWS(E|W(SSENSWNN|)NNNNNNEENWNENENNWNWSW(SE(S|E)|WWWNEENE(NENNWWS(SWSWNNENNWWNWWWSWNNNWSWNNWWSESWWWSSESENEEN(ESSWSSWN(N|WWWNWNNNWWSESSWNWSWSEESWWSSWNNNNNENWWWSWSWWWSWSSEESSENNNN(WSWENE|)ESESSSSW(NNN|SWSSSWSESSSSWWSSESESEESESSWNWNWWWWNE(E|NWNWWNNEE(SWEN|)NENWWWNENNNENWNNNN(NWNNWNWNNWWWWWSWNWWNNENWNWNEENWNENNENNWSWNNENWNWNNWSSWSESSWSESWWWWWNENENE(SSWENN|)(NNWNNNENEES(WSSWNSENNE|)EESEEENNENESESESWSWNNWSSSESESENN(W|NENENNNESESSSSENESESESWWNWWSWNNW(NENNSSWS|)WSESSW(SSESEESEENNEEENN(WSWWN(E|W(SWS(ESNW|)WN(NEWS|)W|N))|ESESEESESSWSWNWSWNNN(WSSWW(NNESNWSS|)SWSSSWSESES(WWNWWW(SEES(W|E|SS)|NNNWSSWNNWWNNNENWNNWNEESSE(SSSWSEENENN(ESESWS(SSE(SWEN|)NEN(NNEWSS|)W|W)|W(S|N))|NNNWWWW(SSSWSESWSEE(SWSSE(N|ES(ENSW|)WWW(NNNWESSS|)W)|NNN)|NWNE(ESEWNW|)NNWW(SEWN|)W)))|ENNWNNEEN(EEEEESES(EENESENNNWNENEEESWWSSENEEEEESESESWS(EEENNW(NENENNEESEENWNWWWNWNNNEEEENWWWWNEEEENNWSWWWWWNNWSWWWWSSSESWSWWSSS(WNNNWSWSS(ENSW|)WS(E|SWSW(W|NNENWNNNWNWWNEEENNNEESWSESSW(W|SE(SWSEWNEN|)ENENENEE(NNWSWNNNNESSENNNEENNWWS(WSWWNWNENEE(SWSNEN|)NNWWNNENEEESWWS(EEESENENNENESENNWWWNNNEESES(WWNSEE|)EEEENWWWNNNEESWSEENENNEENENWNEENWWNNEES(W|EEN(ESSWWSSESENN(EESESSWSSSSENENN(WSNE|)NENNW(S|NENESSSEESSSSWWNENW(NEWS|)WSSSEEEENNENEENNENNESSESWSEESWWSWWN(ENNSSW|)WSSEESSENEEESWSSSWSEENENN(WSNE|)ESEENESENENWWWW(NWSWNNWWW(NEEEENWNW(NEENENNNNWSWSESWWS(W(S|NWNEENNN(WWSWNWWSS(WSESWSWS(W(NNWWNNEES(E(S|NNWN(EESNWW|)WSWWN(E|WWS(WS(WWNNE(E|S)|S|E)|E)))|W)|S)|E)|E(EEENSWWW|)N)|E(EEEEESWWSSESESSSSSEESS(ESSW(N|SEEENWNNNENNNESSENENWNNENWNEESSS(W|SESSSSSSWNWNENN(WSWWSWSESSEN(NN|ESESSWWWWWN(EEEE|WSWNW(WWWSSWNW(NEWS|)SSWWWWN(EEENSWWW|)WSWSESWSWNNNNENENNN(WWNWWSESSWSWSWWWWNWSWWWNNNESSENENNW(NN(E(EEEESSSS(WS(WNWNEENWN(E|W(W|S))|E)|EN(E|NNNE(EE|NN)))|N)|WWNNWSWWNENENWWWW(NEE(NWNSES|)EEE(N(E|N)|SS)|SE(SSSEESE(S(ENESNWSW|)SWWSWWWSSWNWWSSE(N|SWSWWWWSSWWSS(EEN(W|EENEEEN(WWWWSNEEEE|)NESENEENNESSSWWSSESWWNNWSSS(WWNN(ESNW|)WSWWSEESWWWN(SEEENWESWWWN|)|SSSESWSSENESENESESSESWWNNWSSWW(SESEEEEEN(NNNWNNENNESEEEEESEESWSEENESSSWSSESEEEESSSESEENWNNNW(NEENEESSSESWW(WNEN(W|N)|SESENEEENWNENWW(WNNNNNNNENNWWNWWNENNEEESESWS(WNNWSNESSE|)ESSSSWSEESESSS(ENENEENNEEENESSSSSEESSSSWNWNWN(EESNWW|)WSSESSE(SSSSWWSEESESWWWN(E|WNWSWWNENEENEENWN(WNWNE(ESNW|)NNWWS(WWW(SSWWWSSSWWWNEN(ESNW|)W(WWSWWN(WWSSSESSESENESSESWWWSSEESSESENNNENW(W(SS|WW)|NNNEESS(WNSE|)SSSSEEESWWSSSSEEENNN(WWSESW|NNNWWWNEEENENENN(WNNNNNWSSSSSWNWW(SESSW(SEENEN(W|E)|N)|WWNWW(S(S|E)|WWWNEN(WWNSEE|)ESE(NN|EEEEES(WW|ENNNN(WSSNNE|)EENNEESSES(WW(NN|S(EE|S))|E)))))|EEESSESWSWWN(ENWNEWSESW|)WSSEESSWWN(W(SSESSW(SSWSWNWWWNNWWWNWWNWSWNWSWSEEEESSWSSEEN(W|EEE(NNWWS(WNNSSE|)E|EESSESWWNNWSWNWSSSWWSSWWNENWWWSWWNENNNESSEEN(NNNN(E|WWSWS(WNWNWNEEE(SWEN|)NNNNWWWWNNESENNWNNNENEESSSSSS(EENWNNNNE(NWN(WWWNWNNESEENWNWNEESE(SSSWWEENNN|)NNNWWWNN(NWNNN(E(SS|E)|WWWWSSSSEESWWWNNW(SSWNWWWWWW(N|WSEEEEESE(SENESENEEEEE(S(WWWWSEEES(ENSW|)SSSWSWWSEEE(ENWESW|)SSSWWSWNNWWSWWNNE(NENNE(NNN(WN(WWWWWWSESSESWWNNWWNNE(S|NN(ESEE(NWES|)E|WWS(E|SSS(WNWNNNE(NW(WSSSS(SEWN|)WW|N(EESNWW|)N)|SS)|SESSW(N|S(ESESESESEE(EEESWSSSEENN(WSNE|)N(EEE(NEWS|)SSSWSSWSWNN(ENNENW|WSSWWNN(ESNW|)WWSSSSWW(SWSSENESENN(W|ESESSW(N|SSWNWWSESWSWSSWNNNWSWSWNWNWNNWWSSSSEN(ESESWSWNWSWSSSEEENN(WSWNSENE|)EESESSESSESESENNNW(S|NW(NNEES(W|ENNWN(NNEEESWWSESSEEESSESSESEEENWNNWS(S|WNNEENNWWNWWS(ES(S|EE)|WWNENEENNNEESWSES(EEEESSSEEENENNNWSWS(SWNNNNN(ES(S|ENESE(EESSESSSSSWWNNE(NNWSW(NNNESNWSSS|)SWSSSE(EEEESSSWSESWWWNNWSWNNWSSWNWSWNW(WSSE(SENEESENESE(SWWWW(N|WSSSENNESESEENEESWSESWSWNWWWN(WSWWN(NNNWWWSEESSWSSSSSEEESWSSEEN(W|EENENENN(WNWWSES(WW(NNWWW(SES(ENSW|)W|N)|SE(SWEN|)E)|E)|EESEENNW(NENNW(S|NNESENNN(NNEENWNW(S|NNNWNEESSES(ES(ENNENNNEENNNESSSSWWSEESWWSEESEESWSSSENNENEENEEESSENNNNESSSSSWWWSEEESSSSEE(NWNENWNENNNNNW(SSSS|NNWNENWNWNWWNENWNENWWSWSWNNWWNNNNNNNENEESEESSENEEESE(SSWWWSWNWSS(WW(S|NWSWNNENWNEN(EESWSE(EEEE(NWES|)E|S(W|S))|N|W))|EEESWSEEE(NWNN(ESNW|)W|SWWS(WNSE|)ES(E(S(SSSS|W)|N)|W)))|NNWWNWW(SEWN|)NNNNWSWWNNW(NEEENW(W|NEENESSESWW(S(WWSNEE|)EESSSEE(NNNW(NNNNW(S|NW(NNESESE(SSSS|NNNNWS(S|WNNENE(NNWNW(SS(E|WS(W(NNEWSS|)SSSENN|E))|NNENE(SS(S|W)|NWNNNWNWSW(NNNNNWNENWWSSSS(ENSW|)WSWNWSWWNENNWWS(SSW(WNNNE(SS|NENESEENWNEEE(SWSSE(SWWNSEEN|)N|NWWNENWNEESEEEESEESSWSSW(SEEE(NN(WSNE|)NNNNWNENNNWSWWWWWWNEEN(WWWWSESWWS(EEEEEES(WW|ENE(E|SS))|SWSESWWNWNNE(S|NNE(ENWWWSSWWWN(NEN(ESSWENNW|)W|WWSESSEESS(WWWWWSSWNWNWNENW(NNEES(W|EE(NWES|)SS(WNWSSNNESE|)E(EE|NN))|WSWWSSSWSSWSESW(SEESESWSSESEE(NWN(NNENEENN(NWN(E|NWWN(E|W(NEWS|)SSSSW(SEE(SWEN|)EN(NNWSS|ES)|NN)))|EESE(SSSSWWNN(WWSWSESSEN(EEE|NN)|E(NWNSES|)S)|E))|W)|SWWWNW)|WWNNWNNWWWSEESWS(WWN(E|WWWNENNWSWW(NNE(ENW(WW|NEENNEEN(EEEESWSEEEESE(NNNW(SWNWSNESEN|)NENENNES(NWSSWSNENNES|)|SSSWSWW(SE(E|SS)|NENN(ESNW|)NWSWWN(E|WNW(NEWS|)WWSSWSEENE(NWES|)SS(EN(EE(SWEN|)E|N)|WSSWNN))))|WWWW(SESWENWN|)NN(NESSNNWS|)WWS(W(N|SSWNWS)|E)))|S)|SWWW(NEEWWS|)SEESES(WWNSEE|)E(S|N(ESNW|)N(N|W))))|EE)))|SEN(NNNWWEESSS|)ESS(WS(E|S)|ENE(S|E))))|SS)))|ESENE(EENNNNWWWW(SEELine truncated