테트리스 조각과 간격 연결


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

답변:


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, J 또는 O에 의해 보상 될 수 있고, Z는 S, L 또는 O에 의해 보상 될 수 있고, 감산 : 다음 비 보상 S 나 Z의 개수 카운트 ceil(that number/3)우리는 모든 3 S의 1 개 단위를 잃게, 또는 Z.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.