B - chess960 Editorial by cirno3153
正規表現による実装を紹介します。
二つのB
の位置の偶奇が異なるとは、間に挟まっている文字が偶数個であるということです。
これは、2文字の0個以上の繰り返しがB
の間に挟まっているということで、B(..)*B
で表現できます。
K
が二つのR
の間にあるとは、R
、任意の文字列、K
、任意の文字列、R
がこの順に並んでいるということです。任意の文字列は.*
なので、これはR.*K.*R
で表現できます。
fun main() {
val S = readLine()!!
val check1 = S.matches(Regex(".*B(..)*B.*")) // Bの位置の偶奇が異なる
val check2 = S.matches(Regex(".*R.*K.*R.*")) // KがRに挟まれている
println(if (check1 and check2) "Yes" else "No")
}
posted:
last update: