Files
grokking_algorithms/06_breadth-first_search/kotlin/01_breadth-first_search.kt
NikitaLipatov 64a09d6584 05 & 06 exercises (#114)
Co-authored-by: Aditya Bhargava <bluemangroupie@gmail.com>
2022-11-18 14:34:48 -06:00

29 lines
764 B
Kotlin

import java.util.*
val graph = hashMapOf(
"You" to listOf("Sergey", "Viktoria"),
"Viktoria" to listOf("Sergey", "Vladimir"),
"Vladimir" to listOf("Sergey", "Andrew", "Nikita", "Boris")
)
private fun breadthFirstSearch(name: String) {
val queue = ArrayDeque(graph[name])
val searched = arrayListOf<String>()
while (queue.isNotEmpty()) {
val person = queue.poll()
if (!searched.contains(person)) {
if (personIsSeller(person)) {
println("$person is a mango seller!")
return
} else {
graph[person]?.let { queue.addAll(it) }
searched.add(person)
}
}
}
println("No mango sellers found!")
}
private fun personIsSeller(name: String): Boolean = name.endsWith("s")
fun main(args: Array<String>) = println(breadthFirstSearch("You"))