শব্দ বিপরীত


30

সোনা তার 10 বছরের মেয়েকে নিয়ে ঘরে is দুপুর ২ টায় স্কুল শেষ হওয়ার কারণে তাকে অন্য একটি শিশুকে স্কুল থেকে ফিরিয়ে আনতে স্কুলে যেতে হবে। এটি বাইরে গরম, তাই তিনি তার ছোট শিশুকে বাড়িতে রেখে যেতে চান।

তিনি তার ব্যস্ত থাকার সময় তার বাচ্চাকে একগুচ্ছ স্ট্রিং দিয়েছিলেন। তিনি তাকে স্ট্রিংয়ের শব্দগুলিকে উল্টো করতে বললেন। অনেকগুলি স্ট্রিং রয়েছে, সুতরাং আপনার এই মেয়েটিকে এই বিশাল কাজটি সমাধান করতে সহায়তা করা উচিত।

সুতরাং, একটি স্ট্রিং দেওয়া হয়েছে যাতে শব্দগুলি একক স্পেস দ্বারা পৃথক করা থাকে, স্ট্রিংয়ের শব্দগুলি বিপরীত করে। আপনি ধরে নিতে পারেন যে কোনও শীর্ষস্থানীয় বা পিছনের স্থান নেই।

স্ট্রিংটি কেবলমাত্র এতে থাকবে [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
আমরা কী শব্দের তালিকা হিসাবে ইনপুট নিতে পারি? (ie ['man', 'bites', 'dog'])
R

3
আউটপুটটিতে কি পূর্ববর্তী সাদা স্থান থাকতে পারে?
ডিজিটাল ট্রমা

উত্তর:


11

রেটিনা , 7 বাইট

O$^`\w+

এটি অনলাইন চেষ্টা করুন!

সমস্ত শব্দ মিলিয়ে ( \w+) তাদের বাছাই করুন কী খালি স্ট্রিং দিয়ে সাজান ( O$) যার অর্থ তারা মোটেও সাজানো হবে না এবং তারপরে তাদের ক্রমটি বিপরীত করুন ( ^)।


রেটিনা কখনই ব্যবহার করেন নি তবে আপনার দরকার কেন 0$? আপনি কি কেবল এটিকে বিপরীত করতে পারবেন না?
'23

@ র্যান্ডমউজার সাজানোর মোড ( O) বর্তমানে এই একমাত্র মোড যা এই বিপরীত বিকল্প রয়েছে।
মার্টিন ইন্ডার



7

জাভাস্ক্রিপ্ট (ES6), 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
TheLethalCoder

পার্শ্ব দ্রষ্টব্য: সি # Splitতে আপনি যদি কিছুই না দিয়ে থাকেন তবে ডিফল্টরূপে হোয়াইট স্পেসে বিভক্ত হয়, আপনি কি এখানে এখানে কি করতে পারেন?
TheLethalCoder

1
দুর্ভাগ্যক্রমে নয়, @ লেথলকোডার, আপনি যদি জেএসে স্ট্রিং / রেজেক্স সরবরাহ না করেন তবে splitএটি প্রতিটি স্বতন্ত্র চরিত্রের উপর বিভক্ত হয়ে যাবে বা ব্যবহৃত সিনট্যাক্সের উপর নির্ভর করে মূল স্ট্রিং যুক্ত একটি উপাদান সহ একটি অ্যারে তৈরি করবে।
শেগি

7

বাশ + সাধারণ লিনাক্স ইউটিলিটিস, 21

printf "$1 "|tac -s\ 

আউটপুট স্ট্রিংয়ে একটি পিছনের স্থান রেখে দেয় - নিশ্চিত না যে তা ঠিক আছে কি না।


2
50 কে অভিনন্দন !! আজ আপনার পালা :-)
লুইস মেন্ডো

@ লুইস মেন্ডো ধন্যবাদ!
ডিজিটাল ট্রমা

6

আর, 19 বাইট

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

স্টিডিন থেকে স্ট্রিং পড়ে। ডিফল্টরূপে, scanস্পেস / নিউলাইন দ্বারা আলাদা টোকেনগুলি পড়ে, তাই এটি ভেক্টর হিসাবে শব্দগুলি পড়ে readsrevবিপরীত হয় এবং 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 টি বাইট যুক্তি ব্যবহার করে Using

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 ¸

এটি অনলাইনে চেষ্টা করুন


ব্যাখ্যা

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

আপনার জাপট টিপস এখানে ভাগ করুন


2
জাপট :-) ব্যবহারের জন্য ধন্যবাদ আপনি ¸এর জায়গায় ব্যবহার করতে পারেন qS যা এখানে আপনাকে তিনটি বাইট সংরক্ষণ করতে পারে। (দোভাষী দস্তাবেজের "ইউনিকোড শর্টকাটগুলি" বিভাগটি দেখুন)
ইটিএইচ প্রোডাকশনস

নিস! আপনি -Sপতাকা ব্যবহার করলে আপনি একটি বাইট সংরক্ষণ করতে পারেন ।
অলিভার

আমি 2 বাইট গণনা করি, @ ওবরকন। পতাকাটি বাইট গণনায় অন্তর্ভুক্ত না করা হলে, কোন ক্ষেত্রে 4 বাই হতে হবে, না?
শেগি

@ শেগি প্রতিটি পতাকা একটি বাইট হিসাবে গণনা করা হয়। সুতরাং -Sআপনার মোট বাইট গণনায় +1 হবে।
অলিভার

আহ আমি দেখি. এটি কি পিপিসি জিনিস বা জাপট জিনিস?
শেগি



2

05 এ বি 1 ই , 4 বাইট

#Rðý

দ্রষ্টব্য: কেবল 2 বা আরও শব্দের জন্য কাজ করবে। এটি ঠিক না থাকলে +1 বাইট করুন।

এটি অনলাইন চেষ্টা করুন!


আমি ইউনিকোডটি দেখছি, এটি কি 4 বাইটের থেকে পুনরায় হয়?
বলছেন

হ্যাঁ, 05AB1E একটি কাস্টম ব্যবহার codepage
kalsowerus

#R¸»বিকল্প 4-বাইট সমাধান: পি।
ম্যাজিক অক্টোপাস উরন



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
সঠিক! -৫ বাইট!
J42161217

ওহ, এবং আমি মনে করি আপনি ফাংশন রচনাটি ব্যবহার করে অন্য একটি বাইট সংরক্ষণ করতে পারেন: StringRiffle@*Reverse@*StringSplit(এটিকে কল করুন StringRiffle@*Reverse@*StringSplit@"hello world")
একটি গাছ নয়

2

Röda , 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 বাইট বাদ দিয়েছি dropped


1
এর Stream.ofপরিবর্তে 4 বাইট সংরক্ষণ করুন Arrays.stream: -)
সেলিম


1

পাইথ, 3 বাইট

_cw

আমার প্রথম পাইথ উত্তর, @ নটজাগানের জবাবের চেয়ে এক বাইট কম!

ব্যাখ্যা:

 cw # Split the input by space (same as Python's string.split())
_   # Reverses the array
    # Pyth prints implicitly.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.