在这个挑战中,我有一个鳄梨领域,我想尽可能快速,完整地榨汁。您可以编写一个程序或函数来帮助我确定如何使所有鳄梨完美地榨汁吗?
作为输入,您将得到鳄梨作为mx m正方形网格,其中m是3到6之间的整数。每个正方形恰好包含一个鳄梨。鳄梨有多汁的阶段:
阶段1:鳄梨根本没有榨汁。
阶段2:鳄梨已部分榨汁。
阶段3:鳄梨已完全榨汁。
阶段4:鳄梨因榨汁过多而爆炸。
当您使用榨汁工具时,该榨汁工具作用范围内的鳄梨将移至下一个阶段。爆炸的鳄梨有很大的力量,会破坏整个鳄梨场,因此请确保没有鳄梨爆炸!
这是鳄梨网格的示例。在这些示例中,我使用了0,0左下角的坐标和右上角的坐标2,2,尽管您可以调整坐标系以适合您的语言。
112
221
231
目的是使所有鳄梨完全榨汁(即阶段3)。为此,您拥有三种不同的榨汁工具。每种榨汁工具都有不同的作用范围,但是它们都会使受影响的鳄梨的多汁程度提高1。
这是您可以使用的所有工具。通过指定工具的第一个字母,然后指定要榨汁的坐标来使用榨汁机。例如,要在正方形上使用切片器5,2,您将输出S 5,2。
切片器:将目标坐标和鳄梨放在两边。
112 112 112
221 --> XXX --> 332
231 231 231
刨丝器:将目标坐标和鳄梨汁上下榨汁。
112 1X2 122
221 --> 2X1 --> 231 --> kaboom!
231 2X1 241
火箭发射器:为目标坐标和所有相邻的鳄梨榨汁。
112 1X2 122
221 --> XXX --> 332
221 2X1 231
样本输入和输出
323
212
323
G 1,1
S 1,1
3312
3121
1213
2133
R 0,0
R 1,1
R 2,2
R 3,3
22322
22222
22222
33233
33333
G 0,3
G 1,3
G 2,2
G 3,3
G 4,3
222332
333221
222332
333222
222333
333222
S 1,5
S 1,3
S 1,1
S 4,5
S 4,3
S 4,1
G 5,4