238 tokens in Kotlin for part 1 by N. Adhikary
Download solution
funmain(){
valinput=generateSequence(::readLine).joinToString("\n").split("\n\n")
valranges=input[0].lines().map{val(a,b)=it.split("-").map(String::toLong)atob}.sortedBy{it.first}.toMutableList()
valids=input[1].trim().lines().map{it.toLong()}
valmerged=mutableListOf<Pair<Long,Long>>()
for((lo,hi)inranges){
if(merged.isNotEmpty()&&lo<=merged.last().second+1)
merged[merged.lastIndex]=merged.last().firsttomaxOf(merged.last().second,hi)
elsemerged.add(lotohi)
}
valp1=ids.count{i->merged.any{(lo,hi)->iinlo..hi}}
valp2=merged.sumOf{(lo,hi)->hi-lo+1}
println(p1)
}