B - chess960 解説
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")
}
投稿日時:
最終更新:
