हम क्या भूल गए?


31

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

उदाहरण के लिए अगर हमारा कार्यक्रम था

aabacba

तो फिर bcbउत्पादन होगा a, aaacaउत्पादन करने की आवश्यकता होगी bऔर aababaचाहेंगे उत्पादन c

इससे कोई फर्क नहीं पड़ता कि अनमॉडिफाइड प्रोग्राम क्या करता है।

बाइट्स की संख्या को कम करने के लिए लक्ष्य के साथ बाइट्स में उत्तर दिए जाएंगे।


4
चूँकि इस चुनौती को टैग नहीं किया गया है, क्या हम अपना स्वयं का सोर्स कोड पढ़ सकते हैं?
डेनिस

1
@ डेनिस श्योर। मेरे मेहमान बनें
व्हीट विजार्ड

2
यदि हमारे कार्यक्रम के सभी बाइट्स अंकों का प्रतिनिधित्व करते हैं, तो क्या हम एक्ज़िट कोड के माध्यम से आउटपुट कर सकते हैं?
श्री Xcoder

15
मुझे लगता है कि यह एक कोड चुनौती के रूप में बेहतर होगा जहां आपको उपयोग किए जाने वाले असतत चरित्रों की संख्या को अधिकतम करना होगा।
नॉट्स90

2
गैर-खाली के बजाय 1 बाइट से अधिक होना चाहिए : पी। या Notts90 ने क्या कहा।
मैजिक ऑक्टोपस Urn

जवाबों:


70

zsh, 603 594 566 561 548 440 415 399 378 370 बाइट्स

ec
ho \\n;ca t<<<$'\x20';exi t
d$c -e8BC6P
d0c -eKp
$'\172\163\150' $'\055\143' $'\146\157\162 v \151\156 \173\043\056\056\134\175\175\073\173 \146\147\162\145\160 \055\161 $\166 '$0$'\174\174\074\074\074$\166\073\175'
$'\145v\141\154' $':\073\072\046\046\145\170\151\164';#%&()*+,/9=>?@ADEFGHIJLMNOQRSTUVWXYZ[]^_`jklmsuwy
0# $#;for b in {$..z};{ fgrep -q $b $0||<<<$b;}

Coreutils + पर निर्भर करता है dc

इसे ऑनलाइन आज़माएं!

वह था ... एक यात्रा।

इस उत्तर के तीन भाग हैं। पहली 4 लाइनें कुछ विशेष मामलों को संभालती हैं जो कोड को सरल बनाते हैं। अगली 2 पंक्तियाँ और अंतिम पंक्ति दोनों अनिवार्य रूप से एक ही चीज़ को पूरा करते हैं, लेकिन वास्तव में किसी भी चरित्र को हटाने के साथ चलाया जाता है। वे ज्यादातर पूरक चरित्र सेटों के साथ लिखे गए हैं, ताकि किसी भी चरित्र को हटाने से अधिकतम एक ही टूटता है, जिससे दूसरे को कार्य करना जारी रखने की अनुमति मिलती है।

पहले भाग को देखते हुए, हम पहले संभालते हैं

  • साथ नई हटाने ec\nho \\n
  • अंतरिक्ष हटाने के साथ ca t<<<$'\x20'(बाद में exi tचलने वाले कोड से बचने के लिए, जिसके परिणामस्वरूप बाहरी उत्पादन होगा)
  • $d$c -e8BC6P( 8BC6= 9226है 36*256 + 10, और 36 और 10 के साथ हटाने के $क्रमशः और newline वर्ण के बाइट मान हैं; हम लाइन 6 में बड़ी टिप्पणी में उन्हें शामिल करने से बचने के लिए दशमलव में हेक्स अंक का उपयोग करते हैं)
  • 0हटाने के साथ d0c -eKp( Kदशमलव सटीक मिलता है, जो 0डिफ़ॉल्ट रूप से है)

अगले भाग में, उपयोग किए जाने वाले एकमात्र वर्ण (दूसरी पंक्ति के अंत में कचरे से अलग) $'\01234567v;, स्थान और नई रेखा हैं । इनमें से चार का हिसाब किया गया है, इसलिए शेष ( '\1234567v) अंतिम पंक्ति में नहीं हो सकता है। ऑक्टेल का विस्तार करना ( $'\123'मूल्य 123 8 के साथ ASCII वर्ण का प्रतिनिधित्व करता है ), हमें मिलता है:

zsh -c 'for v in {#..\}};{ fgrep -q $v '$0'||<<<$v;}'
eval ':;:&&exit'

पहली पंक्ति कार्यक्रम में उपयोग किए गए सभी वर्णों के माध्यम से लूप करती है और अपने स्वयं के स्रोत कोड में प्रत्येक को खोजती है ( $0जो स्क्रिप्ट का फ़ाइल नाम चलाया जा रहा है), किसी भी वर्ण को प्रिंट करना जो कि नहीं मिला है।

दूसरी पंक्ति थोड़ी अजीब लगती है, और ऐसा ही प्रतीत होता है जैसे कि exitनोड्स का एक गुच्छा। हालांकि, exitऑक्टल के रूप में सीधे एन्कोडिंग में परिणाम होता है $'\145\170\151\164', जिसमें शामिल नहीं है 2या 3। हमें वास्तव में इसे हटाने के लिए कम लचीला बनाने की आवश्यकता है । ऐसा इसलिए है क्योंकि यदि किसी '\014567vको हटा दिया जाता है, तो पहली पंक्ति को तोड़कर, दूसरी पंक्ति भी टूट जाती है, जिससे शेष कोड निष्पादित हो जाता है। हालांकि, हमें इसकी आवश्यकता है कि अगर इसे हटा दिया जाए 2या 3हटा दिया जाए ताकि 3 और 4 लाइनें चल सकें। इस में shoehorning द्वारा पूरा किया है :और ;, जो उनके अष्टाधारी प्रतिनिधित्व में क्रमश: एक 2 और 3 की है।

लाइन 2 के अंत में कबाड़ बस यह सुनिश्चित करने के लिए है कि प्रत्येक मुद्रण योग्य ASCII वर्ण कम से कम एक बार दिखाई देता है, जिस तरह से प्रत्येक के माध्यम से लूपिंग करके चेकिंग की आवश्यकता होती है।

यदि exitपहले खंड में नहीं बुलाया गया था (अर्थात यह एक को हटाने के द्वारा मंगाई गई थी '\01234567v), हम दूसरे पर चलते हैं, जिसमें हमें इन वर्णों का उपयोग किए बिना एक ही चीज़ को पूरा करना होगा। अंतिम पंक्ति डिकोड की गई पहली पंक्ति के समान है, सिवाय इसके कि हम कुछ बाइट्स को बचाने के लिए लूप की सीमा को अनुबंधित कर सकते हैं, क्योंकि हम पहले से ही जानते हैं कि सभी पात्रों को '\01234567vकवर किया गया है। इसके 0# $#पहले यह भी है , जो इसे टिप्पणी करता है और यदि इसे हटा दिया गया है 0या इसे बाहरी उत्पादन से रोकता $है।


5
वाह, शामिल विभिन्न पात्रों की मात्रा को देखते हुए बहुत प्रभावशाली! निश्चित रूप से उस स्पष्टीकरण को देखते हुए आगे।
केविन क्रूज़सेन

3
यहाँ @KevinCruijssen तुम जाओ :)
दरवाज़े

1
@Doorknob अगर यह आपको 548 इंटर्नेट नहीं जीतता है, तो मुझे नहीं पता कि क्या करता है। ईमानदारी से, 603 बाइट संस्करण प्रभावशाली हह के समान है!
मैजिक ऑक्टोपस उर्फ़

3
अब तक का एकमात्र दिलचस्प जवाब।
htmlcoderexe 19

21

रेटिना , 1 बाइट

1

इसे ऑनलाइन आज़माएं!

जब एकल बाइट ( 1) के सभी इंस्टेंसेस को हटा दिया जाता है, तो आउटपुट होता है 1। काफी सरल।


6
मैं इस तरह से कुछ खोजने के लिए TIO ब्राउज़ कर रहा था - आपने मुझे इसे हराया। Btw यह एक
बहुभुज है

IMO, इस उत्तर को पहले वाले के रूप में बहुविकल्पी उत्तर के रूप में अपग्रेड किया जाना चाहिए (संभवतः हमेशा के लिए भाषाओं की एक-अपूर्ण सूची के साथ), और अन्य दो विस्मरण के लिए नीचे। ओह, और यह भी सी में काम करता है

@Rogem मुझे यकीन नहीं है कि आप "सी में काम करता है" से क्या मतलब है क्या आपके पास एक सी संकलक है जो 1खाली कार्यक्रम के लिए आउटपुट करता है? भले ही, मुझे लगता है कि प्रश्न के उत्तर अलग-अलग दृष्टिकोण और व्यवहार का उपयोग करते हैं। यदि दृष्टिकोण समान रहता है तो IMO का बहुविकल्पी उत्तर केवल वारंट होता है। (वस्तुतः, यह एक बहुविकल्पी नहीं है क्योंकि वास्तविक कोड अलग है, नीचे दिए गए उत्तरों के लिए।) आप कैसा चाहते हैं वोट करने के लिए स्वतंत्र महसूस करें, लेकिन एक वैध उत्तर एक वैध उत्तर है। मैं अपने उत्तर को यथावत रखूंगा, मैं इस पर उत्तरों का संग्रह नहीं करना चाहता।
कॉनर ओ'ब्रायन

11

पेंगुइन, 216173027061157310 बाइट्स

216173027061157310 = (144115617572598740 + 144115241762960340 + 144115194786755540) / 2। कर रहे हैं 216173027061157310 - 144115617572598740 $है, 216173027061157310 - 144115241762960340 #और 216173027061157310 - 144115194786755540रिक्त स्थान।

144115617572598740 #s और रिक्त स्थान निम्नलिखित BF प्रोग्राम को एनकोड करते हैं:

++++++[>++++++<-]>.

इसे ऑनलाइन आज़माएं!

144115241762960340 $s और रिक्त स्थान निम्नलिखित BF प्रोग्राम को कूटबद्ध करते हैं:

+++++++[>+++++<-]>.

इसे ऑनलाइन आज़माएं!

144115194786755540 $s और #s निम्न बीएफ प्रोग्राम को एनकोड करता है:

++++++++[>++++<-]>.

इसे ऑनलाइन आज़माएं!

संपादित करें: @Nitrodon के लिए 72057832274401770 बाइट्स सहेजे गए।


क्यों नहीं उपयोग Uऔर बाइट 127? इसे ऑनलाइन आज़माएं! या यहां तक ​​कि सिर्फ न्यूल बाइट और सोह?
जो किंग

@JoKing मुझे नहीं पता Uथा कि सबसे छोटा मुद्रण योग्य ASCII बाइट था जो आउटपुट हो सकता है। मैं unprintable बाइट्स का उपयोग नहीं करना चाहता था।
नील

यहां तक ​​कि रैपिंग सेल या अनपेक्षित वर्णों का लाभ उठाए बिना भी, आप इसे तीसरे विशिष्ट बाइट के रूप में 216173027061157310 बाइट्स में शामिल कर सकते हैं।
नाइट्रोडॉन

7
मैं मदद नहीं कर सकता, लेकिन "संपादित करें: सहेजा गया 72057832274401770 बाइट्स ..."
श्री लिस्टर


9

पॉलीग्लॉट * , 1 बाइट ( पुष्टि की प्रतीक्षा )

0

इसे ऑनलाइन आज़माएं! (त्रिकोणीयता का उपयोग करते हुए)

*: This works in a (rather wide) variety of languages (except for esolangs like 4, ><> and the like and some other exceptions). Identical to the Jelly answer in source code, but the method of I/O is different – Output is via exit code. When one removes 0 from the source code, they're left with an empty program, which often doesn't error and yields exit code 0 in the majority of languages.



3

Unary (non-competitive), 96 bytes

00000000: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000010: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000020: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000030: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000050: 0000 0000 0101 0101 0101 0101 0101 0101  ................

Here is xxd dump.

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


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