2023-12-01 16:30:59 -05:00

37 lines
932 B
Kotlin

package net.mezimmah.wkt9.keypad
import net.mezimmah.wkt9.exception.MissingLetterCode
import java.lang.StringBuilder
class Keypad {
private val letterCodeMap: MutableMap<Char, Int> = mutableMapOf()
init {
KeyLayout.numeric.forEach { (key, code) ->
indexKeyLetters(key, code)
}
}
private fun indexKeyLetters(key: Key, code: Int) {
KeyLayout.chars[key]?.map { letter ->
letterCodeMap[letter] = code
}
}
fun getCodeForWord(word: String): String {
val builder = StringBuilder()
val normalized = word.lowercase()
for (letter in normalized) {
val code = codeForLetter(letter) ?: throw MissingLetterCode("No code found for '$letter'")
builder.append(code)
}
return builder.toString()
}
private fun codeForLetter(letter: Char): Int? {
return letterCodeMap[letter]
}
}