用俄罗斯方块件连接间隙


14

您应该编写一个程序或函数,以给定的俄罗斯方块块列表作为输入输出,或者返回可以连接的相同高度级别的两点之间的最大间隙。

俄罗斯方块的7种类型如下:

俄罗斯方块砖

我们将分别用字母I,J,L,O,S,T和Z指代它们的形状。您可以旋转棋子,但不能像俄罗斯方块游戏中那样镜像它们。

我们的任务是从给定的零件中创建一个正交连接的区域(与侧面相连的侧面)。该区域应连接(也正交)两个高度相同的单元正方形。我们应该在可以桥接的两个正方形之间找到最大的差距。

详细的例子

用L片我们可以连接3个间隙

   L
XLLLX

用S片我们可以连接2的间隙

  SS
XSSX

对于S,S,O,我们可以连接7的间隙(请注意,我们不能连接8的间隙)

 S
XSSOO SSX
  SOOSS

输入值

  • 一个字符串,表示仅包含大写字母I,J,L,O,S,T和Z的可用片断。每个字母代表完整的俄罗斯方块片断。
  • 字母将在字符串中按字母顺序排列。
  • 该字符串将至少一个字符长。

输出量

  • 单个正整数,与给定件可连接的最大间隙。

例子

输入=>输出

OSS  =>  7

LS  =>  5

LZ  =>  6

ZZZZ  =>  10

LLSSS  =>  14

IIJSSSTTZ  =>  28

IISSSSSS  =>  24

OOOSSSSSSSSSSSSTT  =>  45

IJLOSTZ  =>  21

IJLOSTZZZZZZZ  =>  37

IIJLLLOSTT  =>  31

IJJJOOSSSTTZ  =>  35

这是代码高尔夫球,因此最短的条目将获胜。


嗯,我明白了。我一直在看着他们。
蒂姆(Tim)

Answers:


4

CJam,53岁

'[,73>qf{1$e=s':+\+~}:+3*I+O-SZ-JO+m0e>ZS-LO+-e>2+3/-

在线尝试

这个想法是:将I,J,...,Z变量中的每一个分配为该字母的出现次数,然后计算string length * 3 + I - O。然后计算未补偿的S或Z的数目:一个S可以用Z,J或O补偿,一个Z可以用S,L或O补偿,然后减去ceil(that number/3),因为每3个S损失1个单位或Z的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.