Joris PZ
12/01/2018, 6:59 AMJoris PZ
12/01/2018, 7:00 AMJVM 97, 18, 52, 11, 39, 16, 29, 14, 27, 14, 12, 13, 15, 49, 15, 14, 16, 16, 53, 11, 11, 11, 12, 10, 12
JS 102, 83, 61, 83, 71, 65, 62, 53, 81, 45, 71, 82, 87, 57, 46, 108, 59, 70, 49, 56, 147, 58, 51, 95, 75
MinGW 447, 435, 447, 420, 390, 408, 452, 419, 426, 395, 403, 453, 406, 407, 437, 407, 439, 426, 380, 415, 397, 432, 394, 460, 442
andyb
12/01/2018, 9:27 AMJoris PZ
12/01/2018, 9:57 AMfun <T> Sequence<T>.infinite() = sequence {
while (true) {
yieldAll(this@infinite)
}
}
andyb
12/01/2018, 10:11 AMstkent
12/01/2018, 12:44 PMfun <T> List<T>.loopForever() = sequence { while (true) yieldAll(this@loopForever) }
stkent
12/01/2018, 12:44 PMtodd.ginsberg
12/01/2018, 1:51 PMfun <T> List<T>.toInfiniteSequence(): Sequence<T> = sequence {
if(this@toInfiniteSequence.isEmpty()) {
return@sequence
}
while(true) {
yieldAll(this@toInfiniteSequence)
}
}
todd.ginsberg
12/01/2018, 1:53 PMstkent
12/01/2018, 1:55 PMval part2 = frequencyShifts
.loopForever()
.accumulate(Int::plus)
.firstRepeat()
π€·ββοΈtodd.ginsberg
12/01/2018, 2:00 PMtodd.ginsberg
12/01/2018, 2:01 PMtodd.ginsberg
12/01/2018, 2:11 PMkarelpeeters
12/01/2018, 2:41 PMprintln(numbers.sumBy { it })
val seen = mutableSetOf(0)
var curr = 0
outer@while (true) {
for (number in numbers) {
curr += number
if (!seen.add(curr)) {
println(curr)
break@outer
}
}
}
stkent
12/01/2018, 2:57 PMsumBy
rather than sum
there?karelpeeters
12/01/2018, 2:58 PM.toInt
there simple smilestkent
12/01/2018, 2:58 PMandyb
12/01/2018, 3:18 PMfun firstRepeatedFrequency(frequencyShifts: List<Int>): Int {
val prevFrequencies = mutableSetOf<Int>()
val frequencies = frequencyShifts.asInfiniteSequence().accumulate()
return frequencies.first { !prevFrequencies.add(it) }
}
karelpeeters
12/01/2018, 3:21 PMaccumulate
is something you wrote yourself too, right?andyb
12/01/2018, 3:22 PMfun Sequence<Int>.accumulate() : Sequence<Int> = sequence {
var value = 0
forEach {
value += it
yield(value)
}
}
karelpeeters
12/01/2018, 3:23 PMandyb
12/01/2018, 3:23 PMkarelpeeters
12/01/2018, 3:24 PMresults in+1, +1, -2
0
karelpeeters
12/01/2018, 3:25 PMandyb
12/01/2018, 3:25 PMstkent
12/01/2018, 3:32 PMfun <T> Sequence<T>.accumulate(operation: (accumulated: T, next: T) -> T): Sequence<T> {
val iterator = iterator()
if (!iterator.hasNext()) return emptySequence()
return sequence {
var accumulated = iterator.next().also { yield(it) }
for (next in iterator) {
accumulated = operation(accumulated, next)
yield(accumulated)
}
}
}
karelpeeters
12/01/2018, 3:35 PMstkent
12/01/2018, 3:35 PMtodd.ginsberg
12/01/2018, 4:40 PMfun solvePart2(): Int {
val frequencies = mutableSetOf(0)
var sum = 0
return input.toInfiniteSequence()
.map {
sum += it
sum
}
.first { !frequencies.add(it) }
}
todd.ginsberg
12/01/2018, 4:41 PMtodd.ginsberg
12/01/2018, 4:48 PMtodd.ginsberg
12/01/2018, 5:13 PMtodd.ginsberg
12/01/2018, 5:13 PMkarelpeeters
12/01/2018, 5:14 PMtodd.ginsberg
12/01/2018, 5:15 PMtodd.ginsberg
12/01/2018, 6:59 PMtipsy
12/01/2018, 7:06 PMval calibrations = File("input/day1_input.txt").readLines().map { it.toInt() }
val frequencies = mutableSetOf<Int>()
var count = 0
var frequency = 0
while (true) {
frequency += calibrations[count % calibrations.size]
if (frequencies.contains(frequency)) {
return println("part2: $frequency")
}
frequencies.add(frequency)
count++
}
morcerfdumas
12/01/2018, 7:44 PMif (!frequencies.add(frequency)) return println("part2: $frequency")
and replace while
and count
with for (count in 0..Int.MAX_VALUE)