मुझे अपने थके हुए, अपने गरीब, अपने huddled जनता मुक्त करने के लिए तड़प दे


19

स्टैच्यू ऑफ़ लिबर्टी की पीठ में एक कांस्य पट्टिका एम्मा लाजर द्वारा " द न्यू कोलोसस " कविता को प्रदर्शित करता है , जिसका एक हिस्सा पढ़ता है:

मुझे अपने थके हुए, अपने गरीब,
अपने huddled जनता को मुक्त करने के लिए तड़प दे,
अपने मनमाने तट के मनहूस इनकार।
इनको भेजो, बेघर, टेंपरेस्ट-टूस्ट मेरे लिए,
मैं अपना दीपक सुनहरे दरवाजे के पास उठाता हूँ!

इस चुनौती के लिए कविता के इस भाग को सरल बनाने के लिए, हम इसे सभी बड़े अक्षर बना देंगे और नए सिरे को स्लैश ( /) के साथ बदलकर , अल्पविराम और अन्य विराम चिह्न रखेंगे :

GIVE ME YOUR TIRED, YOUR POOR,/YOUR HUDDLED MASSES YEARNING TO BREATHE FREE,/THE WRETCHED REFUSE OF YOUR TEEMING SHORE./SEND THESE, THE HOMELESS, TEMPEST-TOST TO ME,/I LIFT MY LAMP BESIDE THE GOLDEN DOOR!

हम इसे स्ट्रिंग एस कहेंगे। इसमें md5 हैश है 8c66bbb9684f591c34751661ce9b5cea । आप वैकल्पिक रूप से मान सकते हैं कि इसमें एक अनुगामी न्यूलाइन है, जिस स्थिति में md5 हैश है 0928ff6581bc207d0938b193321f16e6

एक प्रोग्राम या फ़ंक्शन लिखें जो एक स्ट्रिंग में लेता है। जब स्ट्रिंग एस है, क्रम में आउटपुट , प्रति पंक्ति एक, छह वाक्यांश जो लोगों के प्रकार का वर्णन करते हैं, कविता में लेडी लिबर्टी के बारे में पूछा गया है:

TIRED
POOR
HUDDLED MASSES YEARNING TO BREATHE FREE
WRETCHED REFUSE OF YOUR TEEMING SHORE
HOMELESS
TEMPEST-TOST

(यह सटीक स्ट्रिंग, वैकल्पिक रूप से एक एकल अनुगामी न्यूलाइन के बाद, इनपुट एस के लिए आपका आउटपुट होना चाहिए)

के लिए कम से कम एक इनपुट स्ट्रिंग है कि नहीं है, अपने उत्पादन किसी भी ऊपर छह लाइनों के अलावा अन्य स्ट्रिंग होना चाहिए। यह केवल आउटपुट के रूप में सरल हो सकता है TIREDयदि इनपुट केवल है GIVE ME YOUR TIRED। यह नियम शुद्ध हार्डकोडिंग को रोकने के लिए है। अन्यथा, जब इनपुट स्ट्रिंग S नहीं है, तो आपका कोड कुछ भी कर सकता है।

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

संदर्भ के लिए, यहां S में छह आउटपुट लाइनों के शून्य-आधारित सूचकांक और लंबाई हैं:

13 5, 25 4, 36 39, 81 37, 136 8, 146 12

बाइट्स में सबसे छोटा कोड जीतता है।


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

यह एक वैध विकल्प है, हाँ।
केल्विन के शौक

1
क्या यह मायने रखता है कि आउटपुट न्यूलाइन्स के साथ एक वास्तविक सिंगल स्ट्रिंग है? प्रोग्राम के अनुसार एक सरणी की लाइनों को आउटपुट करता है, जो कंसोल पर स्ट्रिंग से अप्रभेद्य होगा?
रिश्वतवादी

3
मुझे नहीं लगता कि हार्डकोडिंग प्रतिबंध की आवश्यकता थी क्योंकि हार्डकोडिंग बहुत लंबा है।
xnor

1
@briantist ठीक लगता है।
केल्विन के शौक

जवाबों:


9

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

Ẇ“©ØḌKAƑ⁶2ɼU’b8ȷ¤ịY

इसे ऑनलाइन आज़माएं! या इसे किसी अन्य पाठ के साथ आज़माएँ।

कैसे?

इनपुट स्ट्रिंग के सभी गैर-रिक्त सन्निहित स्लाइस की सूची में अनुक्रमित करता है और लाइन फीड के साथ जुड़ता है।

Ẇ“©ØḌKAƑ⁶2ɼU’b8ȷ¤ịY - Main link: s
                ¤   - nilad followed by link(s) as a nilad
 “©ØḌKAƑ⁶2ɼU’       - base 250 number, 27003436588466956354336
              8ȷ    - 8 * 1e3 = 8000
             b      - convert to base, [824,635,7086,6796,1544,2336]
                 ị  - index into
Ẇ                   - all non-empty contiguous slices of s
                  Y - join with line feeds

पिछला कोड, 22 बाइट्स:

“ÇŒȷœ%LRw⁹ƊƓɠ‘ṬœṗµḊm2Y

इनपुट स्ट्रिंग का विभाजन, हर दूसरे तत्व को लेता है और लाइन फीड के साथ जुड़ता है। “ÇŒȷœ%LRw⁹ƊƓɠ‘कोड पेज इंडेक्स की एक सूची है, उन इंडेक्स पर लोगों के साथ शून्य की एक सूची बनाता है, œṗउस सूची के सत्य इंडेक्स में इनपुट को विभाजित करता है, पहला तत्व निकालता है, m2हर दूसरे तत्व को लेता है, और Yलाइन फीड के साथ जुड़ता है।


7

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

इनपुट से अलग होने पर रिक्त लाइनों या कुछ कचरा का उत्पादन कर सकते हैं S

let f =

s=>[837,1604,2343,5221,8712,9356].map(n=>s.substr(n>>6,n&63)).join`
`

console.log(f(`GIVE ME YOUR TIRED, YOUR POOR,
YOUR HUDDLED MASSES YEARNING TO BREATHE FREE,
THE WRETCHED REFUSE OF YOUR TEEMING SHORE.
SEND THESE, THE HOMELESS, TEMPEST-TOST TO ME,
I LIFT MY LAMP BESIDE THE GOLDEN DOOR!`))

console.log(f(`THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG`))



3

गणितज्ञ , 71

Column@StringTake[#,List@@@{14|18,26|29,37|75,82|118,137|144,147|158}]&

2

पॉवरशेल , 72 बाइट्स

"$args"-split'[/,.]'-replace'^.*?(YOUR|\bTHE) |^ | TO ME'-match'^[^S G]'

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

व्याख्या

यह एक बहुत भद्दा regex समाधान है।

स्ट्रिंग को किसी सरणी में /या उस पर विभाजित करना .या ,फिर पहले पैटर्न से मेल खाने वाले प्रत्येक स्ट्रिंग के कुछ हिस्सों को बदलना, जो -replaceडी स्ट्रिंग्स की एक सरणी देता है , फिर -matchदूसरे पैटर्न से मेल खाने वाले तत्वों की एक सरणी को वापस करने के लिए ऑपरेटर का उपयोग करें (जो छुटकारा हो जाता है रिक्त लाइनों और 2 लाइनों से पहले फ़िल्टर नहीं किया गया था)।


1

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

Riffle[s=#;s~Take~#&/@{{14,18},{26,29},{37,75},{82,118},{137,144},{147,158}},"
"]<>""&

इनपुट के रूप में वर्णों की सूची लेने और एक स्ट्रिंग लौटाने का कार्य करें। बस इनपुट के प्रासंगिक पदार्थों को निकालता है और नए सिरे से जुटता है।


1
मेरा इनपुट प्रारूप एस की Stringसूची नहीं है Character
ग्रेग मार्टिन

0

टीआई-बेसिक, 58 बाइट्स

बहुत सीधा है। Dispपसंद है println, इसलिए बीच में नई कहानियाँ हैं।

Disp "TIRED","POOR",sub(Ans,37,39),sub(Ans,82,37),"HOMELESS",sub(Ans,147,12

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