|
|
@@ -0,0 +1,52 @@
|
|
|
+import java.nio.file.Files
|
|
|
+import kotlin.io.path.Path
|
|
|
+
|
|
|
+fun main() {
|
|
|
+
|
|
|
+ val lines = Files.readAllLines(Path("puzzleInput/03-input.txt"))
|
|
|
+ println(lines)
|
|
|
+ val day = Day03(lines)
|
|
|
+ day.solvePuzzlePartOne()
|
|
|
+// day.solvePuzzlePartTwo()
|
|
|
+}
|
|
|
+
|
|
|
+class Day03(val lines: MutableList<String>) {
|
|
|
+
|
|
|
+ fun solvePuzzlePartOne() {
|
|
|
+
|
|
|
+ val bitLength = lines.first().length
|
|
|
+ val onesPerPos = IntArray(bitLength)
|
|
|
+ for (line in lines) {
|
|
|
+ for (i in 0 until bitLength) {
|
|
|
+ if (line[i].digitToInt() == 1) {
|
|
|
+ onesPerPos[i] += 1
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ var gammaString: String = ""
|
|
|
+ var epsilonString: String = ""
|
|
|
+ for (pos in onesPerPos) {
|
|
|
+ if (pos > lines.size/2) {
|
|
|
+ gammaString += "1"
|
|
|
+ epsilonString += "0"
|
|
|
+ } else {
|
|
|
+ gammaString += "0"
|
|
|
+ epsilonString += "1"
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ println(onesPerPos.toList())
|
|
|
+ val gamma = gammaString.toInt(2)
|
|
|
+ val epsilon = epsilonString.toInt(2)
|
|
|
+ println("Gamma $gammaString->$gamma")
|
|
|
+ println("Gamma $epsilonString->$epsilon")
|
|
|
+ val power = gamma * epsilon
|
|
|
+ println("PartOne: $power")
|
|
|
+ }
|
|
|
+
|
|
|
+ fun solvePuzzlePartTwo() {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+}
|