import java.io.File
fun main(args : Array<String>) {
val content = File(args[0]).readText()
val word = args[1]
println( search1(word,content) )
println( search2(word,content) )
println( search3(word,content) )
}
fun search1(word: String, content: String) : Boolean {
return (content.indexOf(word) != (-1))
}
fun search2(word: String, content: String) : Int {
var i = 0
var n = 0
while( { i = content.indexOf(word,i); i++ != -1 }() ) n++
return n
}
data class Search3Result(val found: Boolean, val count: Int, val indices: List<Pair<Int,Int>>)
fun search3(word: String, content: String) : Search3Result {
val indices = mutableListOf<Pair<Int,Int>>()
var l = 0
for( line in content.lines() ) {
var i = 0
while( { i = line.indexOf(word,i); i != -1 }() ){
indices.add(Pair(l, i++))
}
l++
}
return Search3Result(indices.size > 0, indices.size, indices)
}
aW1wb3J0IGphdmEuaW8uRmlsZQogCmZ1biBtYWluKGFyZ3MgOiBBcnJheTxTdHJpbmc+KSB7CiAgdmFsIGNvbnRlbnQgPSBGaWxlKGFyZ3NbMF0pLnJlYWRUZXh0KCkKICB2YWwgd29yZCAgICA9IGFyZ3NbMV0KIAogIHByaW50bG4oIHNlYXJjaDEod29yZCxjb250ZW50KSApCiAgcHJpbnRsbiggc2VhcmNoMih3b3JkLGNvbnRlbnQpICkKICBwcmludGxuKCBzZWFyY2gzKHdvcmQsY29udGVudCkgKQp9CiAKZnVuIHNlYXJjaDEod29yZDogU3RyaW5nLCBjb250ZW50OiBTdHJpbmcpIDogQm9vbGVhbiB7CiAgcmV0dXJuIChjb250ZW50LmluZGV4T2Yod29yZCkgIT0gKC0xKSkKfQogCmZ1biBzZWFyY2gyKHdvcmQ6IFN0cmluZywgY29udGVudDogU3RyaW5nKSA6IEludCB7CiAgdmFyIGkgPSAwCiAgdmFyIG4gPSAwCiAgd2hpbGUoIHsgaSA9IGNvbnRlbnQuaW5kZXhPZih3b3JkLGkpOyBpKysgIT0gLTEgfSgpICkgbisrCiAgcmV0dXJuIG4KfQogCiAKZGF0YSBjbGFzcyBTZWFyY2gzUmVzdWx0KHZhbCBmb3VuZDogQm9vbGVhbiwgdmFsIGNvdW50OiBJbnQsIHZhbCBpbmRpY2VzOiBMaXN0PFBhaXI8SW50LEludD4+KQpmdW4gc2VhcmNoMyh3b3JkOiBTdHJpbmcsIGNvbnRlbnQ6IFN0cmluZykgOiBTZWFyY2gzUmVzdWx0IHsKICB2YWwgaW5kaWNlcyA9IG11dGFibGVMaXN0T2Y8UGFpcjxJbnQsSW50Pj4oKQogIHZhciBsID0gMAogCiAgZm9yKCBsaW5lIGluIGNvbnRlbnQubGluZXMoKSApIHsKICAgIHZhciBpID0gMAogICAgd2hpbGUoIHsgaSA9IGxpbmUuaW5kZXhPZih3b3JkLGkpOyBpICE9IC0xIH0oKSApewogICAgICBpbmRpY2VzLmFkZChQYWlyKGwsIGkrKykpCiAgICB9CiAgICBsKysKICB9CiAKICByZXR1cm4gU2VhcmNoM1Jlc3VsdChpbmRpY2VzLnNpemUgPiAwLCBpbmRpY2VzLnNpemUsIGluZGljZXMpCn0KIAogCg==