-5

この条件で C# でクロスワードをプログラムしたかった:

  1. 言葉を繰り返すことはできません。
  2. 単語は水平に配置できますが、左から右にのみ配置できます。
  3. 単語は縦に配置できますが、上から下にのみ配置できます。
  4. 水平方向の単語は、1 つ以上の垂直方向の単語と交差する必要があります。
  5. 縦方向の単語は、1 つ以上の横方向の単語と交差する必要があります。
  6. 各単語は、スペースまたはグリッド エッジで区切る必要があります。

フィールドサイズは指定されていません。ワードリストを考慮して、アルゴリズムは最適なクロスワード出力を見つける必要があり、フィールドサイズは最小にする必要があります。私の問題は可変フィールドサイズです。アルゴリズムがどのように見えるかを考えている人はいますか?

4

1 に答える 1

-1

これは非常に幅広い質問です。ソリューションのコーディングを開始する前に、設計について考えるのに時間を費やす必要があると思います。

解決する必要がある可能性のあるいくつかのサブ問題:

  1. 単語のデータ ストアが必要になります。独自に作成するか、オンラインから何かを使用しますか?
  2. これらの単語の文字をチェックして、単語を相互に交差させるために使用できる一般的な文字が単語に含まれていることを確認する方法が必要です。
  3. 単語の長さを測定し、単語が互いに重なっていないことを確認する必要があります (交差しない限り!)、または画面内に収まるようにする必要があります。グリッドを生成するたびにこれらのルールを再テストして、有効であることを確認する必要があります
  4. グリッドをnxn配列として保存できます。対角線を使用していないと仮定すると、単語は単一の行または列に書き込む必要があります。
  5. 単語が左から右、または上から下に表示されるようにするには、開始文字のインデックスが常に末尾の文字よりも小さいことを確認する必要があります。
  6. グリッド全体で単語の間隔が均等になるように、行または列ごとに単語数を保存する必要がある場合もあります。
于 2016-05-10T11:47:58.373 に答える