3×3のサイズのビンゴカードが、最終的にビンゴしているかどうかを判定する問題です。
ビンゴのパターンが分かっていれば、達成されているかどうかをif文ですべて調べれば上手くいきます。
提出
a = [list(map(int, input().split())) for _ in range(3)]
n = int(input())
b = [int(input()) for _ in range(n)]
for i in range(3):
for j in range(3):
for k in range(n):
if a[i][j] == b[k]:
a[i][j] = 0
ans = "No"
for i in range(3):
if a[i][0] + a[i][1] + a[i][2] == 0:
ans = "Yes"
if a[0][i] + a[1][i] + a[2][i] == 0:
ans = "Yes"
if a[0][0] + a[1][1] + a[2][2] == 0:
ans = "Yes"
if a[0][2] + a[1][1] + a[2][0] == 0:
ans = "Yes"
print(ans)
入力とビンゴの判定が極力まとまるように記述すると、上記のようになります(もっとシンプルなものがあるかもしれませんが)。
1行目のaは、リストを内包させる方法です。
結果的に、以下のようなリストができます。
a = [[A1,1, A1,2, A1,3], [A2,1, A2,2, A2,3], [A3,1, A3,2, A3,3]]
bを1つずつ確認して、ビンゴカードの同じ数字がある位置を「0」にします。
カードに書かれている数字は「1〜100」なので、それ以外の数字にすると都合がいいです。
「0」を印としてつけたので、ビンゴの条件を達成しているか調べていきます。
とにかく、すべてのビンゴのパターンを調べればいいので、コンテスト本番は、if文をたくさん書いてゴリ押しでも問題ないです。