Sha256: 696cb6807cf13fc0925ce1501ad3d1368e37efd9bdab8c891757c1485b616529

Contents?: true

Size: 593 Bytes

Versions: 188

Compression:

Stored size: 593 Bytes

Contents

fun <T> List<T>.relationshipTo(list: List<T>): Relationship {
    if (this == list)         return Relationship.EQUAL
    if (this.isSublist(list)) return Relationship.SUBLIST
    if (list.isSublist(this)) return Relationship.SUPERLIST

    return Relationship.UNEQUAL
}

private fun <T> List<T>.isSublist(list: List<T>): Boolean {
    val listSize = list.size

    if (size > listSize) return false

    val numberOfSublistCandidates = listSize - size + 1

    return (0 until numberOfSublistCandidates).any { startIndex ->
        list.subList(startIndex, startIndex + size) == this
    }
}

Version data entries

188 entries across 188 versions & 1 rubygems

Version Path
trackler-2.2.1.119 tracks/kotlin/exercises/sublist/.meta/src/reference/kotlin/Sublist.kt
trackler-2.2.1.118 tracks/kotlin/exercises/sublist/.meta/src/reference/kotlin/Sublist.kt
trackler-2.2.1.117 tracks/kotlin/exercises/sublist/.meta/src/reference/kotlin/Sublist.kt
trackler-2.2.1.116 tracks/kotlin/exercises/sublist/.meta/src/reference/kotlin/Sublist.kt
trackler-2.2.1.115 tracks/kotlin/exercises/sublist/.meta/src/reference/kotlin/Sublist.kt
trackler-2.2.1.114 tracks/kotlin/exercises/sublist/.meta/src/reference/kotlin/Sublist.kt
trackler-2.2.1.113 tracks/kotlin/exercises/sublist/.meta/src/reference/kotlin/Sublist.kt
trackler-2.2.1.111 tracks/kotlin/exercises/sublist/.meta/src/reference/kotlin/Sublist.kt
trackler-2.2.1.110 tracks/kotlin/exercises/sublist/.meta/src/reference/kotlin/Sublist.kt
trackler-2.2.1.109 tracks/kotlin/exercises/sublist/.meta/src/reference/kotlin/Sublist.kt
trackler-2.2.1.108 tracks/kotlin/exercises/sublist/.meta/src/reference/kotlin/Sublist.kt
trackler-2.2.1.107 tracks/kotlin/exercises/sublist/.meta/src/reference/kotlin/Sublist.kt
trackler-2.2.1.106 tracks/kotlin/exercises/sublist/.meta/src/reference/kotlin/Sublist.kt
trackler-2.2.1.105 tracks/kotlin/exercises/sublist/.meta/src/reference/kotlin/Sublist.kt
trackler-2.2.1.104 tracks/kotlin/exercises/sublist/.meta/src/reference/kotlin/Sublist.kt
trackler-2.2.1.103 tracks/kotlin/exercises/sublist/.meta/src/reference/kotlin/Sublist.kt
trackler-2.2.1.102 tracks/kotlin/exercises/sublist/.meta/src/reference/kotlin/Sublist.kt
trackler-2.2.1.101 tracks/kotlin/exercises/sublist/.meta/src/reference/kotlin/Sublist.kt
trackler-2.2.1.100 tracks/kotlin/exercises/sublist/.meta/src/reference/kotlin/Sublist.kt
trackler-2.2.1.99 tracks/kotlin/exercises/sublist/.meta/src/reference/kotlin/Sublist.kt