Tetris के टुकड़ों के साथ अंतराल को जोड़ना


14

आपको एक प्रोग्राम या फ़ंक्शन लिखना चाहिए जो इनपुट आउटपुट के रूप में टेट्रिस ब्लॉक की सूची देता है या एक ही ऊंचाई के स्तर में दो बिंदुओं के बीच सबसे बड़ा अंतर देता है जो टुकड़े कनेक्ट कर सकते हैं।

टेट्रिस के 7 प्रकार निम्नलिखित हैं:

टेट्रिस ईंटें

हम इन टुकड़ों को क्रमशः I, J, L, O, S, T और Z अक्षरों से संदर्भित करेंगे, उनकी आकृतियों का उल्लेख करेंगे। आप टुकड़ों को घुमा सकते हैं लेकिन उन्हें एक टेट्रिस गेम की तरह नहीं दिखा सकते।

हमारा काम दिए गए टुकड़ों से एक orthogonally जुड़ा हुआ क्षेत्र (पक्षों से जुड़ा हुआ) बनाना है। इस क्षेत्र को दो इकाई चौकों (जो orthogonally) से जुड़ना चाहिए, जो समान ऊंचाई पर हैं। हमें दो वर्गों के बीच सबसे बड़ा संभावित अंतर खोजना चाहिए जिसे हम पा सकते हैं।

विस्तृत उदाहरण

टुकड़ा एल के साथ हम 3 के अंतराल को जोड़ सकते हैं

   L
XLLLX

टुकड़ा एस के साथ हम 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

यह कोड-गोल्फ है इसलिए सबसे छोटी प्रविष्टि जीतती है।


हाँ! मैंने देखा। मैं उन्हें जैसे देख रहा था।
टिम

जवाबों:


4

सीजेम, 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। फिर गैर-मुआवजा वाले एस या जेड की संख्या की गणना करें: एक एस को जेड, जे या ओ द्वारा मुआवजा दिया जा सकता है, और जेड को एस, एल या ओ द्वारा मुआवजा दिया जा सकता है, और घटाया जा सकता है ceil(that number/3), क्योंकि हम हर 3 एस या के लिए 1 यूनिट खो देते हैं। जेड है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.