233 tokens in Kotlin for part 1 by Valentin Slawicek
Download solution
importkotlin.math.pow
dataclassCard(valcardNumber:Int,valwinningNumbers:Set<Int>,valnumbersYouHave:Set<Int>)
funmain(){
valcards=generateSequence(::readLine)
.map{line->
valcardNumber=line.substringBefore(":").substringAfterLast(" ").toInt()
valwinningNumbers=line
.substringAfter(":")
.substringBefore("|")
.split(" ")
.mapNotNull{number->number.trim().takeIf{it.isNotEmpty()}?.toInt()}
valnumbersYouHave=line
.substringAfter("|")
.split(" ")
.mapNotNull{number->number.trim().takeIf{it.isNotEmpty()}?.toInt()}
Card(cardNumber,winningNumbers.toSet(),numbersYouHave.toSet())
}
println(cards.sumOf{card->
valsameNumbers=card.winningNumbers.intersect(card.numbersYouHave).count()
if(sameNumbers==0)0else(2.toDouble().pow(sameNumbers-1)).toInt()
})
}