warriorprincess
07/24/2018, 3:25 PMfun findCombs(res: List<String>, digis: List<Int>) : List<String> = if (digitss.isEmpty()) res
else for (letter in map[digis[0]]) findCombs(res + letter, digis.subList(1, digis.lastIndex))robin
07/24/2018, 3:27 PMdigis is not empty?robin
07/24/2018, 3:28 PMList<String>, but right now it doesn't.warriorprincess
07/24/2018, 3:29 PMwarriorprincess
07/24/2018, 3:29 PMwarriorprincess
07/24/2018, 3:29 PMrobin
07/24/2018, 3:33 PMwarriorprincess
07/24/2018, 3:34 PMwarriorprincess
07/24/2018, 3:34 PMfun findCombs(res: List<String>, digis: List<Int>) : List<String> {
if (digitss.isEmpty()) return res
for (letter in map[digis[0]]) findCombs(res + letter, digis.subList(1, digis.lastIndex))
}warriorprincess
07/24/2018, 3:34 PMwarriorprincess
07/24/2018, 3:35 PMwarriorprincess
07/24/2018, 3:35 PMfor (letter in map[digis[0]]) is throwing an error as hashmap is nullablewarriorprincess
07/24/2018, 3:35 PMfor (letter in map!![digis[0]]) still throws the error thoughwarriorprincess
07/24/2018, 3:35 PMarekolek
07/24/2018, 3:36 PMmap.getValuerobin
07/24/2018, 3:36 PMrobin
07/24/2018, 3:37 PMfun findCombs(res: List<String>, digis: List<Int>): List<String> =
if (digis.isEmpty()) {
res
} else {
map[digis[0]]!!.flatMap { letter ->
findCombs(res + letter, digis.subList(1, digis.lastIndex))
}
}robin
07/24/2018, 3:42 PMfun findCombs(digits: List<Int>) : List<String> =
digits.flatMap { map.getValue(it) }arekolek
07/24/2018, 3:43 PMarekolek
07/24/2018, 3:43 PMmap is val map: Map<Int, List<String>>arekolek
07/24/2018, 3:53 PMfun findCombs(digits: List<Int>): List<String> {
return digits.fold(listOf("")) { acc, i ->
acc.flatMap { prefix ->
map.getValue(i).map { suffix ->
prefix + suffix
}
}
}
}warriorprincess
07/24/2018, 4:59 PMwarriorprincess
07/24/2018, 5:00 PMacc is initially empty, then why will acc.flatmap have even one 'iteration' (i.e. there is no prefix present)arekolek
07/24/2018, 5:00 PMemptyList() and then there were indeed zero iterationsarekolek
07/24/2018, 5:00 PMlistOf("") that's differentarekolek
07/24/2018, 5:01 PMwarriorprincess
07/24/2018, 5:01 PMwarriorprincess
07/24/2018, 5:01 PMwarriorprincess
07/24/2018, 5:02 PMwarriorprincess
07/24/2018, 5:02 PMarekolek
07/24/2018, 5:02 PMwarriorprincess
07/24/2018, 5:02 PMwarriorprincess
07/24/2018, 5:02 PMfun findCombs(res: List<String>, digis: List<Int>) : List<String> {
if (digitss.isEmpty()) return res
for (letter in map?.getValue(digis[0])) findCombs(res + letter, digis.subList(1, digis.lastIndex))
}arekolek
07/24/2018, 5:03 PMif is not truewarriorprincess
07/24/2018, 5:03 PMres + letterwarriorprincess
07/24/2018, 5:03 PMarekolek
07/24/2018, 5:04 PMmap.getValue(digis[0]) should be enougharekolek
07/24/2018, 5:05 PMmap type is, so it's difficult to say what's wrongwarriorprincess
07/24/2018, 5:05 PMwarriorprincess
07/24/2018, 5:05 PM?. was unnecessarywarriorprincess
07/24/2018, 5:05 PMwarriorprincess
07/24/2018, 5:05 PMval map: HashMap<Int, List<Char>> = hashMapOf(2 to listOf('a','b','c'), 3 to listOf('d','e','f'), 4 to listOf('g','h','i'), 5 to listOf('j','k','l'),
6 to listOf('m','n','o'), 7 to listOf('p','q','r', 's'), 8 to listOf('t','u', 'v'), 9 to listOf('w','x','y','z'))warriorprincess
07/24/2018, 5:06 PMwarriorprincess
07/24/2018, 5:06 PMwarriorprincess
07/24/2018, 5:06 PMarekolek
07/24/2018, 5:07 PMres.map { it + letter } (res + letter.toString() would make the types agree, but I think that's far from working code)warriorprincess
07/24/2018, 5:08 PMwarriorprincess
07/24/2018, 5:08 PMarekolek
07/24/2018, 5:12 PMfun findCombs(res: List<String>, digits: List<Int>) : List<String> {
if (digits.isEmpty()) return res
val results = mutableListOf<String>()
for (letter in map.getValue(digits[0])) {
results += findCombs(res.map { it + letter }, digits.drop(1))
}
return results
}
findCombs(listOf(""), listOf(2, 7, 3, 5))arekolek
07/24/2018, 5:13 PMfold.flatMap.map didwarriorprincess
07/24/2018, 5:25 PMresult be set to whatever res contained?warriorprincess
07/24/2018, 5:25 PMwarriorprincess
07/24/2018, 5:29 PM