मुझे टेट्रिस बहुत पसंद है, लेकिन मैं इसमें बहुत अच्छा नहीं हूं। बस एक बार मैं यह देखना चाहूंगा कि अंतरिक्ष यान मेरी आँखों के सामने से उड़ान भरता है! और जब से कंप्यूटर सब कुछ पर ओह-इतना महान हैं, केवल संभव समाधान यह है कि मेरे लिए इसे खेलने के लिए एक कार्यक्रम बनाया जाए ... सिवाय इसके कि आप मेरे लिए ऐसा करने जा रहे हैं!
एक टेट्रोमिनो (चार वर्गों से बनी आकृति) और खेल के मैदान के एक नक्शे को देखते हुए, आप टेट्रोमिनो को ऐसे स्थान पर रखते हैं, जिससे यह सबसे बड़ी संख्या में रेखाएँ बनाता है (बड़ी संख्या में पंक्तियों को पूरी तरह से पूर्ण ब्लॉक बनाता है) और सबसे कम संख्या बनाता है की नई छेद (एक खाली जगह है कि नहीं कर सकते हैं खेल मैदान के शीर्ष "देख" 1 )।
इनपुट
इनपुट में एकल पंक्ति पर एक चरित्र होगा जो ड्रॉपिंग टेट्रोमिनो का प्रतिनिधित्व करता है, इसके बाद रिक्त स्थान के 10 * 18 ग्रिड 2 ( ) और प्लस संकेत (
+
)।
यह चरित्र टेट्रिस में पाए गए सात बेस टेट्रोमिनो में से किसी का प्रतिनिधित्व करता है। सभी टुकड़ों को 90 डिग्री तक घुमाया जा सकता है, लेकिन फ़्लिप नहीं। सभी टेट्रोमिनो और उनके रोटेशन निम्नानुसार हैं:
#
S = ## ##
## #
#
Z = ## ##
## #
# ### ##
L = # # # #
## # ###
# ### ##
J = # # # #
## # ###
# # #
T = ### ## ### ##
# # #
O = ##
##
#
I = # ####
#
#
ग्रिड टेट्रिस के खेल के क्षेत्र का प्रतिनिधित्व करता है, +
पहले से रखे गए ब्लॉक के साथ। तो, एक उदाहरण इनपुट निम्नलिखित हो सकता है:
I
+ ++
+ +++++
++ +++++++
++ +++++++
++ +++++++
++ +++++++
++++++ +++
उत्पादन
आपका आउटपुट इनपुट के समान होगा, लेकिन आदर्श स्थिति में टेट्रोमिनो के साथ। टेट्रोमिनो को #
पूर्व-रखे हुए ब्लॉकों से अलग करने के लिए उनका प्रतिनिधित्व किया जाना चाहिए । इसके अतिरिक्त, आपको यह भी आउटपुट करना है कि आपका प्लेसमेंट xL yH
नई लाइन में फॉर्म में कितनी लाइनें / छेद बनाता है ।
ऊपर दिए गए उदाहरण के लिए आउटपुट निम्न 3 होगा :
I
+ ++
+ +++++
++#+++++++
++#+++++++
++#+++++++
++#+++++++
++++++ +++
4L 0H
आप केवल सबसे अच्छा परिणाम (ओं) को आउटपुट करने के लिए हैं; एक ही स्कोर देने वाले दो या अधिक मामलों के मामले में, आप उन सभी को आउटपुट करते हैं (एक रिक्त लाइन द्वारा अलग)। सबसे अच्छे परिणाम पहले (नीचे उतरने वाली) रेखाओं की संख्या के आधार पर क्रमबद्ध करके निर्धारित किए जाने हैं, फिर नए छेदों की संख्या (आरोही) बनाई गई है। तो, 1L 1H
से बेहतर स्कोर है 0L 0H
।
मैं विभिन्न इनपुट्स और अपेक्षित आउटपुट (ओं) की एक सूची बनाने पर काम करूँगा, जिनके खिलाफ आप अपने प्रोग्राम का परीक्षण कर सकते हैं। इस जगह को देखो।
नियम और छूट
- यह कोड-गोल्फ है , इसलिए कम से कम सही कार्यान्वयन जीतता है।
- इनपुट / आउटपुट किसी भी माध्यम में हो सकता है जो आपकी लक्षित भाषा (जैसे फ़ाइल, स्टडिन / स्टडआउट, पाठ क्षेत्र) को सूट करता हो।
- यदि आपकी लक्षित भाषा एकाधिक लाइन इनपुट का समर्थन नहीं करती है (या ऐसा करना असुविधाजनक है), तो आप इसके बजाय अल्पविराम (
,
) के साथ इनपुट की प्रत्येक पंक्ति का परिसीमन कर सकते हैं । - आप ग्रिड में किसी भी रिक्त लाइनों के उत्पादन को छोड़ सकते हैं।
- याद रखें कि टेट्रोमिनो ऊपर से गिरता है - आप टुकड़ा "भूमिगत" नहीं रख सकते हैं। इसलिए आप मान सकते हैं कि टुकड़े के सभी संभावित प्लेसमेंट "सतह-स्तर" पर होंगे (यानी टुकड़े और बोर्ड के शीर्ष के बीच कोई ब्लॉक नहीं हैं)।
- मान लें कि ऐसी स्थिति कभी नहीं होगी जिसमें आपको एक गेम ओवर में मजबूर किया जाता है (रखा टेट्रोमिनो क्षेत्र के शीर्ष-केंद्र को छूता है)।
- ऐसे समाधान जो आउटपुट में समान हैं, उन्हें छोड़ दिया जाना चाहिए (जैसे कि यदि आप इस
O
टुकड़े को बारी-बारी से घुमाते हैं तो 3 समाधान आउटपुट हैं )।
1 मैं जानता हूं कि यह कुछ गलत सकारात्मकताएं पैदा करेगा, लेकिन यह एक सरलीकरण है।
2 यह ग्रिड आकार है जिसका उपयोग गेम बॉय संस्करण में किया जाता है।
3 हाँ, 0H
सही है। फिर से जाँच करें, मैंने कहा कि नए छेद; ^)