Sha256: 4df695b8b898c397dcf46013512b977e06782c9d624b17a45e6ce215ab8714a5
Contents?: true
Size: 641 Bytes
Versions: 396
Compression:
Stored size: 641 Bytes
Contents
object Isogram { fun isIsogram(input: String): Boolean { val sanitizedInput = input.toLowerCase().replace("[.!?\\-\\s]".toRegex(), "") val charCounts = sanitizedInput.toList().countBy() return !charCounts.any { it.value > 1 } } } fun <T> Iterable<T>.countBy() : Map<T, Int> = this.countBy({it}) fun <T, M> Iterable<T>.countBy(transformer: (T) -> M) : Map<M, Int> { val emptyMap = mapOf<M, Int>() return this.fold(emptyMap) {accumulator, item -> val transformedItem = transformer(item) accumulator + Pair(transformedItem, accumulator.getOrElse(transformedItem, {0}) + 1) } }
Version data entries
396 entries across 396 versions & 1 rubygems