diff --git a/03-a.kts b/03-a.kts deleted file mode 100644 index 8451fe7..0000000 --- a/03-a.kts +++ /dev/null @@ -1,13 +0,0 @@ -import java.util.Scanner -import java.util.regex.Pattern - -val pattern: Pattern = Pattern.compile("mul\\([0-9]+,[0-9]+\\)") -val scanner = Scanner(System.`in`) - -var sum = 0 -while (true) { - val next: String = scanner.findWithinHorizon(pattern, 0) ?: break - - sum += next.replace("mul(", "").replace(")", "").split(",").map { it.toInt() }.let { (a, b) -> a*b } -} -println(sum) \ No newline at end of file diff --git a/03-b.kts b/03-b.kts deleted file mode 100644 index ff03734..0000000 --- a/03-b.kts +++ /dev/null @@ -1,21 +0,0 @@ -import java.util.Scanner -import java.util.regex.Pattern - -val pattern: Pattern = Pattern.compile("mul\\([0-9]+,[0-9]+\\)|do\\(\\)|don't\\(\\)") - -val scanner = Scanner(System.`in`) - -var sum = 0 -var enabled = true -while (true) { - val next: String = scanner.findWithinHorizon(pattern, 0) ?: break - - when (next) { - "do()" -> enabled = true - "don't()" -> enabled = false - else -> if (enabled) { - sum += next.replace("mul(", "").replace(")", "").split(",").map { it.toInt() }.let { (a, b) -> a*b } - } - } -} -println(sum) \ No newline at end of file diff --git a/04-a.kts b/04-a.kts deleted file mode 100644 index 672ec67..0000000 --- a/04-a.kts +++ /dev/null @@ -1,59 +0,0 @@ -import java.util.Scanner - -val scanner = Scanner(System.`in`) - -val matrix = ArrayList() - -while (scanner.hasNextLine()) { - val line = scanner.nextLine() - matrix.add(line.toCharArray()) -} - -var count = 0 - -matrix.forEachIndexed { row, line -> - line.forEachIndexed { col, char -> - count += searchFrom(matrix, row, col) - } -} -println(count) - -fun searchFrom(matrix: ArrayList, row: Int, col: Int): Int { - return (if (safeCheckMatrix(matrix, row, col, 'X') - && safeCheckMatrix(matrix, row, col + 1, 'M') - && safeCheckMatrix(matrix, row, col + 2, 'A') - && safeCheckMatrix(matrix, row, col + 3, 'S') - ) 1 else 0) + (if (safeCheckMatrix(matrix, row, col, 'X') - && safeCheckMatrix(matrix, row, col - 1, 'M') - && safeCheckMatrix(matrix, row, col - 2, 'A') - && safeCheckMatrix(matrix, row, col - 3, 'S') - ) 1 else 0) + (if (safeCheckMatrix(matrix, row, col, 'X') - && safeCheckMatrix(matrix, row + 1, col + 1, 'M') - && safeCheckMatrix(matrix, row + 2, col + 2, 'A') - && safeCheckMatrix(matrix, row + 3, col + 3, 'S') - ) 1 else 0) + (if (safeCheckMatrix(matrix, row, col, 'X') - && safeCheckMatrix(matrix, row + 1, col, 'M') - && safeCheckMatrix(matrix, row + 2, col, 'A') - && safeCheckMatrix(matrix, row + 3, col, 'S') - ) 1 else 0) + (if (safeCheckMatrix(matrix, row, col, 'X') - && safeCheckMatrix(matrix, row + 1, col - 1, 'M') - && safeCheckMatrix(matrix, row + 2, col - 2, 'A') - && safeCheckMatrix(matrix, row + 3, col - 3, 'S') - ) 1 else 0) + (if (safeCheckMatrix(matrix, row, col, 'X') - && safeCheckMatrix(matrix, row - 1, col + 1, 'M') - && safeCheckMatrix(matrix, row - 2, col + 2, 'A') - && safeCheckMatrix(matrix, row - 3, col + 3, 'S') - ) 1 else 0) + (if (safeCheckMatrix(matrix, row, col, 'X') - && safeCheckMatrix(matrix, row - 1, col, 'M') - && safeCheckMatrix(matrix, row - 2, col, 'A') - && safeCheckMatrix(matrix, row - 3, col, 'S') - ) 1 else 0) + (if (safeCheckMatrix(matrix, row, col, 'X') - && safeCheckMatrix(matrix, row - 1, col - 1, 'M') - && safeCheckMatrix(matrix, row - 2, col - 2, 'A') - && safeCheckMatrix(matrix, row - 3, col - 3, 'S') - ) 1 else 0) -} - -fun safeCheckMatrix(matrix: ArrayList, row: Int, col: Int, target: Char): Boolean { - return row in matrix.indices && col in matrix[row].indices && matrix[row][col] == target -} \ No newline at end of file diff --git a/04-b.kts b/04-b.kts deleted file mode 100644 index a8cfe20..0000000 --- a/04-b.kts +++ /dev/null @@ -1,47 +0,0 @@ -import java.util.* - -val scanner = Scanner(System.`in`) - -val matrix = ArrayList() - -while (scanner.hasNextLine()) { - val line = scanner.nextLine() - matrix.add(line.toCharArray()) -} - -var count = 0 - -matrix.forEachIndexed { row, line -> - line.forEachIndexed { col, char -> - count += searchFrom(matrix, row, col) - } -} -println(count) - -fun searchFrom(matrix: ArrayList, row: Int, col: Int): Int { - return (if (safeCheckMatrix(matrix, row, col, 'A') && - safeCheckMatrix(matrix, row - 1, col - 1, 'M') && - safeCheckMatrix(matrix, row - 1, col + 1, 'M') && - safeCheckMatrix(matrix, row + 1, col - 1, 'S') && - safeCheckMatrix(matrix, row + 1, col + 1, 'S') - ) 1 else 0) + (if (safeCheckMatrix(matrix, row, col, 'A') && - safeCheckMatrix(matrix, row + 1, col - 1, 'M') && - safeCheckMatrix(matrix, row + 1, col + 1, 'M') && - safeCheckMatrix(matrix, row - 1, col - 1, 'S') && - safeCheckMatrix(matrix, row - 1, col + 1, 'S') - ) 1 else 0) + (if (safeCheckMatrix(matrix, row, col, 'A') && - safeCheckMatrix(matrix, row - 1, col - 1, 'M') && - safeCheckMatrix(matrix, row + 1, col - 1, 'M') && - safeCheckMatrix(matrix, row - 1, col + 1, 'S') && - safeCheckMatrix(matrix, row + 1, col + 1, 'S') - ) 1 else 0) + (if (safeCheckMatrix(matrix, row, col, 'A') && - safeCheckMatrix(matrix, row - 1, col + 1, 'M') && - safeCheckMatrix(matrix, row + 1, col + 1, 'M') && - safeCheckMatrix(matrix, row - 1, col - 1, 'S') && - safeCheckMatrix(matrix, row + 1, col - 1, 'S') - ) 1 else 0) -} - -fun safeCheckMatrix(matrix: ArrayList, row: Int, col: Int, target: Char): Boolean { - return row in matrix.indices && col in matrix[row].indices && matrix[row][col] == target -} \ No newline at end of file diff --git a/05-a.kts b/05-a.kts deleted file mode 100644 index 8c88f89..0000000 --- a/05-a.kts +++ /dev/null @@ -1,39 +0,0 @@ -import java.util.Scanner - -val scanner = Scanner(System.`in`) - -val rules = HashMap>() - -while (scanner.hasNextLine()) { - val line = scanner.nextLine() - if (line == "") { - break; - } - - val (before, after) = line.split("|").map(String::toInt) - if (!rules.contains(before)) { - rules[before] = HashSet() - } - rules[before]!!.add(after) -} - -var sum = 0 -while (scanner.hasNextLine()) { - val line = scanner.nextLine() - val pages = line.split(",").map(String::toInt) - - val result = pages.fold(Pair(HashSet(), true)) { (appeared, isSafe), page -> - val shouldBeAfter = rules[page]?.toSet() ?: emptySet() - val violateRule = appeared.intersect(shouldBeAfter) - val stillSafe = isSafe && violateRule.isEmpty() - - appeared.add(page) - Pair(appeared, stillSafe) - } - - if (result.second) { - val pagesArray = pages.toIntArray() - sum += pagesArray[pagesArray.size / 2] - } -} -println(sum) \ No newline at end of file diff --git a/05-b.kts b/05-b.kts deleted file mode 100644 index 34e2db2..0000000 --- a/05-b.kts +++ /dev/null @@ -1,31 +0,0 @@ -import java.util.Scanner - -val scanner = Scanner(System.`in`) - -val rules = HashMap>() - -while (scanner.hasNextLine()) { - val line = scanner.nextLine() - if (line == "") { - break; - } - - val (before, after) = line.split("|").map(String::toInt) - if (!rules.contains(before)) { - rules[before] = HashSet() - } - rules[before]!!.add(after) -} - -var sum = 0 -while (scanner.hasNextLine()) { - val line = scanner.nextLine() - val pages = line.split(",").map(String::toInt) - val fixed = pages.sortedWith { l, r -> if (l == r) 0 else if (rules[l]?.contains(r) == true) -1 else 1 } - - if ("$pages" != "$fixed") { - val fixedArray = fixed.toIntArray() - sum += fixedArray[fixedArray.size / 2] - } -} -println(sum) \ No newline at end of file