Ayfri
01/11/2022, 6:51 PMval List<Int>.minmaxDifference get() = maxOf { it } - minOf { it }
// chestRoom is a set, blockX/Y/Z are Int
// CHEST_ROOM_MIN_SIZE & MAX_SIZE are const val Int
if (chestRoom.map { it.blockX }.minmaxDifference in CHEST_ROOM_MIN_SIZE..CHEST_ROOM_MAX_SIZE) return false
if (chestRoom.map { it.blockY }.minmaxDifference in CHEST_ROOM_MIN_SIZE..CHEST_ROOM_MAX_SIZE) return false
if (chestRoom.map { it.blockZ }.minmaxDifference in CHEST_ROOM_MIN_SIZE..CHEST_ROOM_MAX_SIZE) return false
ephemient
01/11/2022, 7:05 PMinline fun <T, R : Comparable<R>> Iterable<T>.minmaxOrNullBy(selector: (T) -> R): Pair<R, R>?
chestRoom.minmaxOrNullBy { it.blockX }?.let { (min, max) -> max - min in CHEST_ROOM_MIN_SIZE..CHEST_ROOM_MAX_SIZE }
inline fun <T> Iterable<T>.largestDeltaBy(selector: (T) -> Int): Int
chestRoom.largestDeltaBy { it.blockX } in CHEST_ROOM_MIN_SIZE..CHEST_ROOM_MAX_SIZE
insteadRuckus
01/11/2022, 7:05 PMfun Set<ChestRoom>.calculateBounds(): Bounds
, and then
return bounds.dx in MIN..MAX && bouds.dy in MIN..MAX && <http://bounds.dz|bounds.dz> in MIN..MAX
ephemient
01/11/2022, 7:06 PMarrayOf(::blockX, ::blockY, ::blockZ)
.any { largestDeltaBy(it) !in CHEST_ROOM_MIN_SIZE..CHEST_ROOM_MAX_SIZE }
but that doesn't really help clarity in this case, IMOAyfri
01/11/2022, 7:08 PMRuckus
01/11/2022, 7:10 PMbezrukov
01/11/2022, 8:16 PMamplitudeOf { key }
name):
return (0 until AXES).none { axe ->
chest.maxOf { it.block[axe]} - chest.minOf { it.block[axe] } in CHEST_ROOM_MIN_SIZE..CHEST_ROOM_MAX_SIZE
}
return (0 until AXES).