5
Boggle Board Compression
非パリンドロームポリグロットボグルで作業しているとき、2本の弦だけでも、可能な限り効率的にコードをボグルボードに詰め込むのは非常に面倒です。しかし、私たちはプログラマーですよね?物事を自動化する方法を知っています。 文字列のリストが与えられたら、それらの文字列のそれぞれが(他の文字とは独立して)見つかるBoggleボードを生成します。課題は、Boggleボードをできるだけ小さくすることです。これは(願わくば)かなり難しいタスクであるため、これはコードチャレンジです。最適性の要件はありません-できる限りそれを行うことが課題です。 ルール Boggleボードは長方形で、大文字のみが含まれます。したがって、入力文字列には大文字のみが含まれます。 通常のBoggleルールが適用されます。文字列は、どこからでも、隣接する文字(水平、垂直、または斜め)に繰り返し移動して文字列を見つけることができる場合、ボードの一部です。単一の文字列を形成するには、ボードのセルを複数回使用することはできません。ただし、異なる文字列間で文字が再利用される場合があります。 テストデータを処理するのに30分かかり、コードで4 GBを超えるメモリを使用してはなりません。メモリーの制限については少し余裕を持たせますが、プログラムが一貫して4 GBを超えるか、それを大幅に上回るスパイクを使用する場合は、(一時的に)失格させます。 Windows 8を実行している自分のマシンですべての提出物をテストします。UbuntuVMがありますが、テストする必要がある場合は、30分を他の方法で使用することはできません。選択した言語の無料のインタープリター/コンパイラーへのリンクと、コードのコンパイル/実行方法に関する指示を含めてください。 スコアは、以下のテストデータ用のBoggleボードのサイズになります(改行はカウントしません)。同点の場合(たとえば、複数の人が最適なソリューションを作成できたため)、勝者はこの最適なソリューションをより迅速に作成する提出物になります。 テストデータに対してコードを最適化しないでください。誰かがそうする疑いがある場合、私は新しいテストデータを生成する権利を留保します。 例 与えられた文字列 FOO BAR BOOM かつては4x3 Boggleボードに簡単に入れることができました。 FOOX BARX BOOM 文字列が直線である必要がないという事実を利用することで、5x2に圧縮できます。 BORFO OMABO ただし、異なる文字列間で文字を再利用することでさらに小さくし、文字列を4x2に収めることができます。 FOOM BARX 今Bの両方に使用されるBOOMとBAR、そしてOO両方のために使用されているBOOMとFOO。 テストデータ 提出物は、次の50個の文字列でテストされます。テストのために、このデータのより小さなサブセットを使用するだけで、より短時間で実行できます。このテストデータの絶対的な下限は120文字のボードですが、これは必ずしも達成できるとは限りません。 T WP GVI CIHM EGWIV QUTYFZ LWJVPNG XJMJQWSW JLPNHFDUW SWMHBBZWUG XVDBMDQWDEV TIUGAVZVUECC IWDICFWBPSPQR MMNWFBGMEXMSPY YIHYXGJXKOUOIZA BZSANEJNJWWNUJLJ XTRMGOVPHVZYLLKKG FLXFVVHNTWLMRRQYFQ VZKJRAFQIYSBSXORTSH …