Compare commits
No commits in common. "8c2851967478109cf3bfe3dedb64aef1eac4c618" and "10e59bd5ba9f0c2c7ab4129a024720870848433c" have entirely different histories.
8c28519674
...
10e59bd5ba
6 changed files with 0 additions and 210 deletions
13
03-a.kts
13
03-a.kts
|
@ -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)
|
|
21
03-b.kts
21
03-b.kts
|
@ -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)
|
|
59
04-a.kts
59
04-a.kts
|
@ -1,59 +0,0 @@
|
||||||
import java.util.Scanner
|
|
||||||
|
|
||||||
val scanner = Scanner(System.`in`)
|
|
||||||
|
|
||||||
val matrix = ArrayList<CharArray>()
|
|
||||||
|
|
||||||
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<CharArray>, 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<CharArray>, row: Int, col: Int, target: Char): Boolean {
|
|
||||||
return row in matrix.indices && col in matrix[row].indices && matrix[row][col] == target
|
|
||||||
}
|
|
47
04-b.kts
47
04-b.kts
|
@ -1,47 +0,0 @@
|
||||||
import java.util.*
|
|
||||||
|
|
||||||
val scanner = Scanner(System.`in`)
|
|
||||||
|
|
||||||
val matrix = ArrayList<CharArray>()
|
|
||||||
|
|
||||||
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<CharArray>, 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<CharArray>, row: Int, col: Int, target: Char): Boolean {
|
|
||||||
return row in matrix.indices && col in matrix[row].indices && matrix[row][col] == target
|
|
||||||
}
|
|
39
05-a.kts
39
05-a.kts
|
@ -1,39 +0,0 @@
|
||||||
import java.util.Scanner
|
|
||||||
|
|
||||||
val scanner = Scanner(System.`in`)
|
|
||||||
|
|
||||||
val rules = HashMap<Int, MutableSet<Int>>()
|
|
||||||
|
|
||||||
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<Int>()
|
|
||||||
}
|
|
||||||
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<Int>(), 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)
|
|
31
05-b.kts
31
05-b.kts
|
@ -1,31 +0,0 @@
|
||||||
import java.util.Scanner
|
|
||||||
|
|
||||||
val scanner = Scanner(System.`in`)
|
|
||||||
|
|
||||||
val rules = HashMap<Int, MutableSet<Int>>()
|
|
||||||
|
|
||||||
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<Int>()
|
|
||||||
}
|
|
||||||
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)
|
|
Loading…
Add table
Reference in a new issue