ギャップとテトリスの破片の接続


14

入力または出力としてテトリスブロックのリストを指定するか、ピースが接続できる同じ高さレベルの2つのポイント間の最大ギャップを返すプログラムまたは関数を作成する必要があります。

7種類のテトリスピースは次のとおりです。

テトリスレンガ

これらのピースを、それぞれ文字I、J、L、O、S、T、Zで参照し、形状を参照します。テトリスゲームのようにピースを回転させることはできますが、ミラーリングすることはできません。

私たちのタスクは、与えられたピースから直交接続された領域(側面が側面に接続されている)を作成することです。この領域は、同じ高さにある2つの単位正方形を(直交して)接続する必要があります。ブリッジできる2つの正方形の間の最大のギャップを見つける必要があります。

詳細な例

ピースLを使用すると、3つのギャップを接続できます。

   L
XLLLX

ピースSを使用すると、2つのギャップを接続できます

  SS
XSSX

ピースS、S、Oを使用すると、7のギャップを接続できます(8のギャップを接続できないことに注意してください)

 S
XSSOO SSX
  SOOSS

入力

  • 大文字のI、J、L、O、S、T、およびZのみを含む使用可能なピースを表す文字列。すべての文字は完全なテトリスのピースを表します。
  • 文字列内の文字はアルファベット順になります。
  • 文字列は少なくとも1文字の長さになります。

出力

  • 単一の正の整数、指定されたピースと接続可能な最大のギャップ。

入力=>出力

OSS  =>  7

LS  =>  5

LZ  =>  6

ZZZZ  =>  10

LLSSS  =>  14

IIJSSSTTZ  =>  28

IISSSSSS  =>  24

OOOSSSSSSSSSSSSTT  =>  45

IJLOSTZ  =>  21

IJLOSTZZZZZZZ  =>  37

IIJLLLOSTT  =>  31

IJJJOOSSSTTZ  =>  35

これはコードゴルフなので、最短のエントリーが勝ちます。


ええ、わかりました。私はそれらをそのまま見ていました。
ティム

回答:


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の。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.