This commit is contained in:
2018-12-02 11:04:53 +01:00
parent 2cd5fbcbf4
commit 5230a7031d
3 changed files with 315 additions and 0 deletions

View File

@@ -46,6 +46,9 @@
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<configuration>
<jvmTarget>1.8</jvmTarget>
</configuration>
<executions>
<execution>
<id>compile</id>

View File

@@ -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<String> {
// 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

View File

@@ -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