5
硬纸板压缩
在研究非回文式多语种Boggle时,我发现将代码尽可能有效地打包到Boggle板上非常繁琐,即使只有两个字符串也是如此。但是我们是程序员,对吗?我们知道如何使事情自动化。 给定一个字符串列表,您将生成一个Boggle面板,可以在其中找到每个字符串(独立于其他字符串)。挑战在于使Boggle板尽可能小。因为这(希望)是一项相当困难的任务,所以这是代码挑战:不需要最佳性-挑战是尽可能地做到这一点。 规则 防撞板将为矩形,并且仅包含大写字母。因此,输入字符串也将仅包含大写字母。 通常采用Boggle规则:如果从任何地方开始都可以反复移动到相邻的字符(水平,垂直或对角线)来找到字符串,则字符串是棋盘的一部分。要形成单个字符串,不能多次使用板上的任何单元格。但是,可以在不同的字符串之间重用字符。 您有30分钟的时间来处理测试数据,并且您的代码不得使用超过4 GB的内存。我会在内存限制上留一点余地,但是如果您的程序始终使用超过4 GB的内存或峰值明显超过该内存的峰值,我将(暂时)取消其资格。 我将在运行Windows 8的我自己的计算机上测试所有提交内容。我确实有Ubuntu VM,但是如果必须测试,则无法充分利用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 …