最近、iPhoneでScrambleと呼ばれるゲームをプレイしています。このゲームをBoggleと知っている方もいるかもしれません。基本的に、ゲームが開始すると、次のような文字のマトリックスが得られます。 F X I E A M L O E W B X A S T U ゲームの目標は、文字をつなげて形成できる単語をできるだけ多く見つけることです。任意の文字で開始でき、その文字を囲むすべての文字は公平なゲームです。次の文字に移動すると、以前に使用された文字を除いて、その文字を囲むすべての文字が公平なゲームになります。したがって、上記のグリッドでは、例えば、私は言葉を思い付くことができLOB、TUX、SEA、FAME、などの言葉は、このゲームでは16になるだろうが、いくつかの実装が異なることができ、それ以上のN×Nの文字より少なくとも3つの文字、あってはなりません。このゲームは楽しさと中毒性がありますが、私は明らかにそれがあまり得意ではないので、可能な限り最高の単語を与えるプログラム(単語が長いほどポイントが多くなります)を作成することで少し浮気したいと思いました。 (ソース:boggled.org) 残念ながら、アルゴリズムやその効率などはあまり得意ではありません。私の最初の試みは、このような辞書(〜2.3MB)を使用し、組み合わせを辞書のエントリと一致させようとする線形検索を行います。これは、可能性のある単語を見つけるのに非常に長い時間がかかり、ラウンドごとに2分しか得られないため、単に適切ではありません。 Stackoverflowersがより効率的なソリューションを考え出せるかどうかに興味があります。私は主にBig 3 Ps:Python、PHP、Perlを使用したソリューションを探していますが、JavaまたはC ++を使用するものもクールです。 現在のソリューション: アダム・ローゼンフィールド、パイソン、〜20代 ジョン・フーイ、パイソン、〜3秒 ケントフレドリック、Perl、〜1秒 ダライアスベーコン、パイソン、〜1秒 rvarcher、VB.NET (ライブリンク)、〜1s Paolo Bergantino、PHP (ライブリンク)、〜5秒(ローカルでは〜2秒)
ユーザーから次の入力(2〜5の間)を作成するC ++プログラムを作成しようとしています。高さ、幅、x位置、y位置。これらの長方形はすべて、x軸とy軸に平行に存在します。つまり、すべてのエッジの勾配は0または無限大になります。 私はこの質問で述べられていることを実装しようとしましたが、あまり運がありません。 私の現在の実装は次のことを行います: // Gets all the vertices for Rectangle 1 and stores them in an array -> arrRect1 // point 1 x: arrRect1[0], point 1 y: arrRect1[1] and so on... // Gets all the vertices for Rectangle 2 and stores them in an array -> arrRect2 // rotated …