140 बाइट्स में टेट्रिस के कार्यान्वयन के बारे में प्रोग्रामिंग वेबसाइटों पर हाल ही में (कुछ साल पहले) कुछ चर्चा हुई थी । ...
यह पता चला है कि हालांकि यह छोटा है, यह टेट्रिस का एक सरलीकृत संस्करण है, और पूर्ण कार्यान्वयन भी नहीं है। केवल मुख्य तर्क फ़ंक्शन जावास्क्रिप्ट के 140 बाइट्स में फिट बैठता है। वास्तव में इसे चलाने के लिए, आपको HTML के अन्य ~ 840 वर्णों की आवश्यकता है।
हम बेहतर कर सकते हैं!
यह चुनौती "बाइनरी टेट्रिस" के पूर्ण संस्करण को यथासंभव कुछ ट्वीट्स में लागू करना है।
बाइनरी टेट्रिस नियम:
- कार्यक्रम में कम से कम 5 कॉलम और 6 पंक्तियों वाली कोशिकाओं के साथ खेल का मैदान प्रदर्शित होना चाहिए।
- प्रदर्शन के किसी भी तरीके का उपयोग किया जा सकता है, जब तक कि ब्लॉक और फ़ील्ड के किनारों को स्पष्ट रूप से चिह्नित नहीं किया जाता है।
- कम से कम दो प्रकार के ब्लॉक होने चाहिए:
#और##। अतिरिक्त ब्लॉक सपोर्ट जैसे कि###L की तरह आकार वाले एंगल ब्लॉक मेरे द्वारा उतारे जाएंगे: P और बाइनरी टेट्रिस का सबसे पूरा गेम (मूल और रोटेशन फीचर्स की तरह सबसे अधिक ब्लॉक) मेरी खुशी और 50 बार रिपीट करने वाला संभावित इनाम जीतेंगे। - शीर्ष पंक्ति में फ़ील्ड में नए ब्लॉक जोड़े जाते हैं, और एक ब्लॉक सेल को केंद्र स्तंभ पर कब्जा करना चाहिए।
- ब्लॉक एक निश्चित दर पर नीचे की पंक्ति की ओर उतरते हैं। उपयोगकर्ता इनपुट के बिना भी ब्लॉक उतरना चाहिए।
- जब ब्लॉक फ़ील्ड के निचले हिस्से या निचले ब्लॉक को छूते हैं, तो वे गिरना बंद कर देते हैं और जगह में तय हो जाते हैं। एक नया ब्लॉक जोड़ा गया है।
- जब पंक्ति के सभी कॉलम ब्लॉक से भर जाते हैं, तो पंक्ति खाली कर दी जाती है, और ऊपर दिए गए सभी निश्चित ब्लॉक एक पंक्ति को छोड़ देते हैं।
- कार्यक्रम कीपेस का जवाब देना चाहिए। निम्नलिखित कार्य करने वाले 3 अद्वितीय कुंजियाँ होनी चाहिए
- शिफ्ट करंट ब्लॉक 1 कॉलम छोड़ दिया
- वर्तमान ब्लॉक दाएं 1 कॉलम को शिफ्ट करें
- 1 पंक्ति नीचे वर्तमान ब्लॉक को शिफ्ट करें
- प्रत्येक ट्वीट में केवल 140 अक्षर हो सकते हैं। मल्टी-बाइट वर्णों का उपयोग करना, जिन्हें ट्वीट्स में डाला जा सकता है, की अनुमति है।
एक ट्वीट में क्या हो सकता है, इसके नियम सरल हैं। यदि आप इसे ट्वीट कर सकते हैं तो आप इसका उपयोग कर सकते हैं।
व्याख्या की गई भाषाएँ समान नियमों का पालन करती हैं। प्रत्येक अनुभाग को चश्मा का पालन करना चाहिए। जब तक कोई रन टाइम एरर नहीं होता है (और बाकी स्पेसिफिकेशंस का पालन करते हुए) आपका जवाब मान्य है गोल्फिंग नियम:
क्योंकि मूल कार्यान्वयन "ट्वीट करने योग्य" था, इसलिए इस चुनौती की आवश्यकता है। प्रविष्टियों को ट्वीट्स की एक श्रृंखला (140 वर्णों या उससे कम की रेखाओं) के रूप में प्रसारित किया जाना चाहिए।पहले ट्वीट में कंपाइलर / इंटरप्रेटर का नाम, प्रोग्राम का नाम और कोई कमांड लाइन आर्ग्युमेंट होना चाहिए
- इसे फ़ाइल "P0" के रूप में सहेजा जाएगा
- निम्नलिखित एन ट्वीट्स में प्रोग्राम को लाइनों की एक श्रृंखला के रूप में होना चाहिए।
- प्रत्येक ट्वीट को एक फ़ाइल में T <n> नाम से संग्रहीत किया जाएगा, जहां n 1..N है
- प्रत्येक पंक्ति को पिछली लाइनों में जोड़ा जाएगा और संकलित या व्याख्या की जाएगी। यह एक मान्य ऑब्जेक्ट फ़ाइल या प्रोग्राम का उत्पादन करना चाहिए।
- प्रोग्राम को अंतिम पंक्ति जोड़ने तक कार्यात्मक होने की आवश्यकता नहीं है।
कार्यक्रम निम्नलिखित तरीके से चलाया जाएगा (छद्म बैश)
interp,prog,args = split P0 /\s/ touch $prog for file in ./T* do cat $prog file > $prog $interp $prog $args die("FAIL") if $? #detect error doneदुभाषिया एक सामान्य रूप से उपलब्ध निष्पादन योग्य कार्यक्रम होना चाहिए जो पहले से ही टेट्रिस को लागू नहीं करता है।
स्कोरिंग :
सबसे कम ट्वीट्स, जिनमें P0 भी शामिल है। सबसे बड़ी संख्या में अतिरिक्त वर्ण (140 * संख्या के ट्वीट्स - कुल वर्ण संख्या) से टूटे हुए संबंध।
उदाहरण प्रविष्टी
chrome a.htm
<html><div id="output"></div></html>
<script>cool java script here</script>
स्कोर = 3 (334 अतिरिक्त)
cc a.c ;a.out
main(){/*cool prog here*/}
स्कोर = 2 (241 स्पेयर)
tetris
स्कोर = 1 (134 अतिरिक्त) यदि यह कानूनी था, जो यह नहीं है
विशेष धन्यवाद
मुझे यहां असली की सहमति से यह पोस्ट करने की अनुमति दी गई थी
