Kotlin, because I'm prepping a mini talk on declarative style...
tailrecfunspeak(remaining:String,curr:String="",currCount:Int=0,output:String=""):String{returnwhen{remaining.isEmpty()&&curr.isBlank()->outputremaining.isEmpty()->"$output$currCount$curr"curr.isEmpty()->speak(remaining.substring(1),curr=remaining.substring(0,1),currCount=1,output=output)remaining.startsWith(curr)->speak(remaining.substring(1),curr=curr,currCount=currCount+1,output=output)else->speak(remaining.substring(1),curr=remaining.substring(0,1),currCount=1,output="$output$currCount$curr")}}funlookAndSaySequence(input:String,times:Int):String{require(times>0){"times must be > 0"}returngenerateSequence(input){speak(it)}.drop(times-1).first()}
Kotlin, because I'm prepping a mini talk on declarative style...
SPOILERS:
base64decode('SXQncyBqdXN0IHJ1bi1sZW5ndGgtZW5jb2Rpbmch')
bonus: