अंतर्राष्ट्रीय अस्पष्ट सी कोड प्रतियोगिता

इंटरनेशनल ऑबफ्यूस्केटेड सी कोड प्रतियोगिता (संक्षिप्त आईओसीसीसी) सबसे रचनात्मक रूप से अस्पष्ट कोड C (प्रोग्रामिंग भाषा) स्रोत कोड के लिए कंप्यूटर प्रोग्रामिंग प्रतियोगिता है। वार्षिक रूप से आयोजित, इसे सी की वाक्य-विन्यास अपारदर्शिता का जश्न मनाने के रूप में वर्णित किया गया है। 2020 में आयोजित 27वीं प्रतियोगिता के लिए विजेता कोड जुलाई 2020 में जारी किया गया था। पिछली प्रतियोगिताएं 1984-1996, 1998, 2000, 2001, 2004-2006, 2011-2015 और 2018-2020 में आयोजित की गई थीं।

न्यायाधीशों के पैनल द्वारा प्रविष्टियों का मूल्यांकन विलुप्त रूप से किया जाता है। निर्णय प्रक्रिया को प्रतियोगिता दिशानिर्देशों में प्रलेखित किया गया है और उन्मूलन आवेग होता हैं। परंपरा के अनुसार प्रत्येक प्रतियोगिता के लिए प्रविष्टियों की कुल संख्या के बारे में कोई सूचना नहीं दी जाती है। जीतने वाली प्रविष्टियों को सी प्रीप्रोसेसर का वर्स्ट एब्यूज या मोस्ट एरेटिक बिहेवियर जैसी श्रेणी से सम्मानित किया जाता है, और फिर आधिकारिक आईओसीसीसी वेबसाइट पर इसकी घोषणा की जाती है। प्रतियोगिता में कहा गया है कि आईओसीसीसी वेबसाइट पर घोषित किया जाना जीत का इनाम है।

इतिहास
आईओसीसीसी की प्रारंभ लैंडन कर्ट नोल और लैरी बासेल ने 1984 में नेशनल अर्धचालक के जेनिक्स पोर्टिंग ग्रुप में काम करते हुए की थी। प्रतियोगिता के लिए विचार तब आया जब उन्होंने कुछ व्यर्थ लिखे गए कोड के बारे में दूसरे के साथ नोट्स की तुलना की थी, जिसे उन्हें ठीक करना था, विशेष रूप से बॉर्न शेल, जो एल्गोल 68 सिंटैक्स का अनुकरण करने के लिए मैक्रोज़ का उपयोग करता था, और बीएसडी के लिए उंगली (यूनिक्स) का बग्गी संस्करण प्रतियोगिता ही 1993 के कंप्यूटर बाउल में प्रश्नोत्तरी प्रश्न का विषय थी। 2006 में प्रारंभ होने वाले पांच वर्षों के अंतराल के बाद, प्रतियोगिता 2011 में लौटी अन्य प्रोग्रामिंग प्रतियोगिताओं की तुलना में, आईओसीसीसी को डॉ. डॉब के जर्नल के संपादक माइकल स्वेन (तकनीकी लेखक) द्वारा इतना महत्वपूर्ण नहीं बताया गया है।

नियम
प्रत्येक वर्ष, प्रतियोगिता के नियम आईओसीसीसी की वेबसाइट पर प्रकाशित किए जाते हैं। सभी पदार्थ क्रिएटिव कॉमन्स लाइसेंस साझा-समान या BY-SA 3.0 अनपोर्टेड के अनुसार प्रकाशित की गई है। नियम साल-दर-साल बदलते रहते हैं और दिशानिर्देशों के सेट के साथ पोस्ट किए जाते हैं जो नियमों की भावना को व्यक्त करने का प्रयास करते हैं।

"प्रतियोगिता के नियमों को हैक करना एक परंपरा है। - लैंडन कर्ट नोल, 2011"

नियमों को अधिकांशतः जानबूझकर कमियां के साथ लिखा जाता है कि प्रतियोगियों को खोजने और दुरुपयोग करने के लिए प्रोत्साहित किया जाता है। कमियों का लाभ उठाने वाली प्रविष्टियाँ अगले वर्ष की प्रतियोगिता के नियमों को समायोजित करने का कारण बन सकती हैं।

आक्षेप नियोजित
प्रविष्टियाँ अधिकांशतः विचित्र या असामान्य युक्तियाँ का उपयोग करती हैं, जैसे कि C प्रीप्रोसेसर का उपयोग उन चीजों को करने के लिए करना जिन्हें करने के लिए इसे डिज़ाइन नहीं किया गया था (कुछ स्थितियों में सही विधि से, डॉ. डॉब्स के अनुसार, सी प्रीप्रोसेसर में 11-बिट अंकगणितीय तर्क इकाई बनाने वाली प्रविष्टि के साथ ), या सी प्रोग्रामिंग भाषा में सामान्य रूप से उपयोग किए जाने वाले निर्माणों से बचने के लिए ही चीज़ को प्राप्त करने के अधिक अस्पष्ट विधियों के पक्ष में उपयोग किया जाता है।

एएससीआईआई आर्ट के विधि के बाद छवियों आदि के समान स्वरूपित स्रोत कोड सम्मिलित है, कोड को पढ़ने के लिए कठिन बनाने के लिए प्रीप्रोसेसर पुनर्वितरण, और स्व-संशोधित कोड कई वर्षों में, प्रविष्टि प्रस्तुत की गई थी जिसके लिए अगले वर्ष के कुछ नियमों की नई परिभाषा की आवश्यकता थी। यह उच्च सम्मान के रूप में माना जाता है। इसका उदाहरण संसार का सबसे छोटा क्विन (कंप्यूटिंग) या स्व-पुनरुत्पादन प्रोग्राम है। प्रविष्टि अपने स्वयं के स्रोत कोड को आउटपुट करने के लिए डिज़ाइन किया गया प्रोग्राम था, और जिसमें स्रोत कोड के शून्य बाइट थे। जब प्रोग्राम चल रहा था, जिससे यह अपने स्रोत कोड के समान शून्य बाइट्स प्रिंट करता था।

अस्पष्टता को अपने चरम सीमा तक ले जाने के प्रयास में, प्रतियोगियों ने ऐसे प्रोग्राम तैयार किए हैं जो सी मानकों के किनारों के चारों ओर स्कर्ट करते हैं, या ऐसे निर्माण होते हैं जो संकलक में संभवतः ही कभी उपयोग किए जाने वाले कोड पथ संयोजनों को ट्रिगर करते हैं। परिणामस्वरूप, पिछली कई प्रविष्टियाँ आधुनिक कंपाइलर में सीधे संकलित नहीं हो सकती हैं, और कुछ क्रैश का कारण बन सकती हैं।

उदाहरण
केवल कुछ किलोबाइट्स की कोड आकार सीमा के अन्दर, प्रतियोगियों ने जटिल चीजें करने में सफलता प्राप्त की थी 2004 के विजेता ने ऑपरेटिंग सिस्टम को बदल दिया था।

टोलेडो नैनोचेस
टोलेडो नैनोचेस मैक्सिकन सॉफ्टवेयर डेवलपर ऑस्कर टोलेडो गुतिरेज़, आईओसीसीसी के पांच बार विजेता द्वारा बनाया गया चैस इंजन है। आईओसीसीसी नियमों के अनुसार, यह 1255 वर्ण लंबा है। लेखक का प्रमाणित है कि यह सी भाषा में लिखा गया संसार का सबसे छोटा चैस प्रोग्राम है।

टोलेडो नैनोचेस और अन्य इंजनों के लिए स्रोत कोड उपलब्ध है। क्योंकि टोलेडो नैनोचेस 18वें आईओसीसीसी (सर्वश्रेष्ठ खेल) से टोलेडो की विजयी प्रविष्टि पर आधारित है ), यह भारी अस्पष्ट कोड है।

2 फरवरी 2014 को, लेखक ने टोलेडो नैनोचेस टिप्पणी स्रोत कोड पुस्तक प्रकाशित की थी, जिसमें पूरी तरह से टिप्पणी स्रोत कोड सम्मिलित है। 7 फरवरी, 2010 तक, यह केवल दो चैस इंजनों में से प्रतीत होता है, जो 2 किलोबाइट्स से कम में लिखा गया है, जो डच भौतिक विज्ञानी एचजी मुलर द्वारा माइक्रो-मैक्स के साथ पूर्ण नियमबद्ध चैस चालें चलाने में सक्षम हैं। 2014 में सुपर माइक्रो चैस ने 1 किलोबाइट के बैरियर को तोड़ा था माइक्रो-मैक्स का व्युत्पन्न कुल 760 वर्ण (रिक्त स्थान और न्यूलाइन सम्मिलित) टोलेडो के इंजन का छोटा संस्करण भी है, टोलेडो पिकोचेस, जिसमें 944 गैर-रिक्त वर्ण सम्मिलित हैं।

पाई
नीचे 1988 की प्रविष्टि है जो अपने क्षेत्र को देखकर पाई की गणना करती है:

(यह प्रविष्टि के&आर सी में लिखी गई थी; यह कुछ बदलावों के बिना एएनएसआई सी में ठीक से काम नहीं करती है। )

फ्लाइट सिम्युलेटर
एक अन्य उदाहरण निम्नलिखित फ्लाइट सिम्युलेटर है, जो 1998 आईओसीसीसी का विजेता है, परिकलित दांव: कंप्यूटर, जुआ और जीतने के लिए गणितीय मॉडलिंग (2001) में सूचीबद्ध और वर्णित के रूप में उपयोग किया जाता है और नीचे दिखाया गया है:

इस प्रोग्राम को संकलित करने के लिए लिनक्स सिस्टम पर निम्न कमांड लाइन की आवश्यकता है:

बाइनरी फ़ाइल चलाने के लिए (banks) इसे के साथ आपूर्ति की जानी है .sc दृश्य फ़ाइल मानक इनपुट के माध्यम से stdin इनपुट होता है:

अकरी
नीचे 2011 प्रविष्टि है जो डॉन, यांग द्वारा एसीआईआई छवि को कम करती है:

यदि प्रोग्राम इनपुट के रूप में अपने स्वयं के स्रोत का उपयोग करके चलाया जाता है, जिससे परिणाम है:

यह भी देखें

 * अस्पष्ट पर्ल प्रतियोगिता
 * अंडरहैंडेड सी प्रतियोगिता
 * इसोटेरिक प्रोग्रामिंग भाषा