एक मुड़ "हैलो दुनिया!"


31

आपका काम काफी सरल है, एक प्रोग्राम लिखें जो प्रिंट करता है Hello, world!, कि जब मुड़ता है एक प्रोग्राम बनाता है जो प्रिंट करता है Twister!

तार कैसे मुड़ जाते हैं

घुमा एल्गोरिथ्म बहुत सरल है। प्रत्येक कॉलम को उसके सूचकांक द्वारा नीचे स्थानांतरित कर दिया जाता है (कॉल 0 से नीचे 0, कॉल 1 चाल 1, ...)। स्तंभ शिफ्ट शीर्ष पर लपेटता है। यह थोड़े इस तरह दिखता है:

a
ba
cba
----
 cba
  cb
   c

रेखा के नीचे सब कुछ के साथ शीर्ष पर लपेटकर। वास्तविक उदाहरण:

Original:
\\\\\\\\\\\\
............
............
............

Twisted:
\...\...\...
.\...\...\..
..\...\...\.
...\...\...\

(आगे के उदाहरण और आपकी पसंदीदा भाषा में एक ट्विस्ट यहां हैं )

स्कोरिंग

आपका प्रोग्राम एक गद्देदार आयत होना चाहिए। यह कोड-गोल्फ तो सबसे कम बाइट गिनती जीत है!

नियम

  • आपका पहला प्रोग्राम प्रिंट होना चाहिए Hello, world!। केवल एक अनुगामी न्यूलाइन की अनुमति है।
  • आपका पहला और दूसरा कार्यक्रम एक ही भाषा में होना चाहिए।
  • आपका दूसरा प्रोग्राम प्रिंट होना चाहिए Twister!। केवल एक अनुगामी न्यूलाइन की अनुमति है।
  • आपके प्रोग्राम में कम से कम 2 पंक्तियाँ और 2 कॉलम होने चाहिए।

3
जेली के कोड पृष्ठ में , लाइनफीड कोड कोड 127 (ASCII DEL) के अनुरूप (और, सभी उद्देश्यों के लिए, कार्य करता है) से मेल खाती है। कोड पॉइंट 10 (ASCII लाइनफीड) वाले वर्ण में ग्लिफ़ होता है ½और एक संख्या का वर्गमूल लेता है। इस चुनौती के लिए इन दोनों में से किसे नई माना जाना चाहिए?
डेनिस

डार, क्या मैं केवल एक ही आशा करता था कि "ट्विस्टेड हैलो वर्ल्ड" विकृत अर्थों में "मुड़" का उपयोग कर रहा था, इसलिए हम इसके बजाय "गुडबाय
क्रुएल

@ मुझे लगता है कि इस मामले में उपयोग करने के लिए बेहतर है कि जेली न्यूलाइन होगी।
J Atkin

@JAtkin ठीक है, स्पष्ट करने के लिए धन्यवाद। मैंने उसी हिसाब से अपना जवाब अपडेट किया है।
डेनिस

जवाबों:


10

जेली , 33 31 29 बाइट्स

मूल

“ɗ⁻%OḶ$“¡¦ḟṠ»Ṫ
“ɗ⁻%OḶ$“¡¦ḟṠ»Ḣ

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

मुड़

“ɗ⁻%OḶ$“¡¦ḟṠ»Ḣ
“ɗ⁻%OḶ$“¡¦ḟṠ»Ṫ

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

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

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

दोनों कार्यक्रमों “ɗ⁻%OḶ$“¡¦ḟṠ»के लिए ['Hello, world!', 'Twister!'], जेली के स्थिर शब्दकोश संपीड़न का उपयोग करते हुए, सूची तैयार करता है ।

मूल और मुड़ कोड के बीच एकमात्र अंतर मुख्य लिंक का अंतिम चरित्र है। सूची के पहले तार का चयन करता है, और चयन करता है अंतिम का चयन करता है।


2
ऐसा लग रहा है कि यह "पवित्र श * टी" चिल्ला रहा है
चरण

42

अजगर 2, 59 बाइट्स

print "  Hello, world!"[ 2::]
#rint "T w i s t e r !"[ ::2]

मुड़:

print "T weils,twerrd!"[ ::2]
#rint "  H l o   o l !"[ 2::]

मूल रूप से, Twister!डेटा को स्ट्रिंग के विषम सूचकांकों में रखता है और फिर पहले दो (गद्दी) वर्णों को हटाने के बजाय प्रत्येक वर्ण को हटाने के लिए बदलता है।


यह मेरे दृष्टिकोण से बहुत अधिक स्मार्ट है
wnnmaw

यह थोड़े हास्यास्पद, 40 अपवित्र है?
जे एटकिन

@Jtkin मैंने देखा है कि कुछ पायथन समाधान उनमें से बड़ी मात्रा में प्राप्त करते हैं। ऐसा नहीं है कि मैं शिकायत कर रहा हूं: ~)
पुरकाकूदरी

कूलर रास्ता:print " Hello, world!" [2::]
एरिक आउटगॉल्फ

@ E @G is काम करता है, लेकिन मैं अभी इसे वैसे ही रखूंगा।
पुरकाकूदरी

17

विखंडन , 215 162 56 53 50 बाइट्स

यहाँ एक शुरुआत है:

D1
\\
""
TH
we
il
sl
to
e,
r 
!w
"o
1r
;l
1d
;!
 "

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

जब मुड़:

D"
\1
"\
T"
wH
ie
sl
tl
eo
r,
! 
"w
1o
;r
1l
;d
 !

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

व्याख्या

Hello, world!कोड काफी सरल है:

  • D एक भी परमाणु पैदा करता है, नीचे की ओर जा रहा है।
  • दो \(दर्पण) इसे दूसरे कॉलम पर विक्षेपित करते हैं।
  • "Hello, world!" आवश्यक स्ट्रिंग प्रिंट करता है।
  • 1एक पोर्टल है। यह 1पढ़ने की क्रम में परमाणु को अगले तक पहुंचाता है, अपनी दिशा को बनाए रखता है (जो कि अगला है r)।
  • परमाणु अभी भी नीचे चला जाता है, ;जिसमें परमाणु को नष्ट कर देता है और कार्यक्रम को समाप्त कर देता है।

Twister!कोड के लिए नियंत्रण प्रवाह थोड़ा अधिक है ... मुड़ ...

  • फिर, Dपरमाणु को जन्म देता है।
  • \इसे दाईं ओर, में दर्शाया गया है 1
  • अब पोर्टल अगले को परमाणु भेजता है 1। परमाणु हिट करता है oजो सिर्फ अपना द्रव्यमान बदलता है, लेकिन हम इसे अनदेखा कर सकते हैं। कोड के चारों ओर लपेटता है ताकि परमाणु एक ही 1फिर से हिट हो, दो पंक्तियों को लंघन। फिर, हम अनदेखा कर सकते हैं l, परमाणु चारों ओर घूमता है और 1फिर से हिट करता है । अब 1कोड में आगे नहीं है, इसलिए परमाणु 1शीर्ष पर वापस सभी तरह से छोड़ देता है ।
  • किनारों पर एक बार फिर से लपेटने के बाद, परमाणु को फिर से विक्षेपित किया जाता है \, अब फिर से नीचे जा रहा है।
  • "Twister!" आवश्यक कोड प्रिंट करता है।
  • 1पहले के मुकाबले परमाणु को एक बार फिर से प्रसारित करता है ;, लेकिन ;कार्यक्रम को समाप्त करने के लिए एक और प्रतीक्षा है।

वाह, अब बहुत करीब! :) मुझे यकीन है कि छोटा होने का एक तरीका है ...
FryAmTheEggman

क्यों तुम लोग विखंडन पसंद करते हो?
J Atkin

@Jtkin हम क्यों नहीं? :)
मार्टिन एंडर

@ मार्टिनबटनर मैं विशेष रूप से सोच रहा था कि इस चुनौती के लिए क्यों?
J Atkin

1
@Jtkin 2D भाषाएँ उपयुक्त लगती थीं, और विखंडन विशेष रूप से सरल लगता था क्योंकि आप कार्यक्रम में एक या अधिक मनमाने ढंग से प्रवेश बिंदु चुन सकते हैं।
मार्टिन एंडर

15

विखंडन , 35 बाइट्स

विखंडन दृष्टिकोण # 3 (# 4 जिसे मैंने अपनी पहली पोस्ट से संपादित किया था) को गिना।

R"Hello, " \"tri"
T;L"!dlrow"/"es!w

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

R;H"ldor w /"er!"
T"Le!ll,o""\"tsiw

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

व्याख्या

यह एक वास्तव में विखंडन समाधानों में से सबसे सरल है। दोनों कार्यक्रमों में दो प्रवेश बिंदु हैं: Rएक दाएं- Lबाएं परमाणु और बाएं-बाएं परमाणु बनाता है । किसी भी स्थिति में, ;उनमें से एक को तुरंत नष्ट कर देता है।

अब Hello, world!कार्यक्रम में, परमाणु पहले स्ट्रिंग के साथ आधा तार प्रिंट करता है"Hello, " , फिर ( \और /जो दर्पण होते हैं) परमाणु को बाईं ओर जाने वाली दूसरी लाइन पर डिफ्लेक्ट करते हैं। "world!"(आगे बढ़ने वाले परमाणु की दिशा में पढ़ा जाता है) बाकी स्ट्रिंग को प्रिंट करता है। Lअब नो-ऑप और है; इस परमाणु को नष्ट करने के साथ-साथ कार्यक्रम को समाप्त कर रहा है।

Twister!कार्यक्रम मूलतः एक ही है, लेकिन 180 डिग्री तक घुमाया है। इस समय, Lपरमाणु जीवित रहता है, और इसके साथ मुद्रण शुरू होता है "Twist"\और /फिर दूसरी लाइन पर इसे हटाने, अब सही जा रहा है। "er!स्ट्रिंग के शेष प्रिंट, Rएक सेशन नहीं है और; कार्यक्रम को समाप्त करता है।


गजब का! मुझे लगता है कि यह लगभग उतना ही छोटा है जितना इसे मिल सकता है, पुन: उपयोग की मात्रा प्रभावशाली है।
FryAmTheEggman


4

जाप, 67 61 57 बाइट्स

6 बाइट्स @Jtkin की बदौलत, 4 बाइट्स @Ian की बदौलत

"Tzwzizsztzezzzzzzrzzzz!"rz;
"Hzezlzlzoz,z zwzorlzdz!"rz;

मुड़:

"Hzezlzlzoz,z zwzorlzdz!"rz;
"Tzwzizsztzezzzzzzrzzzz!"rz;

इसे ऑनलाइन टेस्ट करें: ओरिजिनल , ट्विस्टेड

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

"Tzwzizsztzezzzzzzrzzzz!"rz;  // Take this string and remove all "z"s.
"Hzezlzlzoz,z zwzorlzdz!"rz;  // Take this string and remove all "z"s.
                              // Implicit: output *last* expression

यदि यह काम करता है जैसे मुझे लगता है कि यह करता है, तो आप Twister!रिक्त स्थान को बदलने के बाद ट्रेलिंग स्थान को हटा सकते हैं .
J Atkin

@JAtkin यह वास्तव में उस तरह काम नहीं करता है, लेकिन मैं उस तरह से बाइट्स का एक गुच्छा बचा सकता हूं। धन्यवाद!
21

"T.w.i.s.t.e.r.!. . . . . "k".(newline)"H.e.l.l.o.,. .w.o.r.l.d.!"k".
J Atkin

एक अलग भराव चरित्र के साथ पढ़ने में बहुत आसान हो सकता है ...
mbomb007

4
@ mbomb007 कब से "पढ़ना आसान" एक उपलब्धि है? : D
यो '

4

पायथन, 398 414 380 456 बाइट्स *

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

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

मैं सिर्फ यह देखना चाहता था कि क्या यह अजगर में किया जा सकता है। यह कर सकते हैं, लेकिन यह सुंदर नहीं है।

print'Hello, world!'
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     

जब मुड़ जाता है

print'Twister!'
#rint'Twister!'
#rint'Twister!'
#rint'Twister!'
#rint'Twister!'
#rint'Twister!'
#rint'Hwister!'
#rint'Teister!'
#rint'Twlster!'
#rint'Twilter!'
#rint'Twisoer!'
#rint'Twist,r!'
#rint'Twiste !'
#rint'Twisterw'
#rint'Twister!o
#rint'Twister!'r
#rint'Twister!' l
#rint'Twister!'  d
#rint'Twister!'   !

मुझे लगता है कि आप प्रत्येक पंक्ति में स्थान हटा सकते हैं, फिर अंतिम पंक्ति को पूरी तरह से हटा सकते हैं।
ETHproductions

मैंने ऐसा करने के लिए नहीं सोचा था क्योंकि यह प्रारंभिक घुमा चुनौती के नियमों के खिलाफ था, लेकिन धन्यवाद!
wnnmaw

आप कोड को अपडेट करना भूल गए;)
ETHproductions

मुझे लगा कि यह वास्तव में मायने नहीं रखेगा, लेकिन मैंने इसे अच्छे उपाय के लिए किया
wnnmaw

1
मुझे लगता है कि आपने गलत समझा है। कोड को एक गद्देदार आयत होने के लिए आवश्यक है, लेकिन आप rint 'हर पंक्ति पर स्थान हटा सकते हैं ।
ETHproductions


1

ब्रेनफक, 467 367 285 बाइट्स

untwisted

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

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

मुड़

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

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



@JoKing सुझाव के लिए धन्यवाद! किसी भी विचार कैसे एक छोटे से "ट्विस्टर!" साथ ही कार्यक्रम?
ऑर्थोपलेक्स

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