受到这款小游戏的启发。
挑战
给定网格的初始位置(始终为5x5)作为输入,如下所示:
-ABCD
-A---
---C-
---BD
--E-E
您需要连接字母(相同的字母在一起),删除所有空白-区域。字母将永远是A,B,C,D and E。
每对字母必须由一条可以成直角弯曲的非分支线连接(使用相同的字母表示该线)。
确保输入的每个起始字母正好2次,并且始终具有所有起始字母AE。
可以从stdin读取输入,也可以从某个函数的arg字符串中读取输入,甚至可以从数组/ matriz / chars列表中读取字符,这是最方便的编码语言方式。
因为这是代码高尔夫球,所以最短的代码以字节为单位获胜!
例
不仅每个问题都有一个解决方案,而且规则适用于所有问题(没有空格,没有分隔的字母)。并且保证输入至少具有一个正确的输出。
让我们开始连接字母A:
AABCD
AA---
AA-C-
AA-BD
AAE-E
现在,连接字母B:
AABCD
AAB--
AABC-
AABBD
AAE-E
现在,连接字母C:
AABCD
AABC-
AABC-
AABBD
AAE-E
现在,连接字母D:
AABCD
AABCD
AABCD
AABBD
AAE-E
最后,字母E:
AABCD
AABCD
AABCD
AABBD
AAEEE
另一个样品
input:
E--E-
BB-C-
AD---
---C-
AD---
output:
EEEEE
BBECE
ADECE
ADECE
ADEEE
input:
A----
---B-
-C-C-
-D-D-
BE-EA
output:
AAAAA
BBBBA
BCCCA
BDDDA
BEEEA
@ Sp3000不是重复项,因为此挑战可确保输入正确。
—
内森·美林
输入是否保证每个起始字母正好2次?会总是有所有的开头字母
—
Ton Hospel'3
A-E吗?
@NathanMerrill似乎相差很小。我无法想象对可解性的检查将占用大部分代码。
—
马丁·恩德
@MartinBüttner在我的挑战中,对可溶性的检查是挑战,无需连接。尽管这两个挑战将具有相似之处,但在我看来它们却截然不同。
—
内森·美林
对于此类问题,我最喜欢的技术是使用随机数填写职位,以避免回溯并在遇到问题时停止。这仅在保证解决方案的情况下才有效,否则程序将永远运行(如果保证解决方案,则您可以经常编写代码,以便长时间运行不会成倍地延长运行时间)。对于这种技术的问题是非常不同的
—
吨Hospel