एक सत्य-मशीन को लागू करें


148

एक सच-मशीन ( इसके साथ आने के लिए क्रेडिट इस आदमी को जाता है ) एक बहुत ही सरल कार्यक्रम है जिसे I / O और भाषा के नियंत्रण प्रवाह को प्रदर्शित करने के लिए डिज़ाइन किया गया है। यहाँ एक सत्य-मशीन क्या करती है:

  • STDIN से एक संख्या (या तो 0 या 1) मिलती है।

  • यदि वह संख्या 0 है, तो 0 का प्रिंट आउट लें और समाप्त करें।

  • यदि वह संख्या 1 है, तो 1 को हमेशा के लिए प्रिंट कर लें।

चुनौती

अपनी पसंद की भाषा में ऊपर वर्णित एक सत्य-मशीन लिखें। सत्य-मशीन को एक पूर्ण प्रोग्राम होना चाहिए जो इन नियमों का पालन करे:

  • STDIN या एक स्वीकार्य विकल्प से इनपुट लें
    • यदि आपकी भाषा एसटीडीआईएन से इनपुट नहीं ले सकती है, तो यह प्रोग्राम में हार्डकोडेड वेरिएबल या उपयुक्त समकक्ष से इनपुट ले सकता है
  • STDOUT या स्वीकार्य विकल्प के लिए आउटपुट होना चाहिए
    • यदि आपकी भाषा वर्णों को आउटपुट करने में असमर्थ है 0या 1, बाइट या अनरी I / O स्वीकार्य है।
  • जब इनपुट होता है 1, तो इसे लगातार प्रिंट करना होगा 1और केवल तभी बंद हो सकता है जब प्रोग्राम को मार दिया जाए या मेमोरी से बाहर चला जाए
  • आउटपुट केवल या 0तो एक या कोई नई रेखा या स्थान नहीं होना चाहिए , या 1प्रत्येक 1एक या कोई नई पंक्ति या स्थान के बाद अनंत s होना चाहिए । आपकी भाषा के दुभाषिया के निरंतर उत्पादन को छोड़कर कोई अन्य आउटपुट उत्पन्न नहीं किया जा सकता है, जिसे दबाया नहीं जा सकता है (जैसे कि ग्रीटिंग, एएनएसआई रंग कोड या इंडेंटेशन)। आपका नया लिंक या रिक्त स्थान का उपयोग सुसंगत होना चाहिए: उदाहरण के लिए, यदि आप 1एक नई पंक्ति के साथ आउटपुट का चुनाव करते हैं, तो उसके बाद सभी के 1पास एक नई पंक्ति होनी चाहिए।

  • अगर और केवल अगर आपकी भाषा संभवतः 0इसके इनपुट पर समाप्त नहीं कर सकती है तो कोड के लिए एक अनंत लूप दर्ज करना स्वीकार्य है जिसमें कुछ भी आउटपुट नहीं है।

चूंकि यह एक कैटलॉग है, इस चुनौती के बाद बनाई गई भाषाओं को प्रतिस्पर्धा करने की अनुमति है। ध्यान दें कि एक दुभाषिया होना चाहिए ताकि सबमिशन का परीक्षण किया जा सके। यह अनुमति दी जाती है (और यहां तक ​​कि प्रोत्साहित किया जाता है) कि इस दुभाषिया को पहले से बिना पढ़ी हुई भाषा के लिए स्वयं लिखें। इसके अलावा, सभी मानक नियमों का पालन ​​करना चाहिए। अधिकांश भाषाओं में प्रस्तुतियाँ बाइट्स में एक उपयुक्त preexisting एन्कोडिंग (आमतौर पर UTF-8) में बनाई जाएंगी।

सूची

इस पोस्ट के निचले हिस्से में स्टैक स्निपेट उत्तर से सूची बनाता है) क) प्रति भाषा में सबसे छोटे समाधान की सूची के रूप में और बी) एक समग्र लीडरबोर्ड के रूप में।

यह सुनिश्चित करने के लिए कि आपका उत्तर दिख रहा है, कृपया अपना उत्तर शीर्षक मार्कडाउन टेम्पलेट का उपयोग करके शीर्षक के साथ शुरू करें:

## Language Name, N bytes

Nआपके सबमिशन का आकार कहां है। यदि आप अपने स्कोर में सुधार करते हैं, तो आप पुराने अंकों को हेडलाइन में रख सकते हैं , उनके माध्यम से स्ट्राइक करके। उदाहरण के लिए:

## Ruby, <s>104</s> <s>101</s> 96 bytes

यदि आप अपने हेडर में कई संख्याओं को शामिल करना चाहते हैं (जैसे कि आपका स्कोर दो फ़ाइलों का योग है या आप दुभाषिया ध्वज दंड को अलग से सूचीबद्ध करना चाहते हैं), तो सुनिश्चित करें कि हेडर में वास्तविक अंक अंतिम संख्या है:

## Perl, 43 + 2 (-p flag) = 45 bytes

आप भाषा के नाम को एक लिंक भी बना सकते हैं जो बाद में स्निपेट में दिखाई देगा:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes


क्या हम मान सकते हैं कि जब मशीन कोड प्रविष्टि के लिए प्रोसेसर लिखित कोड को निष्पादित करता है तो प्रोग्राम रुकता है?
16

3
किसी भी व्यवहार को मानते हुए सभी अमान्य इनपुट के लिए ठीक है?
क्रंचर

3
@ क्रंचर हाँ, केवल इनपुट्स जो आपको प्राप्त करने की उम्मीद करनी चाहिए, वे 0 और 1. हैं
एक

4
कैटलॉग बोर्क है।
Addison Crump

2
कैटलॉग विभिन्न भाषाओं पर विचार करने Bfऔर bfकरने के लिए प्रकट होता है ।
मूविंग डक

जवाबों:


188

हेक्सागोनी , 6 बाइट्स

यह आश्चर्यजनक रूप से मुश्किल था, और मुझे यकीन नहीं है कि यह इष्टतम है ...

<.@!$?

कोड को पैडिंग और अनफ़ॉलो करने के बाद, यह निम्न हेक्स ग्रिड का प्रतिनिधित्व करता है:

यहां छवि विवरण दर्ज करें

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

?इनपुट को पूर्णांक के रूप में पढ़ता है। !इसे वापस प्रिंट करता है। .सिर्फ एक नो-ऑप है। अब ग्रिड का कोना एक शाखा के रूप में कार्य करता है:

यदि इनपुट था 0, तो आईपी लाल पथ के साथ जारी रहेगा, जो बस प्रोग्राम को समाप्त करता है @

यदि इनपुट था 1, तो आईपी ग्रीन पथ पर जारी रहेगा। फिर से, .बस एक नो-ऑप है, लेकिन $बेफुन्ज के ट्रैम्पोलिन के बराबर है: यह अगले निर्देश को छोड़ देता है। लपेटने के बाद, अगला निर्देश होगा ?, लेकिन $निष्पादन के कारण वास्तव में नीले रास्ते पर जारी रहता है, जिसकी !एक और प्रति प्रिंट करने के लिए शुरू होती है 1। यह लूप जिसमें केवल होता !..$है अब अनिश्चित काल तक दोहराया जाता है।

हेक्सागोनी में नियंत्रण प्रवाह का एक अध्ययन ...

मेरा मानना ​​है कि उपरोक्त समाधान इष्टतम है। मैंने एक ब्रूट फ़ॉरेसर लिखा है, जो सभी 6-बाइट हेक्सागोनी कार्यक्रमों की जांच करता है, जिसमें कम से कम एक-एक होता है ?!@(जो आवश्यक होता है; मैंने भी चेक किया है :और विभाजन-बाय-ज़ीर त्रुटि के साथ समाप्त होने के %स्थान पर @, लेकिन यह भी मदद नहीं की)। चेक सभी प्रोग्रामों को प्रिंट करता है जो a) 0इनपुट पर प्रोडक्ट करता है 0और टर्मिनेट और b) कम से कम दो 1एस (और कुछ नहीं) का उत्पादन करता है और प्रोग्राम के पहले 60 टिक्स के भीतर समाप्त नहीं होता है (5-बाइट सॉल्यूशंस के लिए 200 टिक) । मुझे संदेह है कि कोई भी वैध समाधान 200 0या अधिक टिक्कों को सही ढंग से पहले या दूसरे 1को इतने छोटे ग्रिड पर प्रिंट करने के लिए ले जाएगा , इसलिए मुझे नहीं लगता कि मैं किसी भी संभावित समाधान से चूक गया हूं।

खोज में 5 बाइट्स के लिए कोई परिणाम नहीं मिला, लेकिन 6 बाइट्स के लिए 57 परिणाम (उपयोग करते हुए @; अगर हम बाइट्स की समान मात्रा में इस सफाई से हल कर सकते हैं, तो एक त्रुटि के साथ समाप्त करने की कोई आवश्यकता नहीं है)। उन 57 में से केवल 6 झूठे सकारात्मक थे जो वास्तव में केवल दो 1एस मुद्रित करते थे और फिर बिना किसी और मुद्रण के एक अनंत लूप में प्रवेश करते थे। एक समाधान को दो बार सूचीबद्ध किया गया था क्योंकि इसमें दो !कमांड थे। यह ठीक 50 वैध समाधान छोड़ देता है।

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

समग्र नियंत्रण प्रवाह लगभग हमेशा एक ही है: एक नंबर पढ़ा है, इसे प्रिंट। अगर यह 0एक रास्ता मिल गया है @, अगर नहीं के माध्यम से पाशन रखने !जबकि एक किनारे मूल्य के 1। चार उल्लेखनीय अपवाद हैं:

  • एक समाधान (दो में से एक !) 1ग्रिड के माध्यम से प्रति दो पुनरावृत्ति प्रिंट करता है, इसलिए अधिकांश कार्यक्रमों के रूप में दो बार तेजी से मुद्रण होता है। मैंने इसे x2नीचे के साथ चिह्नित किया है ।
  • कुछ समाधान (जिनके पास एक है o) 1एक 111(वर्ण कोड ) के साथ प्रतिस्थापित करते हैं o, इसलिए वे प्रति सेकंड तीन 1 एस मुद्रित करते हैं, जिससे वे अधिकांश कार्यक्रमों के रूप में तीन गुना तेजी से प्रिंट करते हैं। मैंने इन्हें x3नीचे से चिह्नित किया है।
  • दो समाधान संलग्न एक 1प्रत्येक चरण में बढ़त मूल्य के लिए (ताकि 1-> 11-> 111-> ...)। वे बहुत तेजी से प्रिंट करते हैं , लेकिन वे अंततः स्मृति से बाहर निकल जाएंगे। मैंने इन्हें OoMनीचे से चिह्नित किया है।
  • दो समाधान एक बहुत ही तंग लूप में प्रवेश करते हैं जो केवल आगे पीछे उछलता है !, हर दूसरे टिक पर मुद्रण होता है (प्रत्येक 5 वें या इसके बजाय), जो उन्हें थोड़ा तेज (और नट) बनाता है। मैंने इन्हें ><नीचे से चिह्नित किया है।

तो यहाँ पूरा चिड़ियाघर है:

#1                #5                #12                #19
?!/$.@            ?$!>$@            .?!/$@             |!|?$@  # ><
?!/$1@  # OoM     ?$!|$@            =?!/$@
?!/$=@                                                 #20
?!/$\@            #6                #13                $@.?<!
?!/$o@  # x3      ?/!<|@            .?/!$@             $@1?<!  # OoM
?!/$!@  # x2                        =?/!$@             $@=?<!
                  #7                                   $@o?<!  # x3
#2                ?\!<|@            #14
?!>$)@                              \!?__@             #21
?!>$1@            #8                                   _>_!?@
?!>$o@  # x3      ?<!>$@  # ><      #15
?!|$)@                              \_?!$@             #22
?!|$1@            #9                                   <!@.$?
?!|$o@  # x3      ?\$!@$            #16                <!@/$?
                                    \_?!_@             <!@=$?
#3                #10                                  <$@!$?
?!|)$@            ?~#!@)            #17                <.@!$?
?!|1$@            ?~#!@1            $$?\@!             </@!$?
?!|o$@  # x3                                           <=@!$?
                  #11               #18
#4                ?$)\@!            \$?\@!             #23
?_!<@>            ?$1\@!                               <<@]!?
                  ?$o\@!  # x3

निम्नलिखित अधिक प्रतिनिधि समूहों के एक मुट्ठी भर के लिए एक छोटा सा walkthrough है। विशेष रूप से समूह 10 और 23 की जाँच के लायक हैं। अन्य समूहों में कई अन्य दिलचस्प और कभी-कभी जटिल मार्ग हैं, लेकिन मुझे लगता है कि मैंने आपको इसके अंत में काफी ऊब दिया है। किसी के लिए जो वास्तव में हेक्सागोनी सीखना चाहते हैं, ये निश्चित रूप से जांच के लायक हैं, क्योंकि वे दर्पण के और भी अधिक संभावित उपयोग प्रदर्शित करते हैं $

समूह 1

यह मेरे मूल समाधान की तुलना में अधिक विस्तृत नहीं है, लेकिन रास्ते अलग-अलग दिशाओं में चलते हैं। यह एकल कक्ष में सबसे बड़ी संख्या में भिन्नता के लिए भी अनुमति देता है, क्योंकि सही-सबसे नो-ऑप को 5 अलग-अलग कमांडों से बदला जा सकता है जो संरचना को बदलने के बिना अभी भी इसे वैध बनाते हैं:

यहां छवि विवरण दर्ज करें

समूह 2

यह एक काफी दिलचस्प है, क्योंकि यह केवल क्षैतिज रूप से चलता है। को लपेटने के बाद >, आईपी कोने में शाखा को लेते हुए, तुरंत पलट जाती है। यह पूरी तरह से अच्छी तरह से नहीं आरेख है, लेकिन 1हम मामले में पहली पंक्ति को फिर से पीछे ले जाते हैं, लेकिन इस बार पीछे। इसका मतलब यह भी है कि हम ?फिर से दौड़ते हैं, जो अब लौटता है 0(ईओएफ)। )मुद्रण 1एस रखने के लिए यह (वेतन वृद्धि) के साथ तय किया गया है । इसकी भी 5 विविधताएँ हैं, जैसा )भी हो सकता है , 1या हो सकता है :o>|

यहां छवि विवरण दर्ज करें

समूह ३

यह एक पिछले एक के समान दिखता है लेकिन यह नरक के रूप में गड़बड़ है। मारने के |बाद और फिर नीचे या ऊपर की पंक्ति को एक समान करना। लेकिन एक पाश के मामले में, $अब से अधिक छोड़ देता है ) पर दर्पण। इसलिए हम फ़िरोज़ा मार्ग को दाईं ओर का अनुसरण करते हैं, अब वृद्धि को मारें, @इससे पहले कि हम | फिर से चारों ओर लपेटें, और फिर शीर्ष पर हरे रास्ते पर वापस जाएं।

यहां छवि विवरण दर्ज करें

समूह ४

मैंने सोचा कि यह विशेष रूप से निफ्टी था:

यहां छवि विवरण दर्ज करें

_ऊपरी दाएं कोने में दर्पण शुरू में नो-सेशन है, इसलिए हम साथ प्रिंट !और मारा <0पथ अब क्षैतिज दर्पण हिट और समाप्त हो जाता है। 1पथ वास्तव में एक दिलचस्प प्रक्षेपवक्र होती है, जबकि: इसे नीचे विक्षेपित, को लपेटता है !, क्षैतिज दिशा में रीडायरेक्ट कर दिया जाता है और फिर वापस करने के लिए लपेटता ! फिर से । यह फिर इस rhombus आकार में चलती रहती है, प्रति बार दो बार प्रति मुद्रण (हर तीसरे टिक)।

समूह 8

यह वास्तव में तंग मुद्रण लूप के साथ दो समाधानों में से एक है:

यहां छवि विवरण दर्ज करें

<शाखा के रूप में कार्य करता है। दो बार लपेटने के बाद, 0हिट @1दूसरी ओर, पहले स्किप करता है ?, फिर >इसे फिर से भेजता है $, इसलिए यह स्किप है @। फिर आईपी फ़िरोज़ा पथ में लपेटता है, जहां यह ( >और बीच <में किनारे के चारों ओर लपेटकर) के बीच आगे और पीछे उछलता है ।

समूह १०

दो समूहों में से एक जो अन्य अनुदेश बिंदुओं का उपयोग करता है, और यह बिल्कुल सुंदर है। हेक्सागोनी में 6 हैं - प्रत्येक एक अलग कोने से दक्षिणावर्त किनारे से शुरू होता है, लेकिन उनमें से केवल एक ही समय में सक्रिय होता है।

यहां छवि विवरण दर्ज करें

हमेशा की तरह, हम साथ पढ़ते हैं ?। अब ~एकात्मक नकार है: यह 1एक में बदल जाता है -1। अगला, हमने मारा #। यह IPs के बीच स्विच करने का एक तरीका है: यह वर्तमान बढ़त मान modulo 6 लेता है और संबंधित IP पर स्विच करता है (IPs को 0दक्षिणावर्त दिशा से क्रमांकित किया जाता है)। तो अगर इनपुट था 0, तो आईपी बस एक ही रहता है, और सीधे बोरिंग यात्रा करता है !@। लेकिन अगर इनपुट था 1, तो वर्तमान मूल्य -1जो है 5 (mod 6)। तो हम आईपी पर स्विच करते हैं जो बहुत ही सेल (ग्रीन पथ) पर शुरू होता है। अब #नो-ऑप है और ?मेमोरी एज को सेट करता है 0)वेतन वृद्धि तो !प्रिंट 1। अब हम ~इसे सुनिश्चित करने के लिए फिर से हिट करते हैं#अभी भी एक नो-ऑप है (जैसा कि हमें आईपी 1 पर स्विच करने का विरोध किया गया था जो कार्यक्रम को समाप्त कर देगा)। यह दिमाग लगा रहा है कि इस छोटे से कार्यक्रम में सब कुछ एक साथ कैसे फिट बैठता है।

समूह २२

बस ध्यान दें, यह समूह मेरा मूल समाधान है। यह सबसे बड़ा समूह भी होता है, क्योंकि नो-ऑप दो अलग-अलग स्थानों में हो सकता है, और वास्तविक (प्रभावी नो-ऑप) कमांड के लिए कई विकल्प हैं।

समूह २३

यह एक से अधिक IP का उपयोग करने वाला दूसरा समूह है। वास्तव में यह एक 3 अलग-अलग आईपी का उपयोग करता है । शीर्ष दायां कोना थोड़ा गड़बड़ है, लेकिन मैं आपको इसके माध्यम से चलने की कोशिश करूंगा:

यहां छवि विवरण दर्ज करें

तो, आपके द्वारा पहले देखी गई शुरुआत: <उत्तर-पूर्व को विक्षेपित करती है, ?इनपुट पढ़ती है। अब ]आईपी ​​के बीच बदलने का एक और तरीका है: यह अगले आईपी को घड़ी की दिशा में नियंत्रित करता है। इसलिए हम फ़िरोज़ा पथ पर नियंत्रण स्विच करते हैं जो (मुझे पता है कि यह देखना मुश्किल है) दक्षिण-पूर्व में जाने वाले उत्तर-पूर्व कोने में शुरू होता है। यह तुरंत परिलक्षित होता है <ताकि यह उत्तर-पश्चिम की ओर जाते हुए दक्षिण-पूर्व के कोने तक जा पहुंचे। यह हिट भी है ]इसलिए हम अगले आईपी ​​पर स्विच करते हैं । यह पूर्व-कोने में शुरू होने वाला ग्रे मार्ग है, जो दक्षिण-पश्चिम की ओर जा रहा है। यह इनपुट को प्रिंट करता है, फिर नॉर्थ-ईस्ट के कोने में जाता है। <मार्ग को क्षैतिज में दर्शाया गया है, जहां यह दूसरे द्वारा परिलक्षित होता है <। अब दाहिना हाथ<एक शाखा के रूप में कार्य करता है: यदि इनपुट था 0, तो आईपी उत्तर-पूर्व की ओर बढ़ता है, और इसके लिए लपेटता है @। यदि इनपुट था 1, तो आईपी ले जाता है !, लेफ-थंड तक जाता है, <जहां यह परिलक्षित होता है ... अब कोने में, यह वापस से लपेटता है !, दाएं से विक्षेपित हो जाता <है, बाएं से परिलक्षित होता है <और रास्ते शुरू होते हैं ऊपर...

काफी गड़बड़ है, लेकिन एक सुंदर गड़बड़ है। :)


टिमवी के अद्भुत हेक्सागोनीकॉलर के साथ उत्पन्न आरेख ।


55
रुको। बस हो गया।
कॉनर ओ'ब्रायन

6
^ सहमत हुए। इतना अच्छा ...
एल'एंडिया स्ट्रैटन

28
चुप रहो और मेरे ऊपर ले लो!
मेगो

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

5
हाँ ... मेमोरी मॉडल थोड़ा दर्दनाक लग रहा है (लेकिन अभी भी 1 डी टेप से बेहतर है, मुझे लगता है)
जॉन ड्वोरक

144

मोटोरोला MC14500B मशीन कोड, 2 बाइट्स

हेक्स में:

58EC

स्पष्टीकरण:

5  OR the register with input from the data bus
8  Write the register to the data bus
E  Skip next instruction if register is zero
C  Jump

मोटोरोला MC14500B एक 1-बिट माइक्रोकंट्रोलर है; इसमें 1-बिट रजिस्टर और 1-बिट डेटा बस है। चूंकि ओपकोड 4 बिट्स हैं, इसलिए केवल सोलह हैं; उनमें से आधे डेटा बस में रजिस्टर और बिट के बीच एक तार्किक संचालन करते हैं।

कूदने का निर्देश एक कूद झंडा सेट करता है; जब कोई पता नहीं दिया जाता है, तो प्रोग्राम काउंटर को 0. पर सेट करना आम है। यदि इनपुट बिट शून्य था, तो प्रोसेसर कूद नहीं पाएगा। यदि इनपुट बिट 1 था, तो प्रोसेसर शुरू में वापस कूदता है; चूँकि हम ORइनपुट के साथ हैं, इससे कोई फर्क नहीं पड़ता कि इनपुट सिग्नल बाद में क्या है - रजिस्टर तब 1 हमेशा के लिए होगा।

जैसा कि पारंपरिक है, रजिस्टर 0 से शुरू होता है।

डेटा शीट पर या यहां ऑपकोड की एक सूची मिल सकती है


7
2 बाइट्स निश्चित रूप से इस चुनौती के लिए न्यूनतम हैं।
कॉनर ओ'ब्रायन

23
@ C @O'Bʀɪᴇɴ मैं कई घंटों से देख रहा हूं कि क्या यह 1 या 1.5 है, यह देखने के लिए 4-बिट प्रोसेसर के एसोलैंग्स और सूचियों के माध्यम से और एक नहीं मिला है।
3:00 पर lirtosiast

निश्चित रूप से नौकरी के लिए सही उपकरण।
ह्यूगो जिंक

लिंक
बोर्क है

@TheDoctor दोनों लिंक मेरे लिए अच्छा काम
Mego

85

अर्नोल्ड सी, 296 बाइट्स

IT'S SHOWTIME
    HEY CHRISTMAS TREE i    
    YOU SET US UP @NO PROBLEMO
    BECAUSE I'M GOING TO SAY PLEASE i
        STICK AROUND i
            TALK TO THE HAND i
        CHILL
    BULLSHIT
        TALK TO THE HAND i
    YOU HAVE NO RESPECT FOR LOGIC
YOU HAVE BEEN TERMINATED

वास्तव में प्रतिस्पर्धी नहीं है, लेकिन इसके मज़े के लिए। स्टड का समर्थन नहीं करता है, एक शून्य मान के @NO PROBLEMOसाथ बदलें @I LIED@No Problemo1 है।

के साथ चलाएँ (मान लिया गया कि फ़ाइल सत्यमचाइन.नरल्डक है):

wget http://lhartikk.github.io/ArnoldC.jar
java -jar ArnoldC.jar truthmachine.arnoldc
java truthmachine

46
सुंदर। मैं रोया था
एक

10
BECAUSE I'M GOING TO SAY PLEASELOL
एरिक मार्टिनेज

8
ऐसा लगता है कि यह if(i){while(i) print(i);} else {print(i);}निश्चित रूप से ऐसा करने के लिए कम होगा print(i);while(i) print(i);?
lirtosiast

16
यद्यपि BULLSHITकार्यक्रम के मनोरंजन मूल्य में एक महान योगदान है, तकनीकी रूप से यह अनावश्यक है। आप पूरी कारक बन सकते हैं BULLSHITले जाकर शाखा बाहर TALK TO THE HAND iके बाद YOU HAVE NO RESPECT FOR LOGIC
गैबोरश

4
@GaborSch उस पर केवल एक ही उचित प्रतिक्रिया है BULLSHIT;)
caird coinheringaahing

65

Minecraft, 18 बाइट्स (MC संस्करण 15w45a)

मिनीक्राफ्ट स्केच

जैसा कि आप देख सकते हैं, दोहराव कमांड ब्लॉक में एक लीवर निर्देशित है, जिसमें कमांड say 1है। इसके शीर्ष पर एक इनवर्टेड मशाल होने का संकेत है, जो इसमें कमांड के साथ सिंगल-रन कमांड ब्लॉक में शक्ति को निर्देशित करता say 0है।

जब भी स्विच को सत्य की ओर निर्देशित किया जाता है, तो पुनरावर्तक ब्लॉक कोड say 1को अनंत 1s आउटपुट के लिए उपयोग करता है । जब लीवर को असत्य पर पुनर्निर्देशित किया जाता है, तो यह एकल आउटपुट करता है 0

ध्यान दें कि यह [@]डिफ़ॉल्ट रूप से आउटपुट करता है। यदि आप वास्तव में सीधे 1s और शून्य चाहते हैं, तो यह 34 बाइट्स बन जाता है, जहां कमांड ब्लॉक में कोड होते हैं tellraw @a [1]और tellraw @a [0]। यह MC के लिए @ C is O'Bʀɪᴇɴ की सुझाई गई बाइट गिनती का उपयोग कर रहा है जैसा कि मेटा में पाया जा सकता है


28
आपने कोड गोल्फ के लिए एक वीडियो गेम का उपयोग किया। +1
आरके।

11
@RK। यह वास्तव में सरल चुनौतियों के लिए काफी मानक अभ्यास है। कम से कम दो अन्य उपयोगकर्ता हैं जो MC का उपयोग कोड गोल्फिंग भाषा के रूप में करते हैं - खोज बार के साथ प्रयास करें is:answer Minecraft। c:
एडिसन क्रम्प

1
@FlagAsSpam अच्छी तरह से किया। इसके अलावा, एमसी जवाब खोजने के लिए उस टिप के लिए धन्यवाद।
अश्विन गुप्ता

56

बाश + GNU बर्तन, 13

grep 0||yes 1

बाश, ३५

read n;for((;n;));{ echo 1;};echo 0

3
तुम्हें पता है, मैं सोच रहा था कि क्या हाँ के साथ एक समाधान संभव हो सकता है ...
एक स्पेगेटी

2
अच्छा! यही कारण है कि बहुत चालाक है
एक spaghetto

38

रूबी, २०

print while/1/||gets

चेतावनियों से बचने के लिए कमांड लाइन से भागें

ruby -e "print while/1/||gets" <<< 0
ruby -e "print while/1/||gets" <<< 1

स्पष्टीकरण:

कम गोल्फ वाला, यह है

while /1/ || gets
  print
end

जब एक Regexp एक सशर्त में उपयोग किया जाता है, तो यह तब तक गलत तरीके से मूल्यांकन करता है जब तक कि चर $_आबादी नहीं है और पैटर्न से मेल खाता है। लूप के माध्यम से पहली बार, $_खाली है इसलिए हम इसके माध्यम से गिरते हैं gets, जो $_एसटीडीआईएन से पढ़ी गई लाइन का मान सेट करता है । printकोई तर्क प्रिंट के साथ $_। अब हम फिर से सशर्त का मूल्यांकन करते हैं। यदि हम 1 में पढ़ते हैं, तो हम शॉर्ट-सर्किट करते हैं और सिर्फ 1 को फिर से प्रिंट करते हैं, और इसी तरह हमेशा के लिए। अन्यथा, हम इसके माध्यम से गिरते हैं gets, लेकिन चूंकि इनपुट की कोई दूसरी पंक्ति नहीं है, getsशून्य लौटाता है, इसलिए लूप समाप्त होता है।


18
यह अच्छा है जब तुच्छ कार्य अभी भी "सामान्य" भाषाओं में भी माइंडब्लोइंग समाधानों की अनुमति देते हैं। :)
मार्टिन एंडर

||getsभाग शांत और सभी है, लेकिन आप अभी ऐसा नहीं कर सकते gets;print while/1/एक बाइट और बचाने के?
दानियोरो २ d

नहीं, तो यह 0 को बिल्कुल भी प्रिंट नहीं करता है।
हिस्टोक्रैट

37

Microscript, 3 बाइट्स

i{p

सबसे छोटा मैं जानता हूं।

स्पष्टीकरण:

i  Takes numeric input and puts it in register 1
{  while register 1 is truthy
  p  Print the contents of register 1

माइक्रोसेप्ट में समाप्ति के बाद रजिस्टर 1 का अंतर्निहित मुद्रण होता है, यही कारण है कि एक 0बार एक इनपुट प्रिंट हो जाता है।


@quartata मैं आपसे मेल खाता हूं: D
Conor O'Brien

@ C @O'Bʀɪᴇɴ: O
एक

2
मैं गंभीरता से सोच रहा हूं कि क्या आपने पहले प्रश्न लिखा है, या उत्तर ...
जॉन ड्वोरक

1
प्रश्न। मैं सिर्फ यह पोस्ट करना चाहता था क्योंकि यह सबसे छोटा था जो मैं प्रश्न लिखते समय आया था। यह एक कैटलॉग है इसलिए कोई वास्तविक विजेता नहीं हैं।
एक स्पेगेटो

36

ट्यूरिंग मशीन कोड, 32 बाइट्स

नियम तालिका सिंटैक्स का उपयोग यहां पाया गया।

0 0 0 * halt
0 1 1 r 1
1 _ 1 r 1

मुझे वास्तव में पसंद है। +1
एक स्पेगेटो

मुझे पता था कि किसी ने पहले ही यह पोस्ट कर दिया होगा!
YoYoYonnY

25

जावास्क्रिप्ट, 28 बाइट्स

छोरों के लिए अक्सर छोरों की तुलना में कम होते हैं।

alert(x)रिटर्न undefined, जो झूठा है, इसलिए बिटवाइज़ या ऑपरेटर, |उसे कास्ट करता है 0। इस प्रकार, यदि xहै , तो "0"एक बार सतर्क रहें, अन्यथा लूपिंग रखें। इस उत्तर कीalert तरह STDOUT के लिए उपयोग करता है ।

for(x=prompt();alert(x)|x;);

गोली मारो, तुम मुझे इसके लिए हरा दो। मैं वास्तव में यह पोस्ट करने वाला था! :) जीजी
डोमिनोज़

वाह, यह मेरी तुलना में एक अच्छा सा चालाक है :) एक +1 है!
ETHproductions

आपको अनुगामी अर्धविराम की आवश्यकता नहीं है।
कॉनर ओ'ब्रायन 21

@ C @O'Bʀɪᴇɴ आपने किस ब्राउज़र का उपयोग किया? मैंने इसे फ़ायरफ़ॉक्स और क्रोम पर परीक्षण किया और मुझे SyntaxErrorइसके बिना मिलता है ।
intrepidcoder

@intrepidcoder ओह, क्षमा करें, मेरा बुरा। मेरा मन "अनुगामी अर्धविराम बेकार हैं" मोड में था। ^ ^ "
कॉनर ओ'ब्रायन

24

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

a=input()
while 1:print a;1/a

यह एक विभाजन त्रुटि के साथ समाप्त होता है 0, जिसे डिफ़ॉल्ट रूप से अनुमति दी जाती है


STDERR आउटपुट ठीक है। उत्तर> <> इसका भी उपयोग करता है।
एक स्पेगेटो

यह शानदार है ^ _ ^
एब्सडेक्सटर

एक काम प्रिंट करते समय करना चाहेंगे? क्षमा करें, मैं अजगर को नहीं जानता।
रोहन झुनझुनवाला

1
@ रोहन झुनझुनवाला 0 के लिए, यह कुछ भी प्रिंट नहीं करेगा, लेकिन इसे एक बार प्रिंट करना चाहिए।
1

1
@xnor ओह, मेरा बुरा।
रोहन झुनझुनवाला

20

ब्रेनफक, 41 36 31 30 बाइट्स

इनपुट के बाद एक बार प्रिंटिंग करके और एथन और user46915 की मदद से छोटा किया गया।

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

पिछला संस्करण: इनपुट से 48 घटाएं, और यदि यह शून्य नहीं है, तो एएससीआईआई को 1हमेशा के लिए प्रिंट करने के लिए 1 से 48 जोड़ें , अन्यथा प्रिंट करें 0

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

मैंने इसे यहां चलाया , लेकिन बफर आउटपुट के कारण, आप कोई भी आउटपुट नहीं देख सकते क्योंकि प्रोग्राम कभी भी समाप्त नहीं होता है 1

संपादित करें: मैं 0इनपुट पर प्रिंट करना भूल गया था 0। अब तय हो गया। मुझे >.<अंत में चेहरे पसंद हैं ।


1
@ThomasKwa मैं अनुमान नहीं लगा रहा हूं, लेकिन मुझे यकीन नहीं है क्योंकि मैं विशेष रूप से modulo के लिए एक एल्गोरिथ्म नहीं देखता हूं। Divmod एल्गोरिथ्म थोड़ा लंबा है।
mbomb007

2
आप कोड के टुकड़ों को एक साथ थोड़ा बेहतर तरीके से विलय करके इसे थोड़ा और बेहतर बना सकते हैं और सीधे एक अलग "48" रजिस्टर के बजाय अपने इनपुट रजिस्टर का उपयोग कर सकते हैं:,.[>+>+<<-]-[>-<-----]>+++[>.<]
Ethan

मॉड 2 के साथ एक समाधान का प्रयास किया। निश्चित रूप से ऐसा लगता है कि 48 घटाना जाने का सही तरीका है। ,.[->+>+<<]>>[->[>-<[-]]>+[<+>-]<<]>[<<.>>]
कार्डबोर्ड_बॉक्स

1
@ यह डिफ़ॉल्ट है और आमतौर पर माना जाता है। अगर मैंने एक और कार्यान्वयन किया होता, तो मैंने ऐसा कहा होता।
mbomb007

1
आप घटाव के संयोजन और एक साथ कॉपी करके एक और बाइट प्राप्त कर सकते हैं:,.+++[->>+<-----<]>>---<-[>.<]
user46915

19

पीट, 27 18 16 कोडल

(कोडेल पिक्सेल के लिए एक फैंसी नाम है जिसका उपयोग भ्रम से बचने के लिए किया जाता है जब एक छवि को देखने के लिए बढ़ाया जाता है। मैंने बाइट्स के बजाय कोडल्स को गिना क्योंकि चित्र स्क्रिप्ट के रूप में सहेजे जाते हैं, इसलिए भौतिक आकार भिन्न हो सकता है। मुझे लगता है कि एक आदर्श फ़ाइल प्रारूप है जो सहेजेगा। जितना संभव हो सके उतनी कुशलता से 11 बाइट्स लेंगे। व्यवहार में, मेरी पैलेट डेटा के साथ मेरी छोटी जिफ़ फ़ाइल 62 बाइट्स है। मुझे बताएं कि क्या मुझे कोडेल राशि के बजाय मेरी प्रविष्टि के आकार के रूप में इसका उपयोग करना चाहिए।)

मूल छवि: छोटे संस्करण

बढ़े: बढ़े हुए संस्करण

पीट में, दो रंगों के बीच का अंतर यह निर्धारित करता है कि कौन सी कमांड चलती है, इसलिए एक ही रंग को दो बार देखने का मतलब यह नहीं है कि यह एक ही क्रिया करता है। निष्पादन शीर्ष-बाएं कोडेल में शुरू होता है। फिर यह क्षैतिज रूप से चलता है, निम्नलिखित प्रदर्शन करता है:

  1. एक संख्या पढ़ें और इसे स्टैक पर रखें
  2. ढेर के ऊपर डुप्लिकेट
  3. पॉप और स्टैक के शीर्ष पर आउटपुट
  4. स्टैक के शीर्ष पर पॉप करें और उस समय की संख्या को दक्षिणावर्त घुमाएं।

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

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

अनपेक्षित मान:
यदि उपयोगकर्ता कोई अन्य संख्या लिखता है, तो वह अभी भी मुद्रित होगी, तो कर्सर मूल्य के आधार पर कम या अधिक बार घूमेगा।

  • 4 या 0 से अधिक: निष्पादन क्षैतिज रूप से जारी रहता है और समाप्त होता है।
  • 3 में से कई: चूंकि ऊपर जाना असंभव है, कर्सर तुरंत दक्षिणावर्त घूमता है और क्षैतिज रूप से जारी रहता है, फिर समाप्त होता है।
  • 2 के कई और 4 के एक से अधिक नहीं: कर्सर घूमता है और बाईं ओर बढ़ना शुरू करता है। सौभाग्य से, यह सब ऑपरेशन का एक गुच्छा है जो प्रोग्राम प्रवाह को प्रभावित नहीं करता है और स्टैक को खाली करता है। जब एक ऑपरेशन नहीं किया जा सकता है क्योंकि स्टैक खाली है, तो इसे बस अनदेखा कर दिया जाता है। जब यह शीर्ष बाएं कोने से टकराता है, तो कर्सर कहीं और नहीं जाता है लेकिन फिर से दाईं ओर, प्रभावी रूप से प्रोग्राम को पुनरारंभ करता है।
  • अन्य मान: कर्सर नीचे जाता है जैसे कि यह 1 के साथ होगा, जो इसे 1 प्रिंट करता है। यदि इनपुट 5 है, तो आउटपुट होगा5111111111111...

कोई भी गैर-पूर्णांक मान प्रोग्राम को समाप्त कर देगा। निष्पादन सामान्य रूप से जारी रहेगा, लेकिन स्टैक में कुछ भी नहीं होने के कारण सभी कार्यों को अनदेखा कर दिया जाएगा। तो एक तरह से, प्रोग्राम कभी भी क्रैश नहीं होता है - यह या तो सामान्य रूप से बंद हो जाता है या हमेशा के लिए बंद हो जाता है।


PietDev के अनुकूल संस्करण

PietDev (एक बहुत ही मूल ऑनलाइन Piet IDE) को सफेद कोडेल से परेशानी होती है इसलिए मैंने एक नया संस्करण बनाया जो मैन्युअल रूप से उचित सफेद कोडेल स्वचालित घुमाव पर निर्भर होने के बजाय वापस घूमता है। और मुझे एक नए रंग का उपयोग करने की भी आवश्यकता नहीं थी! यदि आप इसके साथ परीक्षण करना चाहते हैं, तो सुनिश्चित करें कि आप कोड के चारों ओर एक काली सीमा खींचते हैं क्योंकि PietDev कस्टम प्रोग्राम आकारों का समर्थन नहीं करता है।

छोटे संस्करण

बढ़े हुए संस्करण


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

पहले संस्करण ने स्टैक पर 1 पीछे नहीं धकेल दिया और इसके बजाय पहले के दोहराव निर्देश पर वापस लौटा दिया। इसमें सजावटी बेकार कोडेल भी थे।

टिनी पैटर्न जो वास्तव में एक पीट कोड है

बढ़े हुए संस्करण

तब मुझे खाली लाइन को हटाने के लिए स्टैक पर 1 पुश करने का विचार था। यह अजीब है कि मैंने अपने सजावटी कोडेल के लिए इसे कैसे सोचा।

छोटे संस्करण

बड़ा संस्करण

तब मुझे एहसास हुआ कि मेरे पास एक बाहरी सामान था जिसे अब ज़रूरत नहीं थी, और मैंने छवि में पैलेट डेटा को बचाने के लिए रंगों की संख्या कम कर दी। मुझे एकल सजावटी कोडेल से भी छुटकारा मिला क्योंकि मुझे नहीं पता।


7
मैंने कभी भी कोड्स के अलावा किसी अन्य चीज़ में स्कोर किए गए पीट के उत्तर को नहीं देखा है, लेकिन मुझे लगता है कि इष्टतम बाइट की गिनती भी शामिल करने के लिए दिलचस्प है :)
भूमिगत

1
20 अलग-अलग कोडेल मूल्य हैं, जिसका अर्थ है कि आपको तीन बिट्स को 13 बिट्स में पैक करने में सक्षम होना चाहिए, फिर 13 बाइट्स में आठ ट्रिपल प्रति 2.6 कोडल प्रति बाइट घनत्व के लिए। लेकिन किसी को पहले उस भाषा को परिभाषित करना होगा। मैं डीपीपीआई नाम का सुझाव देता हूं = घनी पैक्ड पीट।
जॉन ड्वोरक

1
@JDDvorak मैंने लाइन ब्रेक के लिए एक विशेष जोड़ने के लिए 21 मानों की गणना की, और एक बार जब आप पहली पंक्ति को तोड़ देते हैं तो पार्सर अनुमान लगा सकता है कि अन्य कहां होना चाहिए। लेकिन मैं जहाँ तक कोडेक्स को ट्रिपल में संयोजित करने के लिए नहीं गया था, जो कि 5 बिट प्रति कोडेल को बर्बाद करने की तुलना में बहुत अधिक समझ में आता है। चालाक।
डोमिनोज़

1
बस बाइट्स के पहले जोड़े के रूप में आयाम जोड़ें। आपको एक अतिरिक्त प्रतीक की आवश्यकता नहीं है।
जॉन ड्वोरक

1
@ हर कोई जो इसे आज़माना चाहता है: PietDev के साथ इस समाधान की कोशिश न करें क्योंकि PietDev केवल एक ही प्रिंट करता है और समाप्त करता है। लेकिन समाधान ठीक से काम करता है।
ML

19

Pyth, 4 3 2

Wp

नहीं है एक नहीं! अनुगामी स्थान (धन्यवाद isaac :))। लूप को संकलित करने के लिए जगह की आवश्यकता होती है, लेकिन पाइथ को अपडेट किया गया है। आम तौर पर यह इसका उपयोग करने में अयोग्य होगा, लेकिन चूंकि यह एक कैटलॉग है, इसलिए इसे वैध होना चाहिए।

स्पष्टीकरण:

Wp        : implicit Q = eval(input)
W         : while
 p        : print and return the value of Q, to be evaluated as the while condition
          : Functions without enough arguments automatically use Q now
          : do nothing in the body of the while loop

5
मुझे इस जवाब passसे प्रेरित होकर पाइथ में निहित होना पड़ा। अंतरिक्ष अब अनावश्यक है। pyth.herokuapp.com/?code=WpQ&input=0&debug=0
isaacg

52
चार पार अभी भी चार की तरह लग रहा है।
कॉनर ओ'ब्रायन

1
एह, मैं बस इतना सब समय पर सब कुछ हावी अजगर की ऊब हो रहा हूँ :(। LOL।
अश्विन गुप्ता

1
@ अश्विनगुप्ता ने मेरी भाषा को तकनीकी रूप से हरा दिया, इसलिए यह पूरी तरह से हावी नहीं है :)
साइओस

@ जय हो! बहुत बढ़िया! मैंने विश्वास दिलाया कि कुछ पाइथ लोल को हरा सकता है।
अश्विन गुप्ता

16

चिप , 6 बाइट्स

e*faAs

चिप एक 2D भाषा है जो एक एकीकृत सर्किट की तरह थोड़ा व्यवहार करती है। यह एक बार में इनपुट, एक बाइट लेता है, और व्यक्तिगत इनपुट तत्वों को बिट्स को तोड़ता है। आउटपुट आउटपुट तत्वों के मूल्यों को एक साथ बाइट्स में वापस सिलाई करता है।

चलो इसे तोड़ दो:

*एक स्रोत संकेत है, यह सभी आसन्न तत्वों के लिए एक सही मूल्य भेजेगा। eऔर fआउटपुट के पांचवें और छठे बिट के अनुरूप है। तो, e*fबाइनरी का उत्पादन करता है 00110000, जो कि ASCII char "0" है।

अब, Aइनपुट aका पहला बिट है और आउटपुट का पहला बिट है, इसलिए aAउस बिट को इनपुट से आउटपुट में कॉपी करता है। इसलिए, जब संयुक्त किया जाता है e*f, तो ASCII "0" का एक इनपुट "0", और "1" "1" का उत्पादन करता है। (दोनों के बीच कोई बातचीत नहीं है fऔर aन ही कोई संकेत उत्पन्न करता है।)

sअंत पर, जब एक सच्चे संकेत से सक्रिय, अगले बाइट के लिए आगे बढ़ रहा है, जिसका अर्थ है कि पूरी बात एक ही इनपुट के साथ फिर से चलेंगे से इनपुट नहीं कर पाएगा।

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

यदि मान 0x0 और 0x1 का उपयोग आउटपुट के लिए किया जाता है, तो ASCII के बजाय, हम e*fभाग को समाप्त कर सकते हैं , जिसके परिणामस्वरूप केवल बाइट्स हैं :

aAs

यदि शून्य को स्वयं को समाप्त करना चाहिए, तो स्टड को बंद करने की अपेक्षा करने के बजाय, हम निम्नलिखित प्राप्त करते हैं, जो पहले बाइट के साथ इन्वर्ट करता है ~, और परिणाम को पास करता है t, जो प्रोग्राम को समाप्त करता है ( 10 बाइट्स ):

aA~te*f
 s

( tयह भी कोई संकेत नहीं पैदा करता है, इसलिए tऔर के बीच कोई बातचीत नहीं है e।)


2
अच्छा जवाब! चूंकि यह एक कैटलॉग चुनौती है, इसलिए इसे गैर-प्रतिस्पर्धा के रूप में चिह्नित करने की आवश्यकता नहीं है, इसलिए मैंने आपके लिए उस बिट को हटा दिया है। PPCG में आपका स्वागत है!
मेघ

4
मैंने TIO में चिप जोड़ने की स्वतंत्रता ली। इसे ऑनलाइन आज़माएं!
डेनिस

@ डेनिस, आपके लिए सवाल: मैं अपने स्रोत को अपडेट करने के लिए टीआईओ कैसे प्राप्त करूंगा? पिछले हफ्ते मैंने चिप दुभाषिया में एक बग को तय किया, लेकिन इसने टीआईओ में परिवर्तन का प्रचार नहीं किया। क्या यह कुछ है जो मुझे किसी को मेरे लिए करने की आवश्यकता है?
फेल्क्स

मैंने चिप खींची है। यदि आपको कुछ अपडेट करने की आवश्यकता है, तो बस talk.tryitonline.net में एक संदेश छोड़ दें ।
डेनिस

14

ब्रेनबुल , 5 बाइट्स

,.[.]

ब्रेनबुल ब्रेनफक है, लेकिन यह केवल बिट्स पर काम करता है, और आई / ओ के माध्यम से 0और 1पात्रों को करता है।


3
मुझे पता था कि एक बीएफ व्युत्पन्न होना चाहिए जहां यह संभवत: किया जा सकता है।
एक स्पेगेटो

14
मुझे लगता है कि "बूलफक" इसके लिए एक बेहतर नाम हो सकता है, लेकिन अच्छी तरह से परवाह किए बिना।
जेम्स मर्फी

2
@JamesMurphy ऐसा लगता है कि पहले से मौजूद है: esolangs.org/wiki/Boolfuck
DLeh

13

लोकोडे, 119 बाइट्स

GIMMEH n
n R SUM OF n AN 0
BOTH SAEM n AN 0, O RLY?
YA RLY
 VISIBLE 0
NO WAI
 IM IN UR l
  VISIBLE 1
 IM OUTTA UR l
OIC

Ungolfed:

HAI

BTW, Read n as a string from STDIN and convert to an integer
GIMMEH n
n R SUM OF n AN 0

BTW, Test n for equality with 0
BOTH SAEM n AN 0, O RLY?
YA RLY
    BTW, Write 0 to STDOUT and exit
    VISIBLE 0
NO WAI
    BTW, Loop forever, printing 1
    IM IN YR l
        VISIBLE 1
    IM OUTTA YR l
OIC

KTHXBYE

1. आप किस दुभाषिया का उपयोग कर रहे हैं? 2. क्या आप MAEK n A NUMBRकास्ट कर सकते हैं ? 3. क्या आप DIFFRINTइसके बजाय BOTH SAEMसशर्त का उपयोग और स्विच कर सकते हैं?
lirtosiast

@ThomasKwa मैं LOLCOFFEE का उपयोग कर रहा था, जो repl.it पर है। (जो इस समय कम होता दिखाई दे रहा है, इसलिए मैं आपके सुझावों का परीक्षण एक बार फिर से करूंगा।)
एलेक्स ए।

O RLY?बूलियन के लिए डाली नहीं है ?
लीक

@LeakyNun नहीं ...? O RLY?एक उपसर्ग की तरह है if
एलेक्स ए।

12

सी, 37 बाइट्स

एक अलग सी में यह कैसे करना है पर ले लो।

main(c){for(gets(&c);putchar(c)&1;);}

cएक करने के लिए डिफ़ॉल्ट intमान 1 के gets(&c)से एक स्ट्रिंग हो जाता है stdinयहाँ का मूल्य clobbering, c, hackishly के बाद से cएक नहीं है char*putchar(c)के मूल्य को प्रिंट करता cहै stdout, और रिटर्न करता है c। चूंकि '0'48 है और '1'ASCII में 49 है, इसलिए हम &1यह निर्धारित करने के लिए अंतिम बिट ( ) का उपयोग कर सकते हैं । यदि यह है '0', तो लूप टूट जाता है। अन्यथा, यह हमेशा के लिए चला जाता है।

संकलन (एक चेतावनी के बारे में gets) और gcc-4.8लिनक्स पर चलता है।


2
संभवत: यह केवल छोटे-एंडियन आर्किटेक्चर पर काम करता है।
नील

@ मैं ऐसा मानूँगा।
कोबरा

@ नील एंडियननेस केवल मल्टीबाइट मूल्यों में बाइट क्रम को प्रभावित करता है।
लीजनमॉमल

1
@ LegionMammal978 cएक int, जो एक मल्टीबाइट मान है, और एक बड़े-एंडियन आर्किटेक्चर पर चूक करता है , getsगलत बाइट सेट करेगा।
नील

11

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

 ?+
@!:

भूलभुलैया एक 2 डी स्टैक-आधारित भाषा है जहां नियंत्रण प्रवाह स्टैक के शीर्ष तत्व के संकेत पर निर्भर करता है, हर निर्देश के बाद जांच की जाती है। निष्पादन शीर्ष पंक्ति पर पहले मान्य निर्देश से सही चलना शुरू करता है, जो यहाँ है ?

प्रासंगिक निर्देश हैं:

?      Input integer
+      Add top two elements (Labyrinth's stack has infinite 0s on the bottom)
:      Duplicate top element
!      Output as number
@      Terminate program

यदि इनपुट 0 है, तो IP इनपुट को पढ़ता है ?, स्टैक के शीर्ष दो को जोड़ता है ( 0 + 0 = 0), फिर डुप्लिकेट करता है :और आउटपुट !करता है। 0. हम प्रोग्राम में एकमात्र जंक्शन का सामना करते हैं, और यह निर्धारित करने के लिए स्टैक के शीर्ष की जांच करना है। कहाँ जाना है। चूंकि शीर्ष 0 है, हम आगे बढ़ते हैं और समाप्त होते हैं @

दूसरी ओर, यदि इनपुट 1 है, तो हम जंक्शन पर पहुंचने से पहले पहले की तरह ही निर्देश देते हैं (लेकिन 1 को आउटपुट करते हैं) !। अब स्टैक का शीर्ष सकारात्मक है, जिससे हम सही में बदल जाते हैं ?। EOF Labyrinth 0 धक्का, तो हम करते हैं पर 0 + 1 = 1पर +, नकल :, और आउटपुट !। एक बार फिर हमारे पास स्टैक के शीर्ष पर 1 है और लूप जारी है।

एक बोनस के लिए, यहां @ MartinBüttner का 7 बाइट समाधान है, जो समान रूप से संचालित होता है:

?+!@
1!

ध्यान दें कि, अधिकांश भाषाओं के विपरीत, 1वास्तव nमें स्टैक से बाहर निकलता है और धक्का देता है n*10 + 1, जिससे बड़ी संख्या में इमारत आसान हो जाती है। हालाँकि, चूंकि उस बिंदु पर स्टैक का शीर्ष खाली है, इसलिए यह केवल 1 पुश करने से अलग नहीं है।


10

> <> , 7 बाइट्स

i2%:n:,

यह इस तथ्य का उपयोग करता है कि> <> ईओएफ पर -1 धक्का देता है, जो कि 1 मॉड 2 है। यह समाप्ति के लिए 0 से विभाजित का भी उपयोग करता है (जो स्पष्ट रूप से ठीक है क्योंकि आम सहमति यह है कि एसटीडीआरआर आउटपुट को अनदेखा किया गया है)।

संदर्भ के लिए, त्रुटियों के बिना सफाई से बाहर निकलना एक अतिरिक्त बाइट है:

i2%:n?!;

10

एपीएल, 6 बाइट्स

→⎕←⍣⍲⎕

स्पष्टीकरण:

     ⎕ Read the input, then
 ⎕←    write it out
   ⍣   repeatedly
    ⍲  until NAND of it with itself becomes true.
→      Branch to zero to avoid printing the result again.

1
क्या दूसरे और अंतिम पात्रों को अलग-अलग दिखना चाहिए? क्योंकि वे मेरे लिए नहीं हैं।
जॉन ड्वोरक

@JDDvorak नहीं, वे एक ही हैं।
एलेक्स ए।

1
ठीक है, अब मैं मोबाइल और सब कुछ लेकिन दो तीर पर इसे देख रहा हूँ :-D मेरे लिए एक ही लग रहा है
जॉन ड्वोरक

10

ब्रायन और चक , 21 बाइट्स

,}<-{-?<SOH>_{+?
_>+{?<.p

यहाँ, <SOH>इसी नियंत्रण वर्ण (0x01) के साथ प्रतिस्थापित किया जाना चाहिए।

व्याख्या

मूल विचार pचक के अंत में इनपुट (48 या 49) के वर्ण कोड को घटाना है , जो या तो एक ?(जो एक मान्य कमांड है) या एक देगा@ जो एक नो-ऑप है।

,चक के पहले सेल में इनपुट चरित्र को पढ़ता है (साथ चिह्नित _)। हम 0कुछ और बदलाव करते हुए इस मूल्य को एक लूप में कम करना चाहते हैं:

}<इसे ले जाता है pऔर -इसे घटाता है। फिर {इनपुट सेल -में वृद्धि के साथ वापस आता है। जब तक यह शून्य नहीं होता, तब तक ?चक को नियंत्रण देता है। अब >ब्रायन के टेप हेड को एक सेल को दाईं ओर (जो कि इनिशियलाइज़ किया गया है 1) और +इन्क्रीमेंट्स में ले जाता है। फिर हम लूप को रीसेट करते हैं{?

समय चक पर प्रथम कक्ष हिट करके 0, <SOH>सेल चरित्र के लिए वृद्धि की जाती किया गया होगा हम stdin से पढ़ा है और pहो जाएगा ?इनपुट के लिए 1या @निवेश के लिए0

अब ?किसी भी अधिक नियंत्रण स्विच नहीं करता है। 0या 1बाद यह एक नहीं सेशन, के रूप में अशक्त-बाइट है (का प्रतिनिधित्व करती है _)। यह सुनिश्चित करने के लिए कि यह सकारात्मक है, {चक के पहले सेल और +वेतन वृद्धि पर वापस जाता है? हाथ चक पर नियंत्रण करते हैं।

यह समय >+ब्रायन के प्रारंभिक टेप के अंत के बाद सेल में वृद्धि करता है। वह सेल कचरा है, लेकिन हम उसका उपयोग कभी नहीं करेंगे। अब {ब्रायन टेप के सामने सभी तरह से स्कैन नहीं करता है, लेकिन केवल करने के लिए _। इसलिए ?एक नो-ऑप है क्योंकि वर्तमान सेल शून्य है। फिर <.एक को बाईं ओर (इनपुट चरित्र की प्रतिलिपि) ले जाता है और प्रिंट करता है।

अंत में, हम मुठभेड़ ?या @। यदि इनपुट था 0और यह सेल है तो @यह नो-ऑप है और प्रोग्राम समाप्त हो गया। लेकिन अगर इनपुट था 1और यह सेल ?हम ब्रायन को सौंप {+?रहे हैं, जो चक पर लूप को रीसेट कर देगा, और अब हम 1हमेशा के लिए प्रिंट कर रहे हैं (ब्रायन के टेप के अंत में सेल में पूर्णांक तब तक मेमोरी में फिट नहीं होता है अधिक, मुझे लगता है ...)।

बोनस

Sp3000 और मैं कई दिनों से इसे दूर कर रहे हैं। हमने लगभग 40 बाइट्स शुरू किए और दो अलग-अलग स्थानों पर पहुंचे, लेकिन 26 बाइट्स में समाधान बांधा। केवल जब मैंने अपने लिए स्पष्टीकरण लिखना शुरू किया, तो उपरोक्त 21-बाइट समाधान मेरे पास हुआ। बी एंड सी में एक दूसरे को कुछ गोल्फिंग गुर सिखाने और विचारों को फेंकने के लिए Sp को बहुत धन्यवाद। :)

यह उसका 26 बाइट समाधान है:

>,----{?{>1?0
#I<?_}<.<<<?

और यह मेरा है:

,{>-<-?_0+?_1{<?
_®{?_{>.?

कहाँ ®174 मूल्य के साथ एक बाइट है (उदाहरण के लिए आईएसओ 8859-1 के रूप में फ़ाइल को सहेजें)।

कोर खान में 21-बाइट समाधान के समान काम करता है, जिसमें इनपुट के लिए और (नो-ऑप) इनपुट के लिए ®बन जाता है , लेकिन निष्पादन बहुत कम सुरुचिपूर्ण है।}1~0

उसका समाधान काफी साफ-सुथरा है कि स्रोत कोड ASCII-only है और इसे इनपुट को संसाधित करने के लिए लूप की आवश्यकता नहीं है। इसके बजाय, ----बदल जाता है 1में -और 0में ,(चक के लिए कोई-op)। इसके -बाद ?ब्रायन के टेप पर पहले को बदल दिया जाएगा >, जिससे 1-केस के लिए अलग-अलग कंट्रोल फ्लो बन जाएगा।


10

बिटवाइज़ साइक्लिक टैग , 3 बिट्स या <1 बाइट

बिटवाइज़ साइक्लिक टैग वहाँ की सबसे सरल ट्यूरिंग-पूर्ण भाषाओं में से एक है। यह दो बिटस्ट्रिंग्स, प्रोग्राम और डेटा के साथ काम करता है । कार्यक्रम के बिट्स को चक्रीय रूप से पढ़ा जाता है और निम्नानुसार व्याख्या की जाती है:

  • 0: पहला डेटा बिट हटाएं (और आउटपुट में, कार्यान्वयन में इसे आउटपुट करें)।
  • 1x: यदि पहला डेटा बिट है 1, xतो डेटा के अंत में ( 0या तो 1) का प्रतिनिधित्व करें। (यदि पहला डेटा बिट है 0, तो कुछ भी न करें।)

प्रोग्राम तब तक चलता है जब तक डेटा स्ट्रिंग खाली न हो।

सत्य-मशीन

110

जब डेटा स्ट्रिंग के लिए सेट किया जाता है 0:

  • 11कुछ भी नहीं जोड़ता है क्योंकि पहला डेटा बिट नहीं है 1
  • 0हटाता है / आउटपुट 0
  • डेटा स्ट्रिंग अब खाली है और प्रोग्राम रुक जाता है।

जब डेटा स्ट्रिंग के लिए सेट किया जाता है 1:

  • 11append a 1
  • 0हटाता है / आउटपुट 1
  • डेटा स्ट्रिंग वापस सिंगल है 1और प्रोग्राम वापस वहीं है जहां से शुरू हुआ था, इसलिए हम हमेशा के लिए लूप करते हैं।

9

GNU सेड, १०

:;/1/{p;b}

व्याख्या

  • : एक अनाम लेबल परिभाषित करें
  • /1/यदि इनपुट रेगेक्स से मेल खाता है 1, तो
  • p पैटर्न स्पेस प्रिंट करें (यानी 1)
  • b और अनाम लेबल पर वापस जाएं (हमेशा के लिए)
  • यदि इनपुट 1 (यानी 0) नहीं था, तो पैटर्न स्पेस अनमॉडिफाइड प्रिंट होता है और प्रोग्राम समाप्त हो जाता है।

कुल 9 बाइट्स के लिए 1 वर्ण का उपयोग करके :;p;/1/bऔर n फ्लैग को शेव करें । चूंकि sed -fस्क्रिप्ट फ़ाइल को चलाने के लिए वैसे भी उपयोग किया जाता है, अतिरिक्त फ्लैग को जोड़ने के लिए 2 बाइट्स की आवश्यकता नहीं होती है।
शीशमौरा

9

गंभीरता से , 4 3 बाइट्स

क्रॉस-आउट 4 अभी भी 4 :( है

,W■

,STDIN से मान पढ़ता है। Wएक लूप शुरू होता है जो शरीर के साथ ढेर के शीर्ष पर मूल्य सत्य है पॉपिंग के बिना शीर्ष स्टैक तत्व को प्रिंट करता है। EOF पर लूप को स्पष्ट रूप से बंद कर दिया गया है।

के इनपुट पर 0, लूप कभी भी निष्पादित नहीं होता है (क्योंकि 0फाल्सी है), और प्रोग्राम ईओएफ पर समाप्त होता है, स्वचालित रूप से स्टैक पर प्रत्येक मूल्य को पॉपिंग और प्रिंट करता है। के इनपुट पर 1(या कि नहीं है किसी भी मूल्य 0, ""या []), पाश असीम चलाता है।

में वास्तव में , प्रमुख ,की जरूरत नहीं है (अंतर्निहित इनपुट के लिए धन्यवाद), स्कोर 2 बाइट्स करने के लिए नीचे लाने के।


8

थ्यू, 34 बाइट्स

1::=12
2::=~1
0::=~0
@::=:::
::=
@

स्पष्टीकरण:

1::=12 प्रतिस्थापन "1" के उदाहरण "12" बन सकते हैं

2::=~1 प्रतिस्थापन के उदाहरण "2" को हटाया जा सकता है, मुद्रण "1"

0::=~0 "0" स्थानापन्न के उदाहरणों को हटाया जा सकता है, "0" छापते हुए

@::=::: विकल्प "@" के उदाहरणों को इनपुट से तार के साथ बदला जा सकता है

::= प्रतिस्थापन नियमों की अंतिम सूची

@ प्रारंभिक स्ट्रिंग "@" है


8

अर्नोल्ड सी, 134 बाइट्स

IT'S SHOWTIME
HEY CHRISTMAS TREE i
YOU SET US UP 0         //or 1
STICK AROUND i
TALK TO THE HAND 1
CHILL
TALK TO THE HAND 0
YOU HAVE BEEN TERMINATED

हालांकि यह अन्य अर्नोल्ड उत्तर के रूप में मनोरंजक नहीं है , यह गोल्फ है। उदाहरण के लिए, इंडेंटेशन अनावश्यक है, और इसलिए मैक्रोज़ हैं@NO PROBLEMO और हैं @I LIED

भाषा के इस संस्करण के साथ परीक्षण किया गया , जो इनपुट नहीं ले सकता।


8

क्यूबिक्स , 5 6 बाइट्स

क्यूबिक्स @ETHproductions नई 2 आयामी भाषा है जहां कमांड एक क्यूब के चेहरे के चारों ओर लपेटे जाते हैं। ऑनलाइन व्याख्याकार बचत के लिए @ETHproductions के लिए धन्यवाद।

!I\@O

यह घन तक विस्तारित होता है

  !
I \ @ O
  .

यह Iकमांड से शुरू होता है । स्टैक पर एक पूर्णांक इनपुट करें।
\, बिना किसी सेशन के निर्देश सूचक को पुनर्निर्देशित करता है।
O, स्टैक के शीर्ष के संख्यात्मक मूल्य को आउटपुट करता है।
!, अगला कमांड छोड़ें ( @) यदि स्टैक के शीर्ष सही है। यह \पुनर्निर्देशित करेगा यदि 1
\, अनुदेश सूचक को @निकास कार्यक्रम पर पुनर्निर्देशित करता है ।

यह इस तथ्य का लाभ उठाता है कि स्टैक O ? !कमांड द्वारा पॉप नहीं किया जाता है ।


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

@ETHproductions इसे सुनिश्चित करने के लिए पोस्ट करते हैं। मुझे लगता है कि आपको यहाँ एक आशाजनक भाषा मिली है :)
मिकी १५'१६

आप एक बाइट को हटाकर ?और सिर्फ इस्तेमाल करके बचा सकते हैं !:!I\@O
ETHproductions

@ETHproductions बहुत अच्छा
मिकी

1
मैं एक लिखा है जानवर-forcer इस के लिए (चेतावनी: दो मिनट या के लिए अपने ब्राउज़र जमा) है, जो वास्तव में पाँच 5-बाइट समाधान के साथ आता है: @IOw!, @I?Ov, @!IOw, !IOW@,!I\@O
ETHproductions

7

फू , 6 बाइट्स

&1($i)

दूसरे वर्ण के रूप में इनपुट हार्डकोड किया गया है, क्योंकि फू में STDIN इनपुट नहीं है। क्या हम इस बात से सहमत नहीं हैं कि फू अब भयानक है? :)

व्याख्या

&1          Set current cell to 1
  (  )      Do-while loop (or, at least according to the interpreter)
   $i       Print current cell as int

2
मुझे हमेशा फू पसंद था।
एक स्पेगेटी

7

पर्ल, 18 + 1 = 19 13 + 1 = 14 बाइट्स

print while$_

इस तरह से चलाएं:

echo -n NUM | perl -p truth.pl

थैंक्स बाइट को गोल्फिंग के लिए थिसिसटैक्सब्लैकनोट (जो कि पर्ल गोल्फिंग से बेहतर है) के लिए धन्यवाद।


2
स्टेटमेंट मॉडिफ़ायर आपके दोस्त हैं! इसके अलावा, यदि आप यह सुनिश्चित करते हैं कि इनपुट में कोई नई अनुगामी नहीं है, तो आप +0: echo -n 0 | perl -pe'print while$_'(13 बाइट्स + 1 के लिए -p) छोड़ सकते हैं । perl -M5.010 -pe'say while$_'और भी छोटा होगा, लेकिन इसके परिणामस्वरूप 0 बनाम 1. के बीच असंगत
नएपन का

@ThisSuitIsBlackNot आह-हा! मैंने $ _ के दौरान प्रिंट की कोशिश की, लेकिन मैं यह पता नहीं लगा सका कि यह काम क्यों नहीं किया। मुझे नहीं पता था कि आपके पास इनपुट पर अनुगामी न्यूलाइन नहीं हो सकती है।
एक स्पेगेटो

हां, स्ट्रिंग 0गलत है लेकिन 0+ newline सच है। देखते हैं perldoc perlsyn
ThisSuitIsBlackNot

2
sayभले ही आप -Eएक अतिरिक्त बाइट के रूप में गिना जाए, कम है ।
डेनिस

2
@ डेनिस ... जो मुझे एहसास हुआ कि इसके साथ तय किया जा सकता है -l: perl -lpE 'say while$_'(11 बाइट्स + 2 के लिए -lp)।
ThisSuitIsBlackNot

7

> <> , 6 बाइट्स

::n?!;

स्टैक पर इनपुट को शुरू करने के लिए धक्का देता है

:        copy top element on stack
 :       copy top element on stack again
  n      pop and outputs top element
   ?     condition trampoline - pops top element, if it is zero skips next instruction
    !    trampoline skips next instruction
     ;   finish execution

1
पीपीसीजी में, हम अपनी व्याख्याओं से प्यार करते हैं। +1
एक स्पेगेटो

3
मुझे पूरा यकीन है कि यह केवल शाब्दिक 0 और 1 इनपुट के साथ काम करता है, जब इसे 48 ( '0') और 49 ( '1') के साथ काम करना चाहिए । क्या मैं गलत हूं?
भूमिगत

@quartata यदि यह मैं होता तो कहता कि इनपुट प्राप्त करने के अधिक परंपरागत तरीकों से उपयोग किए जाने वाले किसी भी उत्तर के लिए निष्पक्ष होना चाहिए, आपको स्टैक पर 48 या 49 डालनी चाहिए। हालांकि यह आपकी चुनौती है और यह बहुत बड़ा सौदा नहीं है, इसलिए (\ _ (_) _ / ¯
भूमिगत

2
इसके साथ एक और समस्या है: यदि स्टैक पूर्व-आबादी वाला है, तो आपको -vध्वज के लिए 3 बाइट्स जोड़ना होगा ।
एलेंडिया स्ट्राटन

1
@ ऐरन: इसके लायक क्या है, मैंने भी सोचा था कि यह 2 बाइट्स के लिए है -v, फिर मुझे सही किया गया। तो तुम अकेले नहीं हो। :)
एल'एंडिया स्टैट्रान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.