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.getValue
robin
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 + letter
warriorprincess
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