शब्दों का उलटा


30

सोना अपनी 10 साल की बेटी के साथ उसके घर में है। स्कूल से दूसरे बच्चे को वापस लाने के लिए उसे स्कूल जाने की जरूरत है, क्योंकि स्कूल दोपहर 2 बजे खत्म हो जाएगा। यह बाहर गर्म है, इसलिए वह अपने छोटे बच्चे को घर पर छोड़ना चाहती है।

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

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

स्ट्रिंग में केवल शामिल होगा [a-zA-z ], इसलिए आपको विराम चिह्न को संभालने की आवश्यकता नहीं है।

आपको इनपुट के रूप में एक स्ट्रिंग दी जाएगी, और आपको एक स्ट्रिंग का उत्पादन करना चाहिए।

नमूना परीक्षण मामले:

Input:
Man bites dog 

Output: 
dog bites Man


Input:
The quick brown fox jumps over the lazy dog

Output:
dog lazy the over jumps fox brown quick The


Input:
Hello world

Output:
world Hello

स्कोरिंग

यह । बाइट्स जीत में सबसे छोटा जवाब।



1
क्या हम इनपुट को शब्दों की सूची के रूप में ले सकते हैं? (यानी ['man', 'bites', 'dog'])
R

3
क्या आउटपुट में व्हॉट्सएप का पता चल सकता है?
डिजिटल ट्रामा

जवाबों:


11

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

O$^`\w+

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

सभी शब्दों को मिलाएं ( \w+) उन्हें सॉर्ट की के साथ टाइप करें खाली स्ट्रिंग ( O$) जिसका अर्थ है कि वे बिल्कुल भी सॉर्ट नहीं करेंगे, और फिर उनके क्रम ( ^) को उल्टा कर देंगे ।


कभी रेटिना का इस्तेमाल नहीं किया, लेकिन आपको इसकी आवश्यकता क्यों है 0$? क्या आप इसे उल्टा नहीं कर सकते?
caird coinheringaahing

@RandomUser सॉर्ट मोड ( O) वर्तमान में एकमात्र मोड है जिसमें यह रिवर्स विकल्प है।
मार्टिन एंडर



7

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

s=>s.split` `.reverse().join` `

कोशिश करो

f=
s=>s.split` `.reverse().join` `
o.innerText=f(i.value="Man bites dog")
oninput=_=>o.innerText=f(i.value)
<input id=i><pre id=o>


1
यह इस तरह से उत्तर है, यह अनिवार्य रूप से मेरे सी # उत्तर के समान है जो मुझे गोल्फ के लिए सी # से नफरत करता है। मेरे जवाब में सभी अतिरिक्त फुलाना लगभग बाइट की संख्या को दोगुना कर देता है ... +1
द लीथाल्कोडर

साइड नोट: C # में यदि आप कुछ भी नहीं करते हैं, तो Splitयह व्हाट्सएप पर डिफ़ॉल्ट रूप से विभाजित हो जाता है, क्या आप यहां भी ऐसा कर सकते हैं?
TheLethalCoder

1
दुर्भाग्य से, @TheLethalCoder, यदि आप splitJS में एक स्ट्रिंग / रेगेक्स की आपूर्ति नहीं करते हैं, तो यह या तो प्रत्येक व्यक्तिगत वर्ण पर विभाजित हो जाएगा या मूल स्ट्रिंग वाले एकल तत्व के साथ एक सरणी बना देगा, जो कि वाक्य रचना पर निर्भर करता है।
झबरा

7

बैश + आम लिनक्स उपयोगिताओं, 21

printf "$1 "|tac -s\ 

आउटपुट स्ट्रिंग में एक अनुगामी स्थान छोड़ता है - निश्चित नहीं है कि यह ठीक है या नहीं।


2
50k पर बधाई !! आज आपकी बारी है :-)
लुइस मेंडू

@LuisMendo धन्यवाद!
डिजिटल ट्रामा

6

आर, 19 बाइट्स

cat(rev(scan(,'')))

स्टड से स्ट्रिंग पढ़ता है। डिफ़ॉल्ट रूप से, scanरिक्त स्थान / newlines द्वारा अलग किए गए टोकन को पढ़ता है, इसलिए यह शब्दों को वेक्टर के रूप में पढ़ता है। revउलटा करता है, और catरिक्त स्थान के साथ तत्वों को प्रिंट करता है।

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


6

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

ṇ₁↔~ṇ₁

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

व्याख्या

ṇ₁        Split on spaces
  ↔       Reverse
   ~ṇ₁    Join with spaces

ध्यान दें कि दोनों "रिक्त स्थान पर विभाजित" और "wth रिक्त स्थान में शामिल हों" एक ही बिल्ट-इन का उपयोग करते हैं, अर्थात ṇ₁, बस अलग-अलग "दिशाओं" में उपयोग किया जाता है।




3

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

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

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

यह कोड दो अलग-अलग स्थानों में संख्या -32 बनाता है, लेकिन यह एकल -32 को बनाए रखने की कोशिश करने से कम बाइट्स लगता है।

व्याख्या

,[                        input first character
  >++++[<-------->-]      subtract 32 from current character (so space becomes zero)
,]                        repeat for all characters in input
<                         go to last character of last word
[                         while there are more words to display:
 >++++[->--------<]       create -32 two cells right of last letter
 +>                       increment trailing space cell (1 right of last letter) so the next loop works
 [[<]>[+>]<]              add 32 to all cells in word and trailing space cell
 <-                       subtract the previously added 1 from the trailing space
 [<]>                     move pointer to beginning of word
 [.>]<                    output word (with trailing space)
 [[-]<]                   erase word
 <                        move to last character of previous word
]

3

सी, 54 48 बाइट्स

इनपुट, 48 बाइट्स के रूप में तर्कों का उपयोग करना

main(c,v)char**v;{while(--c)printf("%s ",v[c]);}

ऑनलाइन प्रयास करें

> ./a.out man bites dog

पॉइंटर्स का उपयोग करते हुए, 84 बाइट्स

f(char*s){char*t=s;while(*t)t++;while(t-s){while(*t>32)t--;*t=0;printf("%s ",t+1);}}

उपयोग

main(){ f("man bites dog"); }

3

जाप , 11 10 7 4 बाइट्स

जाप में मेरा पहला प्रयास।

¸w ¸

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

  • सहेजे गए 3 बाइट्स ETHproductions के लिए धन्यवाद

व्याख्या

    :Implicit input of string U
¸   :Split on <space>
w   :Reverse
¸   :Join with <space>

कृपया अपने Japt tips को यहाँ साझा करें


2
धन्यवाद Japt प्रयोग करने के लिए :-) आप उपयोग कर सकते हैं ¸के स्थान पर qS है, जो आप तीन बाइट्स यहाँ बचाने चाहिए। (दुभाषिया डॉक्स का "यूनिकोड शॉर्टकट" खंड देखें)
12:55

अच्छा! यदि आप -Sध्वज का उपयोग करते हैं तो आप एक बाइट बचा सकते हैं ।
ओलिवर

मैं 2 बाइट्स गिनता हूं, @obarakon। जब तक ध्वज को बाइट की गिनती में शामिल नहीं किया जाता है, उस स्थिति में जो 4 बाय होगा, नहीं?
शैगी

@ झंडी प्रत्येक ध्वज एक बाइट के रूप में गिना जाता है। तो -Sआपके कुल बाइट काउंट पर +1 होगा।
ओलिवर

ओह समझा। वह पीपीसीजी चीज है या जाप चीज?
शैगी



2

05AB1E , 4 बाइट्स

#Rðý

नोट: केवल 2 या अधिक शब्दों के लिए काम करेगा। +1 बाइट यदि यह ठीक नहीं है।

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


मैं यूनिकोड देखता हूं, क्या यह वास्तव में 4 बाइट्स है?
वैल का कहना है कि मोनिका

हां, 05AB1E एक कस्टम कोडपेज
kalsowerus

#R¸»वैकल्पिक 4-बाइट समाधान: पी।
मैजिक ऑक्टोपस Urn



2

क्यूबिक्स , 48 बाइट्स

लगभग इस पर छोड़ दिया, लेकिन अंत में वहाँ मिल गया।

oU_;SW;@?ABu>):tS-?;\0$q^s.$;;<$|1osU!(;;...<#(1

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

यह क्यूब पर मैप करता है, जिसकी लंबाई तीन तरफ होती है

      o U _
      ; S W
      ; @ ?
A B u > ) : t S - ? ; \
0 $ q ^ s . $ ; ; < $ |
1 o s U ! ( ; ; . . . <
      # ( 1
      . . .
      . . .

सामान्य चरण हैं:

  • सभी इनपुट Aऔर रिवर्स Bस्टैक प्राप्त करें
  • नकारात्मक qको नीचे तक ले जाएं , 0स्टैक में एक काउंटर जोड़ें । इधर-उधर उछल-कूद करना।
  • अंतरिक्ष / अंत लूप का पता लगाएं, सही प्रिंट ऑर्डर में स्टैक भी डालता है।
    • वृद्धि काउंटर )और स्टैक से काउंटर आइटम प्राप्त करेंt
    • क्या यह एक स्पेस या ईओआई है S-?
    • नहीं तो दोहराएं
  • प्रिंट शब्द लूप
    • घटाव काउंटर (
    • यदि काउंटर !U0 है तो लूप से बाहर निकलें
    • sस्टैक पर चरित्र के साथ स्वैप काउंटर
    • oचरित्र को प्रिंट करें और इसे स्टैक से पॉप करें;
    • बार-बार लूप
  • स्टैक #और डिक्रीमेंट की लंबाई प्राप्त करें(
  • चेक ?0 अगर और बाहर निकलने @अगर यह 0 है
  • अन्यथा एक जगह को Soसाफ करें ;;और पहले लूप पर वापस जाएं।

मैंने कई शानदार कदमों को छोड़ दिया है, लेकिन आप इसे स्टेप बाय स्टेप देख सकते हैं


2

मैथेमेटिका, 35 बाइट्स

StringRiffle@Reverse@StringSplit@#&

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


StringSplit[#]व्हाट्सएप पर स्वचालित रूप से विभाजित हो जाता है, इसलिए आपको निर्दिष्ट करने की आवश्यकता नहीं है " "
पेड़ नहीं

2
सही बात! -5 बाइट्स!
J42161217

ऊह, और मुझे लगता है कि आप फ़ंक्शन रचना का उपयोग करके एक और बाइट बचा सकते हैं: StringRiffle@*Reverse@*StringSplit(इसे कॉल करें StringRiffle@*Reverse@*StringSplit@"hello world")
एक पेड़ नहीं

2

रोड़ा , 27 25 बाइट्स

2 बाइट्स @fergusq की बदौलत बच गए

{[[split()|reverse]&" "]}

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

यह फ़ंक्शन इनपुट स्ट्रीम से इनपुट लेता है।

स्पष्टीकरण (पुराना)

{[[(_/" ")()|reverse]&" "]}           /* Anonymous function */
   (_/" ")                            /* Pull a value from the stream and split it on spaces */
          ()                          /* Push all the values in the resulting array to the stream */
            |reverse                  /* And reverse it */
  [                 ]                 /* Wrap the result into an array*/
                     &" "             /* Concatenate each of the strings in the array with a space */
 [                       ]            /* And push this result to the output stream */

splitडिफ़ॉल्ट विभाजक के रूप में स्थान का उपयोग करता है, इसलिए इससे split()छोटा है (_/" ")()
फर्ग्यूसक








1

जावा 8, 53 57 बाइट्स

लैम्ब्डा + स्ट्रीम एपीआई

s->Stream.of(s.split(" ")).reduce("",(a,b)->b+" "+a)

सेलिम सुझाव के बाद, हमने सिर्फ 4 बाइट गिराए


1
Stream.ofइसके बजाय 4 बाइट्स बचाएं Arrays.stream: -)
सेलिम


1

अजगर, 3 बाइट्स

_cw

मेरा पहला पाइथ उत्तर, एक बाइट @ notjagan के उत्तर से कम है!

व्याख्या की:

 cw # Split the input by space (same as Python's string.split())
_   # Reverses the array
    # Pyth prints implicitly.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.