package main import ( "fmt" ) func main() { // マス目の情報を入力 var s1, s2, s3 string fmt.Scan(&s1) fmt.Scan(&s2) fmt.Scan(&s3) // 市松模様の判定 if isCheckered(s1, s2, s3) { fmt.Println("Yes") } else { fmt.Println("No") } } // isCheckeredは3つの文字列からなるマス目が市松模様であるかを判定する関数です。 func isCheckered(s1, s2, s3 string) bool { // 各マスの色を判定する関数を作成 isBlack := func(r, c int) bool { // r行c列のマスの色を判定 switch r { case 1: return s1[c-1:c] == "#" case 2: return s2[c-1:c] == "#" case 3: return s3[c-1:c] == "#" default: return false } } // 各マスを順に判定 for r := 1; r <= 3; r++ { for c := 1; c <= 3; c++ { // 上下左右のマスの色が異なることを確認 if (r > 1 && isBlack(r-1, c) == isBlack(r, c)) || (r < 3 && isBlack(r+1, c) == isBlack(r, c)) || (c > 1 && isBlack(r, c-1) == isBlack(r, c)) || (c < 3 && isBlack(r, c+1) == isBlack(r, c)) { return false } } } return true }