बीटल्स से "हे जूड" प्रिंट करें


27

आपका कार्य एक कार्यक्रम लिखना है जो द बीटल्स के गीत "हे जुड" (© Sony / ATV Music Publishing LLC) से गीत से निकाले गए चार छंदों का अनुसरण करता है:

Hey Jude, don't make it bad\n
Take a sad song and make it better\n
Remember to let her into your heart\n
Then you can start to make it better\n
\n
Hey Jude, don't be afraid\n
You were made to go out and get her\n
The minute you let her under your skin\n
Then you begin to make it better\n
\n
Hey Jude, don't let me down\n
You have found her, now go and get her\n
Remember to let her into your heart\n
Then you can start to make it better\n
\n
Hey Jude, don't make it bad\n
Take a sad song and make it better\n
Remember to let her under your skin\n
Then you'll begin to make it\n
\n

परंतु

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

"Hey Jude, don't"
" make it bad"
" be afraid"
" let me down"
"Take a sad song and make it better"
"You"
" were made to go out"
" and get her"
" have found her, now go"
"Remember to"
"The minute you"
" let her"
" into your heart"
" under your skin"
"Then"
" you"
" can start"
"'ll"
" begin"
" to make it"
" better"

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

आपके द्वारा तैयार आउटपुट को उपरोक्त चार छंदों से बिल्कुल मेल खाना है। ध्यान दें कि \nnewlines के लिए उपयोग किया जाता है और प्रत्येक कविता के बाद एक अतिरिक्त newline जोड़ा जाता है। आप इस फ़ाइल का उपयोग कर सकते हैं (MD5:) के 4551829c84a370fc5e6eb1d5c854cbecखिलाफ अपने आउटपुट की जाँच करने के लिए।

आप छंद की संरचना को समझने के लिए निम्नलिखित रेलमार्ग आरेख का उपयोग कर सकते हैं (प्रत्येक तत्व एक टोकन का प्रतिनिधित्व करता है): यहाँ छवि विवरण दर्ज करें

बाइट्स में सबसे छोटा कोड जीतता है। हैप्पी गोल्फिंग।


47
वह हिस्सा जो नाह नहीं है, नाह नहीं, नाह नाह जाता है। ^ ^
अरनौल्ड

3
@Arnauld संबंधित : पी
DJMcMayhem

10
@ अरनल्ड अनिवार्य XKCD xkcd.com/851_make_it_better
नथानिएल

3
हर पंक्ति के अंत में उन सभी बैकस्लैश को गाना कठिन होना चाहिए।
तमेंग सेंगेल

जवाबों:


9

जेली , 42 बाइट्स

;⁷“Ṙç€ṘḋḷŒø|Ṁ2kḤ⁽⁼SƁẒVṿẎj]ð⁵ṀƒƤ)÷Ƒ¦Ẋ½Iɠ⁻’ṃ

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

हार्डकोडिंग संस्करण।

इनपुट:

["Hey Jude, don't", ' make it bad', 'Take a sad song and make it better', 'Remember to', ' let her', ' into your heart', 'Then', ' you', ' can start', ' to make it', ' better', ' be afraid', 'You', ' were made to go out', ' and get her', 'The minute you', ' under your skin', ' begin', ' let me down', ' have found her, now go', "'ll"]

17

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

a=>`01
4
9bc
efgjk

02
567
abd
efijk

03
587
9bc
efgjk

01
4
9bd
efhij

`.replace(/./g,n=>a[parseInt(n,36)])

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


वैकल्पिक संस्करण, 114 बाइट्स

थोड़ा बेहतर संपीड़न, लेकिन बड़े विघटन कोड से दुख की बात है।

a=>`835fc3cbbd3
84db3db4bbdb3
85cd1cc3cbbd3
835fc4bbcb3

`.replace(/./g,n=>a[n='0x'+n,i=n%8&&n%8-2+i]+[`
`[n>>3]])

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


मुझे नहीं पता था कि mबहु-रेखा टेम्पलेट शाब्दिक के लिए ध्वज की आवश्यकता नहीं है। दिलचस्प।
ग्रांट मिलर

7

रूबी + -p, 177 136 120 118 115 109 बाइट्स (पूरा कार्यक्रम)

$_="abvevjlmvopqtuvvacvfghvklnvopstuvvadvfihvjlmvopqtuvvabvevjlnvoprstv".gsub(/./){|c|(eval$_)[c.ord-97]||$/}

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

-41 बाइट्स: चर अनुक्रमित के रूप में वर्णों का उपयोग करने के लिए चर का उपयोग करने से स्विच करें

-16 बाइट्स: एक अधिक सुविधाजनक इनपुट प्रारूप पर स्विच करें

-1 बाइट: बीच putsऔर जगह की जरूरत नहीं"abv...

-1 बाइट: शाब्दिक के $/बजाय वैश्विक उपयोग करें?\n

-3 बाइट्स: gsub(/./)इसके बजाय का उपयोग करें.chars.map

-6 बाइट्स: साथ कॉल करें -pऔर उपयोग करें $_धन्यवाद पावेल !

मैजिक स्ट्रिंग में प्रत्येक वर्ण इनपुट सरणी में एक इंडेक्स का प्रतिनिधित्व करता है। मुझे चर की आवश्यकता है zताकि मैं केवल एक बार STDIN से पढ़ूं।

मैं एक सरणी स्वीकार करने और एक स्ट्रिंग वापस करके IO से कुछ लागत बचा सकता था। इसके vलिए अंत में एक अतिरिक्त की आवश्यकता होती है , क्योंकि इसमें से एक निशुल्क न्यूलाइन नहीं मिल रही है -p

रूबी , 162 110 108 105 बाइट्स (फ़ंक्शन)

->z{"abvevjlmvopqtuvvacvfghvklnvopstuvvadvfihvjlmvopqtuvvabvevjlnvoprstvv".gsub(/./){|c|z[c.ord-97]||$/}}

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


मैं के साथ की String#unpackतुलना में कम होने का उपयोग करने के लिए एक रास्ता नहीं मिल रहा है , लेकिन वहाँ एक हो सकता है। .chars.ord-97
बेंज 2240

1
यहाँ कुछ बाइट्स बंद हैं: tio.run/##VY/…
Pavel

नीट, धन्यवाद! आज मैं के बारे में सीखा -pऔर$_
benj2240

मेरी अज्ञानता को क्षमा करें, लेकिन मैं इसे कमांड-लाइन या आईआरबी से कैसे चलाऊंगा?
जॉन टॉपले

1
@ जॉनप्ले यदि आप आईआरबी का उपयोग करना चाहते हैं, तो आप इन तीन लाइनों को एक - एक करके कॉपी-पेस्ट कर सकते हैं । कमांड लाइन से पूर्ण कार्यक्रम का उपयोग करने के लिए, यहां से शुरू करें
benj2240

4

जावा 8, 241 233 141 140 138 बाइट्स

a->{a.add("\n");"01E4E9;<E>?@CDEE02E567E:;=E>?@CDEE03E587E91<E>?@CDEE01E4E91=E>?ABCEE".chars().forEach(i->System.out.print(a.get(i-48)));}

स्पष्टीकरण:

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

a->{                  // Method with ArrayList<String> parameter and no return-type
 a.add("\n");         //  Add a new-line as last item (index 21) to the input-List
 "01E4E9;<E>?@CDEE02E567E:;=E>?@CDEE03E587E91<E>?@CDEE01E4E91=E>?ABCEE".chars().forEach(i->
                      //  Loop over the bytes of this String above
   System.out.print(  //   Print:
     a.get(i-48)));}  //    The String in the list at index `i-48`

यह मूल रूप से ASCII वर्णों 0(48) को E(69) के माध्यम से 0-अनुक्रमित सूचकांकों 0के 21साथ परिवर्तित करता है i-48



4

05AB1E , 142 68 66 65 बाइट्स

`¶)•7/è¸ĀuVI{è:÷MDS.₁bö¼d@ÉÃƶõî›Λðë’OŒβι"žHƒö>“ÃaÈǝõöÓ∍¿þœθÀ•2ôèJ

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

एक आधार -255 संपीड़ित स्ट्रिंग का उपयोग करके, EriktheOutgolfer के लिए -74 बाइट्स धन्यवाद।

-2 बाइट्स सिकुड़ते हुए स्ट्रिंग को उल्टा करके तीन 0 के समतल करने से रोकता है

-1 बाइट के लिए EriktheOutgolfer का धन्यवाद, इनपुट एरे में दो आइटम स्विच करके, ताकि प्रमुख 0 से बचा जा सके, और इस प्रकार रिवर्स आर कमांड को हटा दिया जा सकता है।



2

स्टैक्स , 59 58 बाइट्स

îòÖ╥╬╬╞:,y╓ønä⌠╦╒ï╦≤x◘‼ε╩ⁿ◙ΓZ►e«qpôr╡"╣Ü≥┤╢┴;╡ÑkAú0:=;m╠╠x

इसे चलाएं और डीबग करें

इसी कार्यक्रम का संबंधित एएससीआई प्रतिनिधित्व है।

`ORIpY$T&z{m6Y=>mR)_ .VQ)eN70e[:0yO8j$^RN[ Bp{IN/$|"3^;G#^&lv!`FAx+@]p

`ORIpY$T&z{m6Y=>mR)_ .VQ)eN70e[:0yO8j$^RN[ Bp{IN/$|"3^;G#^&lv!`के मूल्य के साथ एक संकुचित शाब्दिक है "CDBGBLNOBQRSVWBBCEBHIJBMNPBQRUVWBBCFBHKJBLNOBQRSVWBBCDBGBLNPBQRTUVBB"। वर्ण टोकन तालिका में अनुक्रमित का प्रतिनिधित्व करते हैं। यह कार्यक्रम एक नई रेखा का प्रतिनिधित्व करने के लिए एक और टोकन जोड़ता है। यह इनपुट में नहीं है, लेकिन निष्पादन के दौरान जोड़ा गया है। बाकी कार्यक्रम इस तरह से काम करता है।

F           for each character, execute the rest of the program
 A          integer literal 10, character code of newline
  x+        append 10 to the input array
    @       get element at index, using wrap-around
                the list is size 22, and B is 66, so B gets the first token
     ]      wrap the result in a singleton array.
                this effectively turns 10 into "\n"
      p     print without newline

2

सी (जीसीसी) फ़ंक्शन, 139 बाइट्स

i,m;f(char**s){for(i=0;i<68;)m="AB@E@JLM@OPQTU@@AC@FGH@KLN@OPSTU@@AD@FIH@JLM@OPQTU@@AB@E@JLN@OPRST@@"[i++],printf(m^64?"%s":"\n",s[m-65]);}

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


अच्छा लगा। क्या आप कोड समझा सकते हैं?
आर्मिनब

@arminb कुछ भी नहीं फैंसी, लंबे "एबी @ ई ..." स्ट्रिंग में टोकन और newlines के सूचक होते हैं ABC ... = टोकन [012] .. '@' = newline, टोकन या newline के रूप में मुद्रित होता है ' मैं उस स्ट्रिंग के माध्यम से पुनरावृति करता हूं।
प्रिंसपोलका

विलय printfमेंfor
l4m2

1
कोडिंग उल्टा
l4m2


1

लाल , 133 बाइट्स

foreach c{abzezjlmzopqtuzzaczfghzklnzopstuzzadzfihzjlmzopqtuzzabzezjlnzoprstzz}[prin either c =#"z"["^/"][t/(to-integer c -#"a"+ 1)]]

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

Ungolfed

t टोकन की सूची के साथ एक ब्लॉक है

s:{abzezjlmzopqtuzzaczfghzklnzopstuzzadzfihzjlmzopqtuzzabzezjlnzoprstzz}
foreach c s[                           ; for each character in s
    prin either c = #"z"               ; if it's a 'z' 
        ["^/"]                         ; print CR
        [t/(to-integer c - #"a" + 1)]  ; otherwise find which token to print
]                                      ; by mapping its offset to the alphabet


1

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

""<>Append[#,"
"][[36^^ajikrj7lg8pya7wgtt43pvrilsik1dea1uht6mx3go33m4mjj02hb4wi9w3~IntegerDigits~23]]&

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


1

रूबी , 97 बाइट्स

->a{112.times{|i|$><<a[i%7-1+i%28/7*5]*("0@Xg(44k$,Xg0@Tz"[i/7].ord>>~i%7&1)+$/*(i%7/6+i%28/27)}}

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

अधिकांश अन्य उत्तरों के लिए एक अलग दृष्टिकोण के साथ कुछ बाइट्स सहेजे गए।

प्रत्येक पंक्ति में संभावित टोकन की संख्या इस प्रकार है

Line number   Tokens 
1             4
2             5
3             5
4             7

मैजिक स्ट्रिंग में प्रति पंक्ति एक वर्ण होता है, जिसकी व्याख्या गीत के 16 पंक्तियों में से प्रत्येक के लिए 7 उपलब्ध टोकन में से एक बिटमैप के रूप में की जाती है।

a[i%7-1+i%28/7*5] प्रत्येक पंक्ति के टोकन के माध्यम से पुनरावृत्ति, प्रत्येक नई लाइन के लिए 5 से स्थानांतरण, और इस तथ्य के लिए 1 की ऑफसेट के साथ कि पहली पंक्ति में केवल 4 टोकन हैं।

लाइनों के लिए 1-3 केवल 4 के बिट्स के माध्यम से 64 का उपयोग किया जाता है - 2 के और 1 के बिट्स का उपयोग नहीं करना अगली पंक्ति से मुद्रण टोकन से बचा जाता है। लाइन 4 के लिए, 64 के 1 से सभी 7 बिट्स का उपयोग किया जाता है।

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