เชื่อมต่อช่องว่างด้วยชิ้น Tetris


14

คุณควรเขียนโปรแกรมหรือฟังก์ชั่นที่กำหนดรายการบล็อกเตตริสเป็นเอาท์พุทอินพุตหรือคืนช่องว่างที่ใหญ่ที่สุดระหว่างสองจุดในระดับความสูงเดียวกันซึ่งชิ้นส่วนสามารถเชื่อมต่อได้

ชิ้นเตตริส 7 ประเภทดังต่อไปนี้:

อิฐ Tetris

เราจะอ้างถึงชิ้นส่วนเหล่านี้ด้วยตัวอักษร I, J, L, O, S, T และ Z ตามลำดับโดยอ้างอิงถึงรูปร่างของพวกเขา คุณสามารถหมุนชิ้นส่วนได้ แต่ไม่สามารถสะท้อนได้เหมือนในเกม Tetris

งานของเราคือการสร้างพื้นที่เชื่อมต่อ orthogonally (ด้านที่เชื่อมต่อกับด้านข้าง) จากชิ้นส่วนที่กำหนด พื้นที่นี้ควรเชื่อมต่อ (เป็นมุมฉาก) สองหน่วยสี่เหลี่ยมซึ่งมีความสูงเท่ากัน เราควรหาช่องว่างที่ใหญ่ที่สุดที่เป็นไปได้ระหว่างสองช่องที่เราสามารถเชื่อมได้

ตัวอย่างรายละเอียด

ด้วยชิ้น L เราสามารถเชื่อมต่อช่องว่าง 3

   L
XLLLX

ด้วยชิ้นส่วน S เราสามารถเชื่อมต่อช่องว่าง 2

  SS
XSSX

ด้วยชิ้นส่วน S, S, O เราสามารถเชื่อมต่อช่องว่าง 7 (โปรดทราบว่าเราไม่สามารถเชื่อมต่อช่องว่าง 8)

 S
XSSOO SSX
  SOOSS

อินพุต

  • สตริงที่แสดงถึงชิ้นส่วนที่มีอยู่ซึ่งประกอบด้วยเฉพาะตัวอักษรตัวพิมพ์ใหญ่ I, J, L, O, S, T และ Z ตัวอักษรทุกตัวแสดงถึงชิ้นส่วน tetris ที่สมบูรณ์
  • ตัวอักษรจะเรียงตามตัวอักษรในสตริง
  • สตริงจะมีความยาวอย่างน้อยหนึ่งตัว

เอาท์พุต

  • จำนวนเต็มบวกเดียวช่องว่างที่ใหญ่ที่สุดสามารถเชื่อมต่อกับชิ้นส่วนที่กำหนดได้

ตัวอย่าง

อินพุต => เอาท์พุท

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)ในขณะที่เราสูญเสีย 1 หน่วยต่อ 3 S หรือ ซี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.