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

Version Path
trackler-2.2.1.180 tracks/kotlin/exercises/isogram/.meta/src/reference/kotlin/Isogram.kt
trackler-2.2.1.179 tracks/kotlin/exercises/isogram/.meta/src/reference/kotlin/Isogram.kt
trackler-2.2.1.178 tracks/kotlin/exercises/isogram/.meta/src/reference/kotlin/Isogram.kt
trackler-2.2.1.177 tracks/kotlin/exercises/isogram/.meta/src/reference/kotlin/Isogram.kt
trackler-2.2.1.176 tracks/kotlin/exercises/isogram/.meta/src/reference/kotlin/Isogram.kt
trackler-2.2.1.175 tracks/kotlin/exercises/isogram/.meta/src/reference/kotlin/Isogram.kt
trackler-2.2.1.174 tracks/kotlin/exercises/isogram/.meta/src/reference/kotlin/Isogram.kt
trackler-2.2.1.173 tracks/kotlin/exercises/isogram/.meta/src/reference/kotlin/Isogram.kt
trackler-2.2.1.172 tracks/kotlin/exercises/isogram/.meta/src/reference/kotlin/Isogram.kt
trackler-2.2.1.171 tracks/kotlin/exercises/isogram/.meta/src/reference/kotlin/Isogram.kt
trackler-2.2.1.170 tracks/kotlin/exercises/isogram/.meta/src/reference/kotlin/Isogram.kt
trackler-2.2.1.169 tracks/kotlin/exercises/isogram/.meta/src/reference/kotlin/Isogram.kt
trackler-2.2.1.167 tracks/kotlin/exercises/isogram/.meta/src/reference/kotlin/Isogram.kt
trackler-2.2.1.166 tracks/kotlin/exercises/isogram/.meta/src/reference/kotlin/Isogram.kt
trackler-2.2.1.165 tracks/kotlin/exercises/isogram/.meta/src/reference/kotlin/Isogram.kt
trackler-2.2.1.164 tracks/kotlin/exercises/isogram/.meta/src/reference/kotlin/Isogram.kt
trackler-2.2.1.163 tracks/kotlin/exercises/isogram/.meta/src/reference/kotlin/Isogram.kt
trackler-2.2.1.162 tracks/kotlin/exercises/isogram/.meta/src/reference/kotlin/Isogram.kt
trackler-2.2.1.161 tracks/kotlin/exercises/isogram/.meta/src/reference/kotlin/Isogram.kt
trackler-2.2.1.160 tracks/kotlin/exercises/isogram/.meta/src/reference/kotlin/Isogram.kt