diff --git a/pom.xml b/pom.xml index 833433c..f48d24a 100644 --- a/pom.xml +++ b/pom.xml @@ -46,6 +46,9 @@ org.jetbrains.kotlin kotlin-maven-plugin ${kotlin.version} + + 1.8 + compile diff --git a/src/main/kotlin/com/basdado/adventofcode/Day2.kt b/src/main/kotlin/com/basdado/adventofcode/Day2.kt new file mode 100644 index 0000000..e483e5d --- /dev/null +++ b/src/main/kotlin/com/basdado/adventofcode/Day2.kt @@ -0,0 +1,62 @@ +package com.basdado.adventofcode + +import java.nio.file.Files +import java.nio.file.Paths +import java.util.stream.Collectors +import java.util.stream.Stream + +fun main() { + + puzzle1() + puzzle2() +} + +fun puzzle1() { + println( + lines() + .flatMap{ line -> line.chars().mapToObj{ Integer.valueOf(it) } + // Count how many times each character appears per word + .collect(Collectors.groupingBy( { it }, Collectors.counting())) + // Filter on characters appearing more than once + .filter { it.value > 1L } + .map { it.value } + .distinct() + .stream() + } + .collect(Collectors.groupingBy({ it }, Collectors.counting())) + .map { it.value } + .stream() + .mapToLong { it } + .reduce { left, right -> left * right } + .orElse(0L) + ) +} + +fun puzzle2() { + + val ids = lines().collect(Collectors.toList()) + for (i in 0 until ids.size) { + + val shortIds = ids.stream() + .map { it.substring(0, i) + it.substring(i + 1) } + .sorted() + .collect(Collectors.toList()) + + var lastId = "" + for (shortId in shortIds) { + if (lastId == shortId) { + println(shortId) + return + } + lastId = shortId + } + } + +} + +fun lines(): Stream { +// return Stream.of("abcdef", "bababc", "abbcde", "abcdef", "abcccd", "aabcdd", "abcdee", "ababab") + return Files.lines(Paths.get(Day2::class.java.getResource("/day/2/input.txt").toURI())) +} + +class Day2 \ No newline at end of file diff --git a/src/main/resources/day/2/input.txt b/src/main/resources/day/2/input.txt new file mode 100644 index 0000000..5afe3c6 --- /dev/null +++ b/src/main/resources/day/2/input.txt @@ -0,0 +1,250 @@ +jplenqtlagxhivmwmscfukzodp +jbrehqtlagxhivmeyscfuvzodp +jbreaqtlagxzivmwysofukzodp +jxrgnqtlagxhivmwyscfukwodp +jbrenqtwagjhivmwysxfukzodp +jbrenqplagxhivmwyscfuazoip +jbrenqtlagxhivzwyscfldzodp +jbrefqtlagxhizmwyfcfukzodp +jbrenqtlagxhevmwfsafukzodp +jbrunqtlagxrivmsyscfukzodp +jbrenqtlaguhivmwyhlfukzodp +jbrcnstsagxhivmwyscfukzodp +jbrenqtlagozivmwyscbukzodp +jbrenqwlagxhivswysrfukzodp +jbrenstlagxhuvmiyscfukzodp +jbranqtlhgxhivmwysnfukzodp +jbrenqtvagxhinmxyscfukzodp +jbrenqtlagdhivmwyscfukxody +jbrenqtlagelavmwyscfukzodp +jbrenqtlagxhtvmwyhcfukzbdp +jbrenqwlagxhivmwyscfutzopp +jbrenqtlavxhibmtyscfukzodp +jbronqtlagxnivmwyscfuzzodp +jbredqtlagxhppmwyscfukzodp +jbrcnqtlogxhivmwysxfukzodp +jbremqtlagehivswyscfukzodp +jbrenqolagxhivmcyscfukzokp +jbrehqtlacxhgvmwyscfukzodp +fbrlnqtlagxhivmwyscbukzodp +zbrfnqtlagxhivrwyscfukzodp +jbregqtlagxnivmwyscfhkzodp +jbrenqtllgxnivmwystfukzodp +jurenqtlagxhivmwyscfulzoup +jbrenitdagxhivmwyxcfukzodp +jbrenqtlagxqivmwyscvuszodp +jbqenqwlagxhivmwyscfckzodp +jbrenqtlagxhivmwxscqupzodp +jbrenqtlagxhivmwysciuqiodp +jbrjnjtlagxhivmwyscfukzode +jbrenqtlagxhuvmwqscfukzods +jbrenqtlagxhuvmuyscfukzudp +ibrenqtlagxhivmwyscfuktokp +jbsenqtlagxhivcwyscfuksodp +jbrfnntlagxhivmwnscfukzodp +jzrenqulagxhivmwyscfukzodx +jbrenqtqygxhivmwyscfukzwdp +jbrenqtlagxfixmwyscfukzcdp +jbrenqaoagxhivmwyshfukzodp +jbrenqtlazxhivmworcfukzodp +jbrenqtlagxhicowyscfukrodp +jbrqnqtlagxhivzwyzcfukzodp +jbrenqtlalxhuvxwyscfukzodp +jbrenqtlqgxhhviwyscfukzodp +jbrenqtuggxhivmoyscfukzodp +jbrenqtlagxpivmwyscfukkodw +zbrenqhlagxhivmwyscdukzodp +jbrenutlagxxivmwyscfukzoqp +obrenqtlagxhivmwxscfuszodp +jbrenqtlagxhlvmwyscfuixodp +rbrenqtlagdhixmwyscfukzodp +jbrenqtlagxhivmwescfyszodp +jbrfnqtlagxhivmwyscaukzhdp +jbrenqtiagxhivmbyscfuxzodp +cbrrnqtuagxhivmwyscfukzodp +jbkenqtlagxhigmwysufukzodp +jbjewqtlagxhivmwyscfuqzodp +jbrznqtlagxvivmwyscfukzovp +jbrenttlacxhivmwyscfhkzodp +jblenqtlagxhivmwylcfukaodp +jbrenqtlagxhivmqysiftkzodp +jbrenqtlagwhikmwyscfukqodp +jbrenqtlegxhivmwvsckukzodp +jbrenqwzagxhiamwyscfukzodp +jbrenqtlagxhivcwyscfgkzodc +jbrenqtlagxxhvmwxscfukzodp +jbrenqtlngxhivmwyscfukoowp +jbreomtlagxhivmwpscfukzodp +jfrenqtlagxhivmwyscnumzodp +jbrenqtlagphipmwyscfukfodp +jvrenqtlagxhivmwyscfmkzodw +jbrenqtlaxxoiemwyscfukzodp +jbrenqtlagxhivmwyscemkzpdp +jbrenyjldgxhivmwyscfukzodp +jbrenqtlagxhivfvyspfukzodp +kbrenctlakxhivmwyscfukzodp +jbrmhqtlagxhivmwyscfuizodp +jbjenqtlagxlivmbyscfukzodp +jbrenqtlaaxhivmmyshfukzodp +jbronqtlagxhirmvyscfukzodp +jbcrnqtlagxwivmwyscfukzodp +jxrenszlagxhivmwyscfukzodp +jbpenqtlagxhivmwyscfukkody +jbrewqtlawxhivmwyscfukzhdp +jbrenqylagxhivmwlxcfukzodp +jbrenqtlagxxivtwywcfukzodp +jbrenqtlagxhcvgayscfukzodp +jbrenitlagxhivmwiscfukzohp +jbrenutlagxhivmwyscbukvodp +nbrenqtlagxhivmwysnfujzodp +jbrenqtlagxhivmwyqcfupzoop +jbrenqtrarxhijmwyscfukzodp +jbrenqtlagxhivmwysdfukzovy +jbrrnqtlagxhivmwyvcfukzocp +jbrenqtlagxhivmwyscfuvzzhp +jbhenitlagxhivmwysufukzodp +jbrenqtlagxhivmwyscfuwzoqx +kbrenqtlagxhivmwysqfdkzodp +jbrenqtlagxhivmwyxmfukzodx +jbcenatlagxxivmwyscfukzodp +jbrenhtlagvhdvmwyscfukzodp +jxrenqtlafxhivfwyscfukzodp +jbreaztlpgxhivmwyscfukzodp +tqrenqtlagxfivmwyscfukzodp +jbrenqgllgxhwvmwyscfukzodp +jbrejjtlagxhivmgyscfukzodp +jbrenqtlagxhivmwyscvukzoqv +jbrvnqtlagxsibmwyscfukzodp +jbrenqttagxhuvmwyscfukvodp +jbrenqteagxhivmwcscfukqodp +jbrenqtsabxhivmwyspfukzodp +jbbenqtlagxhivmwyscjukztdp +jnrenqtlagxhiimwydcfukzodp +jbrenqtlagxhfvmwyscxukzodu +jbrenqtluyxhiomwyscfukzodp +jbrenqvlagxhivmwyscuukzolp +ebrenqtlagxnivmwysrfukzodp +jbreeqtlatxhigmwyscfukzodp +jbrenqtvxgxhivmwyscfukzedp +jbrmnqtlagxhivmwywcfuklodp +jbreeqtvagxhivmwyscfukzody +jbrenptlagxhivmxyscfumzodp +jbrenqtlagxhivmwysgfukzfsp +jurenqtlagjhivmwkscfukzodp +jbrenntlagxhivmwtscffkzodp +jbrenqglagxhivmwyocfokzodp +wbrenqtlagxhivmwhscfukiodp +jbrenqtligxhivmqascfukzodp +jbrenqtlagxhivmwxscfukpojp +jurenqtlagxhivmmyscfbkzodp +jbrenqtmagxhivmwyscfrbzodp +jcrenqtlagxhivmwysefukzodm +jbrenqtlagxhicmwywcfukzodl +jbvanqtlagfhivmwyscfukzodp +jbmenqjlagxhivmwyscfdkzodp +jbrenqtlagohivvwysctukzodp +jbrenqtdagxdivmwyscfckzodp +kbrefqtlagxhivmwyscfuazodp +jbrwnqtoagxhivmwyswfukzodp +jjhenqtlagxhivmwyscfukzorp +jbgsnqtlagxhivkwyscfukzodp +jbrynqtlagxhivmsyspfukzodp +jbrenftlmkxhivmwyscfukzodp +nbrenqtxagxhmvmwyscfukzodp +jbrunqtlagxhijmwysmfukzodp +jbrenqtlagmaivmwyscfukzowp +jbrerqtlagxhihmwyscfukzudp +jbrenqtlagahivmwysckukzokp +kbrenqtlagxhirmwyscfupzodp +jbrrnqtlagxhivmwyecfukzodz +jbrenqtlavxhivmwyscfusiodp +jnrenqtlagxhivmwyhcfukzodw +jbretqtlagfhivmwyscfukzrdp +jbreoqtnagxhivmwyscfukzopp +jbrenbtllgxhivmwsscfukzodp +jbrenqtlmgxhivmwyscfuwzedp +jbnenqtlagxhivbwyscfukzokp +jbrenqslagxhivmvyscfukzndp +jbrenqtlagxzivmwuscfukztdp +gbrenqtlagxhyvmwyscfukjodp +jbrenqteagxhivmwyscfuszedp +jbrenqtlaglhivmwysafukkodp +jbrenqtlagxhcvmwascfukzogp +jbrenqtlagxhsvmkcscfukzodp +jbrenqslbgxhivmwyscfufzodp +cbrenqtlagxhivkwtscfukzodp +jbrenqtltgxhivmzyscfukzodj +jbrgnqtlagihivmwyycfukzodp +vbrenqauagxhivmwyscfukzodp +jbrqnqtlagjhivmwyscfqkzodp +jbrenqtlakxhivmwyscfukvobp +jcrenqelagxhivmwtscfukzodp +jbrrnqtlagxhlvmwyscfukzodw +jbrenqtlagxhivmwkscaumzodp +jbrenqdlagxhivmiescfukzodp +jhrenqtlagxhqvmwyscmukzodp +jbrenqtlaghhivmwyscfukkoyp +jowenqtlagxyivmwyscfukzodp +jbrenitaagxhivmwyscfqkzodp +jbrenqtlagxhivmwyscfnkbudp +jbyenqtlagxhivmiyscfukzhdp +jbrenitlagxhibjwyscfukzodp +jbrenqtlavxhjvmwpscfukzodp +jbrenqyaagxhivmwyscflkzodp +jbrenqylagxhivmwyicfupzodp +jbrenqtlagxmevmwylcfukzodp +lbrenqtlagxhiqmwyscfikzodp +jbrenqtnarxhivmwyscfmkzodp +jbrenqtlamxhivmwyscfnkzorp +jbbenqtlavxhivmwyscjukztdp +jbrenqtlagxhivmwyscfnliodp +jbwenetlagxhivmwyscfukzodt +jbrenatlagxhivmwysmfujzodp +jbrsnstlagxhivmwyscfukgodp +jbwvnitlagxhivmwyscfukzodp +jbrenqtbagxhkvmwypcfukzodp +jbrlnqtlafxhivmwyscfukdodp +jbrenztlanxhivmwyscjukzodp +jbrepqtlagxhivmwudcfukzodp +jbrenqtlagxiivmwdscfskzodp +jbrdjqtlagxhivmwyschukzodp +jbrenqtoaguhivmwyccfukzodp +jdrexqjlagxhivmwyscfukzodp +jbrenqtlagxhovmwysckukaodp +pbrfnqblagxhivmwyscfukzodp +jbrenqtlagxrivgiyscfukzodp +jbrelqtgagxhivmryscfukzodp +jbrenqtlagxhicmwjscfikzodp +jbrenqjlagxhivmwyscfmkjodp +jbrenqtlagxpivmwzscgukzodp +jbienqzlagxpivmwyscfukzodp +jbrenqvlagxhivmwdscfukzodx +owrenqtlagxhivmwyicfukzodp +gbrenqtlaathivmwyscfukzodp +jbgenqtlafxhivmwysqfukzodp +jbrenqtlagxhivtwsscfukzokp +jbrnnqylanxhivmwyscfukzodp +ebrenqolagxhivmcyscfukzodp +jbrenqtlarnhivgwyscfukzodp +jbmenqtlagxhivmvyscfukzgdp +jbrevqtlaglhivmwystfukzodp +jbrenqplanthivmwyscfukzodp +jbrenqtlagxhivmkyscbukzosp +jbrenqtlagxaivmwyscfugzodo +jbrenqplagxhnvmwyscfjkzodp +jbrenqtlagxhivgwyscfusrodp +cbrenqtlagxhivmwysmfukzody +jbrenquwaexhivmwyscfukzodp +jbredqtlagxhdvmwyscfukzoup +jbrxnqtlagxhivmwysczukaodp +jbrenqtlafnhivmwyscfuczodp +jbbdkqtlagxhivmwyscfukzodp +ubrenqtlagxhivkwyucfukzodp +ebjenqtlagxhivmwyscfukzodj +jbgenqtlugxxivmwyscfukzodp +jbrenqtoagxqivmwdscfukzodp +bbeenqtlagxhivmwyscfumzodp +jbfeeqtlagxhivmwmscfukzodp +jbrlnqtlagxhiimwescfukzodp +jbrenqtlagwoivmwyscfukhodp +jbrenqtlagnhivmwyscfuszovp