Made Day10 more streamy
This commit is contained in:
@@ -2,6 +2,9 @@ package com.basdado.adventofcode.day10
|
|||||||
|
|
||||||
import com.basdado.adventofcode.lines
|
import com.basdado.adventofcode.lines
|
||||||
import java.util.stream.Collectors
|
import java.util.stream.Collectors
|
||||||
|
import java.util.stream.IntStream
|
||||||
|
import java.util.stream.Stream
|
||||||
|
import java.util.stream.StreamSupport
|
||||||
import kotlin.math.PI
|
import kotlin.math.PI
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
import kotlin.math.atan2
|
import kotlin.math.atan2
|
||||||
@@ -30,22 +33,17 @@ object Day10 {
|
|||||||
.entries
|
.entries
|
||||||
.sortedBy { val angle = (it.key.angle() + 0.5 * PI); if (angle < 0) 2*PI + angle else angle }
|
.sortedBy { val angle = (it.key.angle() + 0.5 * PI); if (angle < 0) 2*PI + angle else angle }
|
||||||
.map { it.value.sortedBy( Vector2i::manhattan ) }
|
.map { it.value.sortedBy( Vector2i::manhattan ) }
|
||||||
// And now we're gonna keep taking one of each list until we reach number 200
|
val sortedAsteroidIterators = sortedAsteroidLists.map { it.iterator() }
|
||||||
var listIndex = 0
|
|
||||||
val itemIndexPerList = IntArray(sortedAsteroidLists.size)
|
val asteroid200 = optimalAsteroid.first + IntStream.range(0, 1000000)
|
||||||
var i = 0
|
.mapToObj { sortedAsteroidIterators[it % sortedAsteroidIterators.size] }
|
||||||
var curItem: Vector2i? = null
|
.sequential()
|
||||||
while (i < 200) {
|
.filter { it.hasNext() }
|
||||||
val list = sortedAsteroidLists[listIndex]
|
.map { it.next() }
|
||||||
if (itemIndexPerList[listIndex] < list.size) {
|
.skip(199)
|
||||||
curItem = list[itemIndexPerList[listIndex]]
|
.findFirst()
|
||||||
// println(optimalAsteroid.first + curItem)
|
.get()
|
||||||
itemIndexPerList[listIndex]++
|
|
||||||
i++
|
|
||||||
}
|
|
||||||
listIndex++
|
|
||||||
}
|
|
||||||
val asteroid200 = optimalAsteroid.first + curItem!!
|
|
||||||
println(asteroid200.x * 100 + asteroid200.y)
|
println(asteroid200.x * 100 + asteroid200.y)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user