diff options
-rw-r--r-- | src/Day10.kt | 42 | ||||
-rw-r--r-- | src/Day13.kt | 6 | ||||
-rw-r--r-- | src/Day15.kt | 2 | ||||
-rw-r--r-- | src/Day17.kt | 3 |
4 files changed, 27 insertions, 26 deletions
diff --git a/src/Day10.kt b/src/Day10.kt index 9985014..8f73f2f 100644 --- a/src/Day10.kt +++ b/src/Day10.kt @@ -1,4 +1,4 @@ -enum class ChunkDelimeter(val open: Char, val close: Char) { +enum class ChunkDelimiter(val open: Char, val close: Char) { Parentheses('(', ')'), Brackets('[', ']'), Braces('{', '}'), @@ -7,48 +7,48 @@ enum class ChunkDelimeter(val open: Char, val close: Char) { companion object { fun isOpening(character: Char): Boolean = values().any { it.open == character } fun isClosing(character: Char): Boolean = values().any { it.close == character } - fun from(character: Char): ChunkDelimeter = values().find { it.open == character || it.close == character }!! + fun from(character: Char): ChunkDelimiter = values().find { it.open == character || it.close == character }!! } } sealed class SyntaxError { object None : SyntaxError() - class IncompleteLine(private val stack: ArrayDeque<ChunkDelimeter>) : SyntaxError() { + class IncompleteLine(private val stack: ArrayDeque<ChunkDelimiter>) : SyntaxError() { val score: Long get() { - fun delimeterValue(delimeter: ChunkDelimeter): Int = when (delimeter) { - ChunkDelimeter.Parentheses -> 1 - ChunkDelimeter.Brackets -> 2 - ChunkDelimeter.Braces -> 3 - ChunkDelimeter.Angled -> 4 + fun delimiterValue(delimiter: ChunkDelimiter): Int = when (delimiter) { + ChunkDelimiter.Parentheses -> 1 + ChunkDelimiter.Brackets -> 2 + ChunkDelimiter.Braces -> 3 + ChunkDelimiter.Angled -> 4 } - return stack.fold(0) { acc, elem -> acc * 5 + delimeterValue(elem) } + return stack.fold(0) { acc, elem -> acc * 5 + delimiterValue(elem) } } } - class CorruptedLine(private val invalidDelimeter: ChunkDelimeter) : SyntaxError() { + class CorruptedLine(private val invalidDelimiter: ChunkDelimiter) : SyntaxError() { val score: Int - get() = when (invalidDelimeter) { - ChunkDelimeter.Parentheses -> 3 - ChunkDelimeter.Brackets -> 57 - ChunkDelimeter.Braces -> 1197 - ChunkDelimeter.Angled -> 25137 + get() = when (invalidDelimiter) { + ChunkDelimiter.Parentheses -> 3 + ChunkDelimiter.Brackets -> 57 + ChunkDelimiter.Braces -> 1197 + ChunkDelimiter.Angled -> 25137 } } } fun parse(line: String): SyntaxError { - val stack = ArrayDeque<ChunkDelimeter>() + val stack = ArrayDeque<ChunkDelimiter>() for (char in line) { when { - ChunkDelimeter.isOpening(char) -> stack.addFirst(ChunkDelimeter.from(char)) - ChunkDelimeter.isClosing(char) -> { - val closingDelimeter = ChunkDelimeter.from(char) - if (stack.first() == closingDelimeter) { + ChunkDelimiter.isOpening(char) -> stack.addFirst(ChunkDelimiter.from(char)) + ChunkDelimiter.isClosing(char) -> { + val closingDelimiter = ChunkDelimiter.from(char) + if (stack.first() == closingDelimiter) { stack.removeFirst() } else { - return SyntaxError.CorruptedLine(closingDelimeter) + return SyntaxError.CorruptedLine(closingDelimiter) } } } diff --git a/src/Day13.kt b/src/Day13.kt index f37c527..c8bb8c6 100644 --- a/src/Day13.kt +++ b/src/Day13.kt @@ -16,7 +16,7 @@ sealed class FoldCommand { .toSet() } - class AlongY(val y: Int) : FoldCommand() { + class AlongY(private val y: Int) : FoldCommand() { override fun dispatch(dots: Set<Pos2D>): Set<Pos2D> = dots .filter { it.y != y } .map { @@ -62,9 +62,7 @@ fun main() { fun part1(input: List<String>): Int { val (dots, commands) = parseOrigami(input) - val res = commands.first().dispatch(dots).size - - return res + return commands.first().dispatch(dots).size } fun part2(input: List<String>): String { diff --git a/src/Day15.kt b/src/Day15.kt index 763f723..abb4bfc 100644 --- a/src/Day15.kt +++ b/src/Day15.kt @@ -9,7 +9,7 @@ class CustomPriorityQueue<T>(private val array: Array<T>, private val comparator private fun indexOfStartingFrom(elem: T, start: Int): Int { for (i in (start until array.size)) { - if (i == elem) { + if (array[i] == elem) { return i } } diff --git a/src/Day17.kt b/src/Day17.kt new file mode 100644 index 0000000..32f47fe --- /dev/null +++ b/src/Day17.kt @@ -0,0 +1,3 @@ +fun main() { + +} |