这个挑战的灵感来自这个程序。
这是此挑战的简单得多的版本。这个挑战是代码挑战,而另一个挑战是最快的代码。
您将得到一个正方形的输入网格,其尺寸为6 x 6,分为6个区域,每个区域的单元格都有一个唯一的标识符(我将在本文中使用af的小写字母,但您可以选择任意值,例如整数1-6)。
输入可能看起来像这样(可选输入格式):
aabbbb
aabbbb
aaccbb
acccdb
ecccdb
eeefff
或者,更容易可视化:
挑战:
您将根据以下规则在该公园中放置6棵树:
- 每列应有1棵树,每行应有1棵树
- 所有区域均应恰好有一棵树。
- 垂直,水平或对角线的任何树木都不能与另一棵树木相邻
上面布局的解决方案是:
注意:每个难题只有一个解决方案
附加规则:
- 输入和输出格式是可选的
- 例如,输出可能是索引列表,带有1/0的网格(指示在该位置是否有树)或输入的修改版本(其中指示了树)
- 执行时间必须是确定的
- 该程序必须在一台合理的现代笔记本电脑上在1分钟内完成
- 如果您不蛮力,布朗尼会指出!
测试用例:
aabbbb
aabbbb
aaccbb
acccdb
ecccdb
eeefff
---
aAbbbb
aabbbB
aaCcbb
acccDb
Ecccdb
eeeFff
----------
aabccc
aacccc
aaddce
aeeeee
aeeefe
eeeeee
---
aaBccc
aacccC
aadDce
Aeeeee
aeeeFe
eEeeee
----------
aaaabb
aacbbb
aadddb
addeef
ddddee
dddeee
---
aaaaBb
aaCbbb
Aadddb
addeeF
dDddee
dddEee
----------
abbbcd
abebcd
addddd
dddddd
effdff
eeffff
---
abBbcd
abebCd
Addddd
dddDdd
effdfF
eEffff
相同的测试用例,其格式更易于解析:
Test case 1:
[1,1,2,2,2,2;1,1,2,2,2,2;1,1,3,3,2,2;1,3,3,3,4,2;5,3,3,3,4,2;5,5,5,6,6,6]
Test case 2:
[1,1,2,3,3,3;1,1,3,3,3,3;1,1,4,4,3,5;1,5,5,5,5,5;1,5,5,5,6,5;5,5,5,5,5,5]
Test case 3:
[1,1,1,1,2,2;1,1,3,2,2,2;1,1,4,4,4,2;1,4,4,5,5,6;4,4,4,4,5,5;4,4,4,5,5,5]
Test case 4:
[1,2,2,2,3,4;1,2,5,2,3,4;1,4,4,4,4,4;4,4,4,4,4,4;5,6,6,4,6,6;5,5,6,6,6,6]
听起来像是数独解算器,但有所不同。
—
juniorRubyist