注:これは私の最初のコードゴルフのチャレンジ/質問であるため、以下の正しい形式を使用していない可能性があります。この特定の質問にタグを付ける方法がよくわかりません。これはコミュニティウィキにする必要がありますか?ありがとう!
このコードゴルフの課題は、単語検索を解決することです。
ウィキペディアで定義されている単語検索は次のとおりです。
ワード検索、ワード検索、ワードシーク、ワードスルース、またはミステリーワードパズルは、グリッド内の単語の文字であるワードゲームであり、通常は長方形または正方形の形状をしています。このパズルの目的は、ボックス内に隠されているすべての単語を見つけてマークすることです。単語は、水平、垂直、または斜めにすることができます。多くの場合、隠された単語のリストが提供されますが、より挑戦的なパズルはプレーヤーにそれらを理解させるかもしれません。多くの単語検索パズルには、すべての隠された単語が関連しているテーマがあります。
このチャレンジの単語検索はすべて長方形のグリッドになり、検索する単語のリストが提供されます。単語は、垂直、水平、または斜めに書くことができます。
入出力
ユーザーは単語検索を入力してから、グリッドで検索する単語を入力します。これらの2つの入力は、作成する関数に渡されます。これらのオブジェクトをどのように宣言して処理するかは、あなた次第です。
以下に説明する戦略または独自の戦略を使用して、関数は検索で特定の単語を検索し、その開始座標(単に行番号と列番号)と終了座標を出力します。単語が2つ見つかった場合は、両方の座標セットを出力する必要があります。単語が回文である場合、単語の「開始」となる一方の端を任意に選択できます。
例
入力:
A I Y R J J Y T A S V Q T Z E
X B X G R Z P W V T B K U F O
E A F L V F J J I A G B A J K
R E S U R E P U S C Y R S Y K
F B B Q Y T K O I K H E W G N
G L W Z F R F H L O R W A R E
J A O S F U E H Q V L O A Z B
J F B G I F Q X E E A L W A C
F W K Z E U U R Z R T N P L D
F L M P H D F W H F E C G W Z
B J S V O A O Y D L M S T C R
B E S J U V T C S O O X P F F
R J T L C V W R N W L Q U F I
B L T O O S Q V K R O W G N D
B C D E J Y E L W X J D F X M
見つける言葉:codegolf
出力:
row 12, column 8 --> row 5, column 1
戦略
使用を検討する可能性のあるいくつかの戦略を次に示します。使用する戦略を決定するのは完全にあなた次第です。このリストに含まれている必要はありません。
- 単語の最初の文字を探しています。出現するたびに、周囲の8文字を見て、単語の次の文字がそこにあるかどうかを確認します。
- 上記と同じですが、同じ文字が2つ並んでいる単語の一部を探す点が異なります。
- アルファベットの各文字がグリッド全体に存在する頻度を数え、検索する必要のある単語から最も出現頻度の低い文字の1つを選択して、その文字を検索します。文字が出現するたびに、周囲の8つの文字を調べて、単語の次の文字と前の文字がそこにあるかどうかを確認します。