各マスが数字ではなく単語（ワード）にアレンジされたビンゴが達成されていることを判定するプログラムの書き方が分かりません。  
普通の数字のビンゴゲームではなく、ワードのビンゴなので、とても複雑です。  
Javescriptやpython。言語は問いません。  
どの様なプログラムを書けば良いのか分からないので、御意見や助言を頂きたいです。

詳細は下記です。

S × S のサイズの、各マスに単語が書かれたビンゴカードがあります。上から i 行目、左から j 列目の単語は Ai,j です。  
続けて N 個の単語 w1,w2,…,wN が選ばれます。  
選ばれた単語がビンゴカードの中にあった場合、ビンゴカードのその単語に印を付けます。  
N 個の単語が選ばれた時点で勝利条件を満たしているか（ビンゴかどうか）、すなわち 縦・横・ななめのいずれか1列にある S
マスが揃って印がついているかどうかを判定してください。

入力される値  
入力は以下の形式で標準入力から与えられます。  
S  
A1,1 A1,2 ... A1,S  
A2,1 A2,2 ... A2,S  
…  
AS,1 AS,2 ... AS,S

N  
w1  
w2  
…  
wN

1行目には、ビンゴカードのサイズ S が入力されます。  
続いて、ビンゴカードの単語がスペース区切りで S 行入力されます。  
次の行には、選ばれた単語の数 N が入力されます。  
続いて、選ばれた単語が N 行入力されます。

期待する出力  
勝利条件を満たしているなら yes と、 そうでなければ no と出力してください。
CC BY-SA 4.0
2023-03-13T07:40:36.150
94154
2023-03-16T11:09:38.333
2023-03-16T11:09:38.333
57504
57504
question
アルゴリズム プログラミング言語
ワードビンゴのビンゴが達成されていることを判定する
基本的な考えとしてはビンゴカードの各単語に番号を振ればよいと思います。  
たとえばdogなら1, catなら2などです。  
あとは普通の数字のビンゴと同じように処理すればよいでしょう。

```

    words = [['cat','dog'],['apple','orange']]
    
    dct = {}
    no = 1
    for row in words:
        for word in row:
            if word not in dct:
                dct[word] = no
                no += 1
    
    print(dct) # {'cat': 1, 'dog': 2, 'apple': 3, 'orange': 4}
    
```
CC BY-SA 4.0
2023-03-13T07:57:29.317
94155
2023-03-13T08:55:54.103
2023-03-13T08:55:54.103
25830
25830
94154
answer