Day 2 using Kotlin - Advent of Code 2025

https://adventofcode.com/2025/day/2

1. 找出不合法的產品識別碼並加總。

2. 不合法的識別碼為連續的數字出現兩次。例:55(5 出現兩次),6464(64 出現兩次)等。

 

SA、SD:

1.  產品識別碼偶數位數的要判斷,奇數的不用。

val start = 0
val end = 1

var strId: String
var halfLength: Int

// 1. 檔案只有一行
// 2. 每個範圍以逗號分隔
// 3. 結果為加總,故使用 sumOf
readInput( "Day02" ).first().split( "," ).sumOf { rangeStr ->
// 如果長度不相等,要找出其中不合法的識別碼:95-115
// 如果長度相等,而長度為偶數,也要進行判斷:11-22
rangeStr.split( "-" ).takeIf { strList ->
strList[ start ].length != strList[ end ].length ||
strList[ start ].length % 2 == 0
}?.let { startEnd ->
startEnd[ start ].toLong().rangeTo( startEnd[ end ].toLong()
).filter { longId ->
strId = longId.toString()
halfLength = strId.length / 2

strId.length % 2 == 0 && strId.take( halfLength ) ==
strId.substring( halfLength )
}.sum()
} ?: 0
}.println()

 

--- Part 2 ---

1. 只要連續重複出現

var startEnd: List<String>

readInput( "Day02" ).first().split( "," ).sumOf { rangeStr ->
startEnd = rangeStr.split( "-" )

startEnd[ start ].toLong().rangeTo( startEnd[ end ].toLong()
).filter { longId ->
strId = longId.toString()

1.rangeTo( strId.length / 2 ).any { subLength ->
strId.take( subLength )
.repeat( strId.length / subLength ) == strId
} // any
}.sum()
}.println()

 

 

 

 

 

留言

這個網誌中的熱門文章

Unresolved reference: BuildConfig

Day 3 using Kotlin - Advent of Code 2025