कोड के समान लंबाई के साथ आउटपुट


97

इस चुनौती में, आपको एक प्रोग्राम या फ़ंक्शन लिखना चाहिए जो कोई इनपुट नहीं लेता है और प्रिंट करता है या प्रोग्राम के समान बाइट्स के साथ एक स्ट्रिंग लौटाता है। कुछ नियम हैं:

  • आप केवल मुद्रण योग्य ASCII रेंज (0x20 से 0x7E, समावेशी), या newlines (0x0A या 0x0D) में आउटपुट बाइट्स कर सकते हैं।
  • आपका कोड एक क्वीन नहीं होना चाहिए, इसलिए कोड और आउटपुट कम से कम एक बाइट में भिन्न होना चाहिए।
  • आपका कोड कम से कम एक बाइट लंबा होना चाहिए।
  • यदि आपके आउटपुट में अनुगामी newlines शामिल हैं, तो वे बाइट काउंट का हिस्सा हैं।
  • यदि आपके कोड को गैर-मानक कमांड-लाइन फ़्लैग की आवश्यकता है, तो उन्हें हमेशा की तरह गिनें (जैसे कि बाइट काउंट को आपकी भाषा के कार्यान्वयन के मानक आह्वान में अंतर जोड़कर), और आउटपुट की लंबाई आपके समाधान के स्कोर से मेल खाना चाहिए। जैसे यदि आपका प्रोग्राम है abऔर गैर-मानक ध्वज की आवश्यकता है -n(हम मानेंगे कि इसे मानक झंडे के साथ जोड़ा नहीं जा सकता है, इसलिए यह 3 बाइट्स है), तो आपको कुल 5 बाइट का उत्पादन करना चाहिए।
  • आउटपुट हमेशा एक जैसा नहीं होता है, जब तक आप यह दिखा सकते हैं कि हर संभव आउटपुट उपरोक्त आवश्यकताओं को पूरा करता है।
  • सामान्य रानी नियम लागू नहीं होते हैं। आप स्रोत कोड या उसके आकार को पढ़ सकते हैं, लेकिन मुझे संदेह है कि यह अधिकांश भाषाओं में इसे हार्डकॉड करने से कम होगा।

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

आप किसी भी प्रोग्रामिंग भाषा का उपयोग कर सकते हैं , लेकिन ध्यान दें कि इन खामियों को डिफ़ॉल्ट रूप से मना किया गया है।

यह , इसलिए सबसे छोटा वैध उत्तर - बाइट्स में मापा जाता है - जीतता है।

लीडरबोर्ड



18
"आपका कोड एक क्वीन नहीं होना चाहिए" लेकिन ... लेकिन ... इसे टैग किया गया है क्ाइन
Okx

4
@ ओएक्सएक्स क्योंकि यह एक सामान्यीकृत क्वीन है, अर्थात आवश्यक आउटपुट स्रोत कोड पर निर्भर करता है।
मार्टिन एंडर

4
@MartinEnder आपको एक्ज़िट कोड द्वारा आउटपुट को अस्वीकार करना चाहिए, जो कि एक डिफ़ॉल्ट है। यदि आप इसे लगभग हर एक बाइट प्रोग्राम को लगभग हर भाषा में अनुमति देते हैं। एक उपयोगकर्ता पहले ही ऐसा कर चुका है
श्रीओटीचिलिज्म ओजैसिक

2
@ एग्जिट कोड के अनुसार विजुअल आउटपुट एक स्ट्रिंग नहीं है, इसलिए यह यहां लागू नहीं होता है।
मार्टिन एंडर

जवाबों:


204

सी (आधुनिक लिनक्स), 19 बाइट्स

main(){puts('s');}

संकलित और चलाने पर, यह प्रिंट करता है:

Segmentation fault

20
यह शानदार है: डी
बीटा डिके

4
यह "C + अंग्रेजी भाषा यूनिक्स / पॉज़िक्स OS;)" की तरह है
फ्लोरियन कैस्टेलन

5
मुझे लगता है कि "सी" की तुलना में "सी, आधुनिक लिनक्स" लिखना बेहतर होगा: विंडोज के तहत त्रुटि संदेश अलग है और पुराने समय में लिनक्स प्रोग्राम इस तरह से संकलित किए गए थे कि पता 0x73 ('s') पढ़ने योग्य था इसलिए कोई अपवाद नहीं था।
मार्टिन रोसेनौ

9
मैं इस उत्तर को उभारने के लिए साइट में शामिल हुआ।
नीतीश

7
जैसा कि प्रभावशाली है, यह वास्तव में सी प्रोग्राम नहीं है जो आउटपुट प्रिंट करता है, लेकिन यह जिस शेल में चल रहा है।
डेनिस

80

एक्सेल, 11 बाइट्स

नॉर्वेजियन भाषा संस्करण:

=SMÅ(13^9)

अंग्रेजी भाषा संस्करण (12 बाइट्स):

=LOWER(17^9)

N- अंकीय संख्या उत्पन्न करता है और पाठ को लोअरकेस में परिवर्तित करके परिवर्तित करता है।


106
यह "नौकरी के लिए सही भाषा चुनने" के लिए एक नया अर्थ देता है।
मार्टिन एंडर

4
यह एक महान विचार है। ऐसा करना कम होगा =9^7&""जो किसी भी भाषा में 7 अंकों की संख्या उत्पन्न करता है और केवल 7 बाइट्स है।
ओपिसडैड

@OpiesDad अच्छा समाधान, मुझे लगता है कि आपको इसे उत्तर के रूप में पोस्ट करना चाहिए, इसलिए मैं इसे बढ़ा सकता हूं।
पजाकोंक

4
@MartinEnder यह मुझे आश्चर्यचकित करता है कि इस उत्तर की तुलना में आपका सट्टा / संभावित मजाक कितना अधिक उत्कीर्ण है (हालांकि यह करीब है)।
हाइपरएन्यूट्रीनो

55

भूलभुलैया , 4 बाइट्स

!!>@

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

प्रिंटों 0000

व्याख्या

!   Print an implicit 0 from the stack.
!   Print an implicit 0 from the stack.
>   Rotate the source code right by one cell, so the code now becomes

    @!!>

    The IP is moved along, so it's now at the end of the line, which is 
    a dead end. So the IP turns around and starts moving left.
!   Print an implicit 0 from the stack.
!   Print an implicit 0 from the stack.
@   Terminate the program.

6
वह बहुत चालाक है। घर पर एक +1 है!
१ 15:


40

रेटिना , 2 बाइट्स

no

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

प्रिंट 0और एक लाइनफीड।

2-बाइट समाधान के बहुत सारे हैं, लेकिन मेरा मानना ​​है कि यह इष्टतम है। डिफ़ॉल्ट रूप से रेटिना हमेशा एक अनुगामी न्यूलाइन प्रिंट करता है और इससे छुटकारा पाने में बहुत अधिक बाइट्स लगते हैं। इसलिए हमें 1-बाइट प्रोग्राम ढूंढना होगा जो खाली इनपुट को अपरिवर्तित छोड़ दे। मेरा मानना ​​है कि एकमात्र कार्यक्रम जो ऐसा करता है वह एकल लाइनफीड वाला कार्यक्रम है, जो इसलिए आउटपुट के बराबर है और इसलिए चुनौती की अनुमति नहीं है।

अगली सबसे सरल बात यह है कि रेटिना को एकल अंक (खाली इनपुट के खिलाफ कुछ रेगेक्स के मैचों की संख्या) के आउटपुट के साथ जीना है, और हम ऐसा कर सकते हैं कि बहुत से असफल (या मिलान) 2-बाइट पैटर्न के साथ।


27
+1 कोड के लिए मुझे यह नहीं चलाना चाहिए: पी
क्रिस्टोफर

33

गणितज्ञ, 2 बाइट्स

4!

कारख़ाने का

24


1
गाह! बहुत चालाक है।
tuskiomi

2
मुझे इससे हराएं! +1। ( मुझे लगता है कि आपको उल्लेख करना चाहिए कि यह गणितज्ञ के REPL संस्करण में है।)
ग्रेग मार्टिन

यदि यह एक उचित उत्तर है, तो क्या उत्तर "1" भी एक उचित उत्तर नहीं होगा? ('1' को गणितज्ञ की REPL में डालकर '1' भी लौटेगा ...)
मार्क सहगल

3
@MarkSegal यह नो-क्वाइन-नियम का उल्लंघन होगा।
एलेक्सर

6
नियम: ... "... कोड और आउटपुट कम से कम एक बाइट में भिन्न होना चाहिए"
J42161217

29

सी, 20 बाइट्स

f(){printf("%20d");}

कुछ संख्या को आउटपुट करता है, 20 की लंबाई तक रिक्त स्थान के साथ गद्देदार। (क्या संख्या? स्मृति में आगे क्या होता है?)।

कुछ नमूना मेरे सिस्टम पर चलता है:

llama@llama:...code/c/ppcg121056samelen$ ./a.out 
           -666605944
llama@llama:...code/c/ppcg121056samelen$ ./a.out 
          -1391039592
llama@llama:...code/c/ppcg121056samelen$ ./a.out 
           1727404696
llama@llama:...code/c/ppcg121056samelen$ ./a.out 
             10717352
llama@llama:...code/c/ppcg121056samelen$ ./a.out 
           1485936232

यह शर्म की बात है कि उत्पादन मनमाने ढंग से बाइट्स नहीं हो सकता है, क्योंकि इसने 19 बाइट समाधान की अनुमति दी होगी:

f(){write(1,f,19);}

जो कबाड़ के 19 बाइट्स का उत्पादन करता है, जो fपते पर शुरू होता है ।


मुझे एक जवाब देखकर खुशी हुई कि अलग-अलग आउटपुट नियम का उपयोग करता है। :)
मार्टिन एंडर

क्या यह सेगफ़ॉल्ट नहीं हो सकता?
डेनियल

TIO लिंक कहां है?
कैलक्यूलेटरफलिन

@Daniel नहीं, मुद्रित संख्या %esiरजिस्टर की पिछली सामग्री से आएगी ।
डोरकनॉब

8
@Doorknob लेकिन यह अभी भी अपरिभाषित व्यवहार है, इसलिए एक अधिक परपीड़क संकलक कुछ पूरी तरह से अलग यहां कर सकते हैं
सार्ज Borsch

29

लिनक्स पर बैश, 6

uname

(इसके बाद एक नई पंक्ति)

आउटपुट Linuxएक न्यूलाइन द्वारा पीछा किया।


2
तकनीकी रूप unameसे एक बाश बिलिन नहीं है - यह एक अलग निष्पादन योग्य है
जेसन मुसग्रोव


@GammaFunction आपको unameबैश बिलिन के रूप में कहां दिखाई देता है ? हर डिस्ट्रो मैं अभी अपने हाथ रख सकता हूं यह एक अलग बाइनरी है, जिसमें टीआईओ भी शामिल है । इसके विपरीत, जैसा कि आपके लिंक किए गए उत्तर से पता चलता है, umaskअधिकांश / सभी गोले में एक बिलिन है।
डिजिटल ट्रामा

मैं एक बिलिन के रूप में नहीं देखता हूं uname। जब मैंने कहा "-1, और वास्तव में एक बेसिन", मेरा मतलब था "यह उत्तर umask-1 बाइट्स के लिए उपयोग करता है , और umaskवास्तव में एक बेसिन है"।
गामाफंक्शन

@GammaFunction क्षमा करें - मुझे आपकी टिप्पणी में "-1" का अर्थ गलत लगा है - मैं उन अर्थों के लिए उपयोग किया जाता हूं और एक टिप्पणी क्यों समझाता हूं।
डिजिटल ट्रामा

27

जावास्क्रिप्ट ईएस 6, 9 बाइट्स

टेम्पलेट स्ट्रिंग्स का उपयोग करना

_=>`${_}`

f=

_=>`${_}`

console.log(f());
console.log(typeof f());


है undefinedएक स्ट्रिंग माना जाता है?
झबरा

3
@ शैगी संपादित देखें। मैं स्ट्रिंग इंटरपोलेशन का उपयोग कर रहा हूं
वेइदेज़

वाह यह PPCG और 14 upvotes पर मेरी दूसरी पोस्ट है! धन्यवाद
Weedoze

1
क्यों साधारण मट्ठा आपको मुश्किल हो सकता है? (_=>_+'')
गोटो 0

1
@ GOTO0 ओह ठीक है आप कोष्ठक रखें। यह एक और विकल्प है। मैं व्यक्तिगत रूप से मेरा
हीहे को

24

पिरामिड स्कीम , 74 43 42 बाइट्स

खुल्द्रेसथ ना'बैरिया के लिए 31 बाइट्स का धन्यवाद! जोकिंग के पुन: डिज़ाइन किए गए समाधान के लिए 1 बाइट धन्यवाद!

  ^
 /^\
^---^
-^ ^-
 -^-
 /2\
/ 8 \
-----

इसे ऑनलाइन आज़माएं! 41-अंकीय संख्या को आउटपुट करता है 28^28 = 33145523113253374862572728253364605812736, उसके बाद एक अनुगामी न्यूलाइन है।


पुराना संस्करण

  ^
 / \
/out\
-----^
    /^\
   ^---^
  /1\ /9\
 /606\---
/51015\
-------

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

आउटपुट 71277303925397560663333806233294794013421332605135474842607729452115234375= 160651015 ** 9, या लगभग १० about४


6
अरे, क्या आप अपनी भाषा बेचने की कोशिश कर रहे हैं? यदि हां, तो आप गिरफ्त में हैं। - द कॉप्स
NoOneIsHere

2
@NoOneIsHere क्षमा करें?
कॉनर ओ'ब्रायन

3
क्षमा करें, इसे पिरामिड स्कीम कहा जाता है, जो एक प्रकार का घोटाला भी है।
NoOneIsHere

1
ओह्ह्ह्ह ह्ह्ह्ह्ह्ह्ह्ह रोफ्ल
कॉनर ओ'ब्रायन


23

पायथन 2 , 9 बाइट्स

print{+1}

यह प्रिंट set([1])और एक लाइनफीड है।

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


11
ब्रूट-फोर्सिंग कार्यक्रमों से शुरू होने वाले print, कोई कम समाधान नहीं हैं, और केवल 9-बाइट वाले ही इसके और लुइस मेंडो के वेरिएंट हैं print 1e5
xnor

23

पायथन 2 , 9 बाइट्स

print 1e5

प्रदर्शित आउटपुट में एक अनुगामी न्यूलाइन होती है।

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


जहाँ तक उत्पादन के रूप में एक चरित्र के रूप में गिनती नई अनुगामी है? अन्यथा, यह आठ बाइट्स प्रिंट करता है।
ओल्डबुननी 2800

@ OldBunny2800 हां, चुनौती कहती है कि यदि आपके आउटपुट में नई अनुगामी शामिल हैं, तो वे बाइट काउंट का हिस्सा हैं । वैसे भी, मैं स्पष्ट करूंगा कि मेरे उत्तर में
लुइस मेंडू

18

ब्रेनफक , 25 बाइट्स

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

इसे ऑनलाइन आज़माएं! नोट: 8-बिट अहस्ताक्षरित कक्षों के साथ कार्यान्वयन की आवश्यकता है

आउटपुट:

~~~~~}}}}}|||||{{{{{zzzzz

व्याख्या

--[         254
 -->+<]      /2 = 127 into the second cell
+++++[      Five times
 ->-.....<]  Print the second cell - 1 five times

4
8-बिट-सेल, इनफ़ाइट टेप जैसे कई BF-रूपांतर हैं। या एक सीमित टेप और अनंत कोशिकाएं। मुझे पूरा यकीन है कि आपका एक अहस्ताक्षरित 8-बिट सेल मॉडल है, लेकिन मुझे लगता है कि यह अच्छा होगा यदि आप इसे अपने उत्तर में शामिल करते हैं।
रोमन ग्रेफ

@ RomanGräf अच्छी बात! यदि आमतौर पर एक गैर-मानक कार्यान्वयन की आवश्यकता होती है तो मैं उस जानकारी को शामिल करता हूं। यह उत्तर किसी भी मानक कार्यान्वयन (8-बिट अहस्ताक्षरित सेल, किसी भी टेप) पर काम करना चाहिए, लेकिन मैं स्पष्ट करने के लिए एक नोट जोड़ूंगा।
ज़ैक सी।

क्या आपके पास 1 बाइट प्रोग्राम नहीं हो सकता है .जो अनपेक्षित NULLवर्ण को प्रिंट करता है ?
ग्रेविटॉन

@ ग्रेविटन जो इस चुनौती के पहले नियम का उल्लंघन करेगा। हालांकि, यह एक बीएफ व्युत्पन्न में एक वैध समाधान है जो एक मुद्रण योग्य मूल्य के लिए चूक करता है (देखें: मेरा ब्रेनबुल उत्तर )।
ज़ैक सी।


16

सी (Ideone), 14 बाइट्स

f(){warn(0);}

Ideone पर , जो इसके निष्पादन योग्य नाम देता है prog, यह निम्नलिखित अनुगामी न्यूलाइन के साथ आउटपुट करता है।

prog: Success

सी (जीसीसी), 15 बाइट्स

f(){warn(00);}

क्योंकि GCC a.outडिफ़ॉल्ट रूप से (अतिरिक्त झंडे की अनुपस्थिति में, जो बाइट्स खर्च करेगा) नाम से एक निष्पादन योग्य लिखता है , यह निम्नलिखित अनुगामी न्यूलाइन के साथ आउटपुट करता है।

a.out: Success

7
@MDXF कल्पना कार्यक्रम या फ़ंक्शन कहती है, इसलिए एक फ़ंक्शन सबमिशन पूरी तरह से मान्य है। चूँकि यहाँ उपयोगकर्ता द्वारा फ़ाइल नाम नहीं चुना गया है (Ideone और gcc में कोई चूक नहीं है), मुझे लगता है कि यह ठीक है (व्यक्तिगत राय)।
डेनिस

15

सी (जीसीसी) , 18 17 बाइट्स

f(){puts('@C');}

ध्यान दें कि बीच में एक STX बाइट ( 0x02 ) है @और C

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

पोर्टेबिलिटी

यह Fedora 25 पर gcc 6.3.1 और clang 3.9.1 के साथ परीक्षण किया गया है, Ubuntu 14.04.4 पर 4.8.4, और OpenSUSE 13.2 पर gcc 4.8.3, जहां यह निम्न आउटपुट प्रिंट करता है।

inux-x86-64.so.2

मुझे उम्मीद है कि यह समान आउटपुट को gcc के सभी संस्करणों के साथ उत्पादित करेगा, जब तक कि यह निम्न प्रकार के निष्पादन योग्य को संकलित करता है।

ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2

अलग-अलग प्लेटफार्मों को अलग-अलग मेमोरी एड्रेस की आवश्यकता होगी और संभवतः मल्टी-कैरेक्टर कैरेक्टर निरंतर में बाइट्स के लिए एक अलग ऑर्डर।

उदाहरण के लिए, प्रिंट के @\2Cसाथ और FreeBSD 11 पर क्लैंग 3.8.0 के साथ एक नई पंक्ति की जगह।@\2\4exec/ld-elf.so.1

ऑफ़लाइन सत्यापन

$ printf "%b\n" "f(){puts('@\2C');}main(){f();}" > quine.c
$ gcc -w -o quine quine.c
$ ./quine
inux-x86-64.so.2
$ ./quine | wc -c
17

यह काम किस प्रकार करता है

डिफ़ॉल्ट रूप से, ld पाठ खंड के आधार पते के रूप में 0x400000 का उपयोग करता है , जिसका अर्थ है कि हम ELF की सामग्री को स्मृति पते 0x400000 से शुरू कर सकते हैं ।

ईएलएफ के पहले 640 बाइट्स वास्तविक स्रोत कोड से काफी हद तक स्वतंत्र हैं। उदाहरण के लिए, यदि f की घोषणा के बाद main(){f();}और कुछ नहीं है, तो वे निम्नानुसार दिखते हैं।

00000000: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00  .ELF............
00000010: 02 00 3e 00 01 00 00 00 00 04 40 00 00 00 00 00  ..>.......@.....
00000020: 40 00 00 00 00 00 00 00 e8 19 00 00 00 00 00 00  @...............
00000030: 00 00 00 00 40 00 38 00 09 00 40 00 1e 00 1b 00  ....@.8...@.....
00000040: 06 00 00 00 05 00 00 00 40 00 00 00 00 00 00 00  ........@.......
00000050: 40 00 40 00 00 00 00 00 40 00 40 00 00 00 00 00  @.@.....@.@.....
00000060: f8 01 00 00 00 00 00 00 f8 01 00 00 00 00 00 00  ................
00000070: 08 00 00 00 00 00 00 00 03 00 00 00 04 00 00 00  ................
00000080: 38 02 00 00 00 00 00 00 38 02 40 00 00 00 00 00  8.......8.@.....
00000090: 38 02 40 00 00 00 00 00 1c 00 00 00 00 00 00 00  8.@.............
000000a0: 1c 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00  ................
000000b0: 01 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00  ................
000000c0: 00 00 40 00 00 00 00 00 00 00 40 00 00 00 00 00  ..@.......@.....
000000d0: 04 07 00 00 00 00 00 00 04 07 00 00 00 00 00 00  ................
000000e0: 00 00 20 00 00 00 00 00 01 00 00 00 06 00 00 00  .. .............
000000f0: 08 0e 00 00 00 00 00 00 08 0e 60 00 00 00 00 00  ..........`.....
00000100: 08 0e 60 00 00 00 00 00 1c 02 00 00 00 00 00 00  ..`.............
00000110: 20 02 00 00 00 00 00 00 00 00 20 00 00 00 00 00   ......... .....
00000120: 02 00 00 00 06 00 00 00 20 0e 00 00 00 00 00 00  ........ .......
00000130: 20 0e 60 00 00 00 00 00 20 0e 60 00 00 00 00 00   .`..... .`.....
00000140: d0 01 00 00 00 00 00 00 d0 01 00 00 00 00 00 00  ................
00000150: 08 00 00 00 00 00 00 00 04 00 00 00 04 00 00 00  ................
00000160: 54 02 00 00 00 00 00 00 54 02 40 00 00 00 00 00  T.......T.@.....
00000170: 54 02 40 00 00 00 00 00 44 00 00 00 00 00 00 00  T.@.....D.......
00000180: 44 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00  D...............
00000190: 50 e5 74 64 04 00 00 00 b0 05 00 00 00 00 00 00  P.td............
000001a0: b0 05 40 00 00 00 00 00 b0 05 40 00 00 00 00 00  ..@.......@.....
000001b0: 3c 00 00 00 00 00 00 00 3c 00 00 00 00 00 00 00  <.......<.......
000001c0: 04 00 00 00 00 00 00 00 51 e5 74 64 06 00 00 00  ........Q.td....
000001d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000001e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000001f0: 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00  ................
00000200: 52 e5 74 64 04 00 00 00 08 0e 00 00 00 00 00 00  R.td............
00000210: 08 0e 60 00 00 00 00 00 08 0e 60 00 00 00 00 00  ..`.......`.....
00000220: f8 01 00 00 00 00 00 00 f8 01 00 00 00 00 00 00  ................
00000230: 01 00 00 00 00 00 00 00 2f 6c 69 62 36 34 2f 6c  ......../lib64/l
00000240: 64 2d 6c 69 6e 75 78 2d 78 38 36 2d 36 34 2e 73  d-linux-x86-64.s
00000250: 6f 2e 32 00 04 00 00 00 10 00 00 00 01 00 00 00  o.2.............
00000260: 47 4e 55 00 00 00 00 00 02 00 00 00 06 00 00 00  GNU.............
00000270: 20 00 00 00 04 00 00 00 14 00 00 00 03 00 00 00   ...............

का उपयोग करते हुए, उदाहरण के लिए, main(int c, char**v){f();}कुछ बाइट्स को बदलता है, लेकिन स्ट्रिंग की ऑफसेट नहीं है /lib64/ld-linux-x86-64.so.2, जिसे हम आउटपुट का उपयोग करने के लिए उपयोग करेंगे।

उक्त स्ट्रिंग की ऑफसेट संख्या 0x238 है और यह 27 बाइट्स लंबी है। हम केवल 17 बाइट्स प्रिंट करना चाहते हैं (और यदि हम उपयोग करते हैं तो अंतिम एक नई पंक्ति होगी puts), इसलिए हम 0x243 , ऑफ़सेट के लिए ऑफसेट में 11 जोड़ते हैं । जोड़ा जा रहा है 0x400000 और 0x243 देता है 0x400243 , की स्मृति स्थान ।inux-x86-64.so.2inux-x86-64.so.2

इस स्मृति पते को प्राप्त करने के लिए, हम बहु-चरित्र वाले चरित्र स्थिरांक का उपयोग कर सकते हैं, जो कार्यान्वयन-परिभाषित व्यवहार को प्रदर्शित करते हैं। 0x400243 है (64) (2) (67) आधार 256 में और जीसीसी के बहु-चरित्र चरित्र स्थिरांक बड़े endian बाइट क्रम उपयोग करती हैं इसलिए, '@\2C'वांछित स्ट्रिंग की स्मृति पता अर्जित करता है।

अंत में, putsउस स्मृति स्थान पर स्टिंग (शून्य-समाप्त) प्रिंट करता है और एक अनुगामी न्यूलाइन बनाता है, जिससे आउटपुट के 17 बाइट्स बनते हैं।


यह विज़ार्डरी है ... क्या यह संकलित असेंबली के बाइट ऑर्डर या कुछ और है?
पैट्रिक रॉबर्ट्स

मेरे सिस्टम पर आउटपुट (GCC 6.3.1 के साथ लिनक्स): के Uसाथ संकलन करते समय -Df=mainUजब संकलन के साथ main(){f();}
एमडी एक्सएफ

@PatrickRoberts इस बिंदु पर, मुझे वास्तव में यकीन नहीं है कि धारणाएं क्या हैं। चूंकि यह इकट्ठे हुए ईएलएफ फ़ाइल में इधर-उधर होता है, यह वास्तविक कोड से पहले संकलक द्वारा लिखी गई हर चीज पर बहुत निर्भर करता है।
डेनिस

@MDXF को एक उपयुक्त मेमोरी एड्रेस प्राप्त करने का एक छोटा तरीका मिला। यह अब मेरे Ubuntu 14.04 VPS पर काम करता है, लेकिन ymmv।
डेनिस

@ डेनिस अब ठीक काम करता है (इसे खतरे में है)। बाउंटी आपकी है अगर सप्ताह के अंत तक कोई भी छोटा समाधान नहीं ढूंढता है।
एमडी एक्सएफ

13

सेल्फ-मॉडिफ़ाइंग ब्रेनफक , 5 बाइट्स

<[.<]

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

आउटपुट:

]<.[<

स्पष्टीकरण:

वास्तव में सरल, रिवर्स में स्रोत प्रिंट करता है। SMBF में, प्रोग्राम की सामग्री को पॉइंटर पर प्रारंभिक स्थिति के बाईं ओर टेप पर संग्रहीत किया जाता है। ग्लाइडिंग लेफ्ट और प्रिंटिंग सोर्स कोड को पीछे की तरफ आउटपुट करेगा।

चूंकि इस चुनौती में पठन स्रोत की अनुमति है, यह निश्चित रूप से नियमों के भीतर होना चाहिए।


13

बेसिक अंकगणितीय कैलकुलेटर , 2 बाइट्स

1=

प्रिंट 1., या:

    |
    |
    |  .

उन मूर्खतापूर्ण सात खंडों के डिस्प्ले पर।

पुन: उत्पन्न करने के लिए, किसी भी यादृच्छिक कैलकुलेटर को उठाएं; वे सभी इस प्रोग्रामिंग भाषा को किसी भी तरह से स्थापित करते हैं।


1
क्या यह सभी कैलकुलेटर के लिए सही है? मुझे यकीन है कि वे लगातार दशमलव बिंदु
बीटा डेके

इसके 1.बजाय नहीं है 1x? इसके अलावा यह एक क्वीन है, जो नियमों द्वारा अस्वीकृत है।
1842 में

नहीं, यह 1=, मैंने गड़बड़ कर दी। मेरा मतलब 1xहै कि समान का मतलब है, लेकिन मैं भूल गया कि =यह एक बटन है।
ओल्डबनी 2800

यह केवल 1मेरे TI-36 और TI-84 CE दोनों पर आउटपुट देता है । क्या ये "बुनियादी" कैलकुलेटर के रूप में नहीं गिने जाते हैं?
बेंजामिन उरक्हार्ट

नहीं, एक TI 84 एक अंकगणितीय कैलकुलेटर नहीं है, यह एक रेखांकन कैलकुलेटर है। मैं 36 के बारे में नहीं जानता, लेकिन मुझे पूरा यकीन है कि यह एक वैज्ञानिक कैलकुलेटर है। यह उत्तर चार-फ़ंक्शन कैलकुलेटर के लिए है।
OldBunny2800

13

फूरियर, 26 22 20 बाइट्स

5^(`na`&i)` Batman!`

यह चार वीडियो पर कोशिश करो!

आउटपुट:

nananananana Batman!

उचित पूंजीकरण के लिए, यह 4 अतिरिक्त बाइट्स हैं:

`N`7^(`an`i^~i)`a Batman!`

यह चार वीडियो पर कोशिश करो!

Nanananananananana Batman!

एडम पश्चिम पश्चिम


1
आपको NC शामिल नहीं करना है (केवल अगर आपने इस चुनौती के लिए स्ट्रिंग प्रिंटिंग की है (और यह मूर्खतापूर्ण होगी)
क्रिस्टोफर

@ क्रिस्टोफर हुह, मुझे नहीं पता था कि
बीटा डिके

12

ब्रेकीलॉग , 1 बाइट

w

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

व्याख्या

wअंतर्निहित "लिखना" है। यहां, वह इनपुट लिखेगा। चूंकि इनपुट एक निशुल्क चर है, wइसलिए इसे मुद्रण से पहले पूर्णांक के रूप में लेबल किया जाएगा। पहला पूर्णांक यह कोशिश करता है 0


Here, it will write the Input.क्या 'इनपुट' ही कार्यक्रम है? क्या यह स्रोत को पढ़ने के रूप में गिना नहीं जाता है, जो कि एक क्वीन में डिफ़ॉल्ट धोखा है?
एमडी एक्सएफ

4
@MDXF "सामान्य क्वीन नियम लागू नहीं होते हैं"
रोब वाट्स

3
@MDXF इनपुट एक विशेष Brachylog वैरिएबल है जिसे आप Brachylog प्रोग्राम को कॉल करते समय सेट कर सकते हैं। यह TryItOnline के इनपुट भाग में जाता है। यहां हम कुछ भी इनपुट पर सेट नहीं करते हैं, इसलिए यह प्रभावी रूप से एक चर है। यह कार्यक्रम नहीं है।
घातक

10

जावा (ओपनजेडके 8) , 11 बाइट्स

o->1e8-1+""

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

आउटपुट:

9.9999999E7

बस स्पष्ट उत्तर की तुलना में अधिक विस्तृत है, एक बालक ()->"".format("%23s",0)

बचाता है

  • 18 -> 16 बाइट्स: राउंडिंग और 10 की शक्ति का अधिक लाभकारी संयोजन, PunPun1000 के लिए धन्यवाद
  • 16 -> 13 बाइट्स: बेहतर फॉर्मूला, जॉली जोकर के लिए धन्यवाद
  • 13 -> 11 बाइट्स: सुधार सूत्र, केविन क्रूज़सेन के लिए धन्यवाद

2
()->1E10-1+"", "9.999999999E9" (13)तीन और बाइट्स बचाता है
जॉली जोकर

1
आप को बदलने के द्वारा 1 बाइट बचा सकते हैं 1e10करने के लिए 1e9का उपयोग करके, या 2 बाइट्स एक खाली इनपुट के बजाय() इस तरह: o->1e8-1+""(आउटपुट 9.9999999E7; लंबाई और बाइट गिनती 11 )।
केविन क्रूज़सेन 12

9

05AB1E , 1 बाइट

õ

एक ही न्यूलाइन आउटपुट करता है। õएक रिक्त स्ट्रिंग को धकेलता है, और यह एक नई रेखा के साथ अनुमानित रूप से आउटपुट होता है।

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

आपके देखने के आनंद के लिए कुछ अन्य 2 बाइट समाधान (आउटपुट कोष्ठक में है, और सभी आउटपुट में एक अनुगामी न्यूलाइन है):

X, (1)
Y, (2)
¾, (0)
¼, (1)
¶, (newline)
ð, (space)
Î, (0)

वहाँ वैसे भी अधिक 2 बाइट समाधान हैं।


"जो एक स्वीकृत आउटपुट विधि है" केवल फंक्शन सॉल्यूशंस के लिए, न कि फुल प्रोग्राम्स के लिए।
मार्टिन एंडर

@MartinEnder उन समाधानों को कार्यों के रूप में गिना जाएगा? वास्तव में यकीन नहीं है, क्योंकि मैं अक्सर यहां फ़ंक्शन का उपयोग नहीं करता हूं।
ओकेक्स

मुझे 05AB1E के बारे में पर्याप्त जानकारी नहीं है, लेकिन वे केवल फ़ंक्शन पर विचार करते हैं यदि वे वास्तव में एक फ़ंक्शन ऑब्जेक्ट का मूल्यांकन करने वाले भाव हैं (जो मुझे संदेह है कि उन्हें उपयोग करने के बाद तुरंत कमांड निष्पादित होने का कारण बनता है)।
मार्टिन एंडर

9

वी / विम, 1 बाइट

o

यह एक सिंगल न्यूलाइन को प्रिंट करता है।

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

इस पर कई प्रकार के वेरिएंट हैं जो काम भी करेंगे। उदाहरण के लिए,

O

vim में, और

Ä
ä
ï
Ï

में वी।

कई कई तीन बाइट समाधान भी हैं। उदाहरण के लिए:

3ii
i³i
¬ac

ये सभी V के लिए विशिष्ट हैं।


3ii का विस्तार तब तक नहीं होता जब तक कि आप प्रेस से बच नहीं जाते हैं, इसलिए यह तीन या चार बाइट्स (या कीस्ट्रोक्स, बल्कि) होना चाहिए?
अल्जीमर

@algmyr व्यर्थ में, आप सही हैं। यह होना चाहिए था 4ii<ESC>लेकिन वी परोक्ष कार्यक्रम के अंत में बच में भरता है।
DJMcMayhem

8

बैच, 12 बाइट्स

@echo %OS%

बाइट गिनती में स्क्रिप्ट और आउटपुट दोनों के लिए अनुगामी न्यूलाइन शामिल है, जो है

Windows_NT

ऐसा लगता है कि यह 11 बाइट्स 12 नहीं है
एरिक आउटगोल्फर

@ EriktheOutgolfer इस प्रकार 12 बाइट्स के cmd.exeबाद CRLF को प्रतिध्वनित करेगा Windows_NT
नील

फिर आपको स्पष्ट करना चाहिए?
आउटगॉल्फ को एरिक




7

MATL , 2 बाइट्स

H

एक अनुगामी न्यूलाइन है।

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

व्याख्या

क्लिपबोर्ड एच में 2डिफ़ॉल्ट रूप से नंबर होता है। Hस्टैक के लिए उस सामग्री को धक्का देता है, जो एक अनुगामी न्यूलाइन के साथ अंतर्निहित रूप से प्रदर्शित होता है।


7

चारकोल , 2 बाइट्स

→¹

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

-दाईं ओर एक लंबाई -1 क्षैतिज रेखा और एक नई रेखा प्रिंट करता है ।


मैन चारकोल वास्तव में निफ्टी भाषा है, मुझे इसे कुछ समय सीखना चाहिए
स्काइड्सडेव

7

जेली , 1 बाइट

V

कुछ जेली एक बायर्स - यह एक है - यह बाएं तर्क का मूल्यांकन करता है, जब इनपुट के रूप में कुछ भी प्रदान नहीं किया जाता है, शून्य के लिए चूक जो बदले में शून्य का मूल्यांकन करता है और परिणाम संक्षेप में मुद्रित होता है, ए 0

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

वास्तव में, कोड-पृष्ठ में 256 बाइट्स में केवल 95 हैं जो वर्तमान में एक पूर्ण कार्यक्रम के रूप में चलने पर निर्दिष्ट सीमा के भीतर एक अलग बाइट आउटपुट का उत्पादन नहीं करते हैं ; ये हैं (बाइट क्रम में कोड-पेज वर्ण के रूप में):

¡¢£¦©½¿€ÇÑÞßçıȷñ÷þ"#&',-./0123456789:;?@IMRTVZ\`dmpstxyz{}~°³⁴⁵⁹ƓƈɠḶỌṬḊĖİĿṄȮṖṘẆẊṃọṣṭḃḟḣŀṁṗṡẋż’“

टिप्पणियाँ:

  • अधिकांश 1-बाइट प्रोग्राम में एक 0(शून्य-ऑप्स / लिस्टिंग होती है, जिसमें एक सिंगल जीरो के साथ एक लिस्ट होती है, जिसमें प्रिंट होता है 0), अधिकांश अन्य एक 1( 0=0और इसी तरह) प्रिंट करते हैं

  • एक प्रोग्राम है जो है करता है एक अलग बाइट उपज, लेकिन एक जो विनिर्देश के अनुसार सीमा से बाहर है - यह शून्य-बाइट (डाले पैदा करता 0चरित्र के लिए)

  • एक स्थान बनाता है (एक शाब्दिक)

  • एक लाइन फ़ीड (एक शाब्दिक) का उत्पादन करता है

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


1
मृत लिंक के लिएbyte
Weedoze

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