স্পেস সরান, মূলধন বজায় রাখা


27

আপনার ইনপুটটি একটি ইংরেজি বাক্য, বাক্যাংশ, বা শব্দ হবে। এটি কেবল ধারণ করবে a-zA-Z' -,.!?। আপনার কাজটি হ'ল ইনপুট নেওয়া, শূন্যস্থান সরিয়ে নেওয়া এবং তারপরে মূলধন পুনরায় বিতরণ করা যেমন সূচিপত্রগুলিতে অক্ষরগুলি পূর্বে মূলধন করা হয়েছিল (এবং পূর্বে মূলকৃত সূচকগুলিতে কেবলমাত্র অক্ষরগুলি) বড় বড় করা হয়।

উদাহরণস্বরূপ, যদি ইনপুট হয় A Quick Brown Fox Jumped Over The Lazy Dogতবে মূল অক্ষরের সূচকগুলি (0-ভিত্তিক) হয় 0, 2, 8, 14, 18, 25, 30, 34, 39। এর পরে, ইনপুট থেকে স্পেস সরান: AQuickBrownFoxJumpedOverTheLazyDog। এরপরে, সমস্ত অক্ষর ছোট করুন তবে সেগুলিতে বড় হাতের অক্ষর 0, 2, 8, 14, 18, 25, 30, 34, 39: AqUickbrOwnfoxJumpEdovertHelazYdogএটি আপনার আউটপুট।

ইনপুট

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

আউটপুট

ফাঁকা স্থানগুলির সাথে ইনপুট সরানো হবে, ছোট হাতের ডি - ইনপুট বড় হাতের অক্ষরে ইনপুট-তে বড় অক্ষরের সূচীতে অক্ষর থাকবে।

দ্রষ্টব্য: আপনার প্রোগ্রামটি সূচীআউটঅফ্রেঞ্জ বা অনুরূপ ত্রুটির সাথে ক্রাশ করতে পারে না (ত্রুটিযুক্ত এইরকম কার্যকরকরণ সমাপ্ত হয়)।

পরীক্ষার মামলা

Hi! Test!
Hi!tEst!

A Quick Brown Fox Jumped Over The Lazy Dog
AqUickbrOwnfoxJumpEdovertHelazYdog

testing TESTing TeStING testing testing TESTING
testingtESTIngteStInGTEstingtestingtestiNG

TESTING... ... ... success! EUREKA???!!! maybe, don't, NOOOOO
TESTING.........success!eureKA???!!!maybe,don't,nooooo

Enter        PASSWORD ---------
Enterpassword---------

A a B b C c D d E e F f G g H h I i J j K k L l M m N n O o P p Q q R r S s T t U u V v W w X x Z z
AabbCcddEeffGghhIijjKkllMmnnOoppQqrrSsttUuvvWwxxZz

  TEST
teST


'উদাহরণস্বরূপ, যদি ইনপুটটি "এ কুইক ব্রাউন ফক্স লাফিয়ে ওভার দ্য লজি ডগ" হয় তবে মূল অক্ষরের (0-ভিত্তিক) সূচকগুলি 0, 2, 8, 14, 18, 23, 27, 320, 2, 8, 14, 18, 25, 30, 34, 39
হ'ল

@ লুকাসকজাক আপনাকে ধন্যবাদ, আমার খারাপ
স্টিফেন

ট্র্যালিং স্পেসগুলি অনুমোদিত নয়, আমি ধরে নিই?
লুইস মেন্ডো

@ লুইস মেন্ডো আপনার অনুমানটি সঠিক। এই কোড-গল্ফ, তাই না? : পি
স্টিফেন

উত্তর:


7

জেলি , 14 13 বাইট

nŒlTɓḲFŒlŒuṛ¦

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

কিভাবে এটা কাজ করে

nŒlTɓḲFŒlŒuṛ¦  Main link. Argument: s (string)

 Œl            Convert s to lowercase.
n              Perform character-wise "not equal" comparison.
   T           Get the indices of all truthy elements, i.e., the indices of all
               uppercase letters in s. Let's call the resulting array J.
    ɓ          Begin a dyadic chain with left argument s and right argument J.
     ḲF        Split s at spaces and flatten, removing the spaces.
       Œl      Convert s to lowercase.
            ¦  Sparse application:
         Œu        Convert s to uppercase.
           ṛ       Take the resulting items of the uppercased string at all indices
                   in J, the items of the lowercased string at all others.


7

পাইথন 2 , 114 বাইট

x=input()
X=x.replace(' ','')
print''.join([X[i].upper()if x[i].isupper()else X[i].lower()for i in range(len(X))])

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

সমতুল্যভাবে:

পাইথন 2 , 114 বাইট

lambda x:''.join([[str.lower,str.upper][x[i].isupper()](x.replace(' ','')[i])for i in range(len(x)-x.count(' '))])

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


''.join([(X[i].lower,X[i].upper)[x[i].isupper()]()for i in range(len(X))])-5 বাইট জন্য।
ovs

5

পাইথন 3 , 78 75 72 বাইট

s=input()
for c in s:s=s[c>' '!=print(end=(c+c).title()[s<'@'or'['<s]):]

@ Xnor কে 6 বাইট বন্ধ করে দেওয়ার জন্য ধন্যবাদ!

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


আপনি কি sপরিবর্তে তুলনা করতে পারেন s[0]?
xnor

হ্যা অবশ্যই. ধন্যবাদ!
ডেনিস

1
(c*2).title()স্যুইচড সত্ত্বেও, আপনি উভয় ক্ষেত্রেই পেতে পারেন।
xnor

আরও 3 বাইট। আবার ধন্যবাদ!
ডেনিস

চতুর! এর c>' '!=f()সমতুল্য তা বের করতে আমাকে কিছুক্ষণ সময় নিল (c>' ') and (' '!=f())
চ্যাস ব্রাউন

5

05 এ বি 1 ই , 15 14 বাইট

-1 বাইট ধন্যবাদ Emigna

ðKuvy¹Nè.lil}?

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

ðK             # Remove spaces
  u            # Convert to uppercase
   vy          # For each character...
     ¹Nè       #   Get the character at the same index from the original input
        .lil}  #   If it was a lowercase letter change this one to lowercase
             ? # Print without a newline

আপনি স্থান-সরানো স্ট্রিংটি বড় হাতের না করে এবং শর্তে এটি ছোট করে রাখলে আপনি একটি বাইট সংরক্ষণ করুন।
এমিগনা

5

হাস্কেল , 98 95 89 88 81 বাইট

মোট 14 বাইট শেভ করতে সহায়তা করার জন্য @ নাম, @ নিমি, @ জগারব এবং @ লাইকনি ধন্যবাদ

import Data.Char
\s->zipWith(\p->last$toLower:[toUpper|isUpper p])s$filter(>' ')s

Ungolfed:

import Data.Char
\sentence -> zipWith (\oldChar newChar ->
                        if isUpper oldChar
                        then toUpper newChar
                        else toLower newChar)
                     sentence
                     (filter (/= ' ') sentence)

মোবাইলে, তবে দেখে মনে হচ্ছে আপনি ফিল্টার (/ = '') দিয়ে কিছু বাইট সংরক্ষণ করতে পারেন
হেনরি

হ্যাঁ, অবশ্যই পারেন অনুমানের অংশটি মিস করেছেন যে স্পেসগুলি কেবলমাত্র শ্বেতস্থান ছিল যা অপসারণের প্রয়োজন।
জুলিয়ান ওল্ফ

1
filter(>' ')এক বাইট
কমের

2
আমি মনে করি last(toLower:[toUpper|isUpper p])c
লাম্বদার দেহটি

অফ আর্গুমেন্ট স্যুইচিং zipWithআরও একটি বাইট সংরক্ষণ করা উচিত: f s=zipWith(\p->last$toLower:[toUpper|isUpper p])s$filter(>' ')s
লাইকনি

4

ভি , 24 বাইট

ÄVuÓó
ejlDò/¥2lõ
vuk~òGd

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

এই ধরণের চ্যালেঞ্জগুলি হ'ল ভি এর জন্য তৈরি হয়েছিল। :)

ব্যাখ্যা:

Ä           " Duplicate this line
 Vu         " Convert it to lowercase
   Óó       " Remove all spaces
e           " Move to the end of this line
 j          " Move down a line (to the original)
  l         " Move one char to the right
   D        " And delete the end of this line
    ò       " Recursively:
     /      "   Search for:
         õ  "     An uppercase character
      ¥2l   "     On line 2
            "     (This will break the loop when there are no uppercase characters left)
vu          "   Convert it to lowercase
  k         "   Move up a line
   ~        "   Convert this to uppercase also
    ò       " Endwhile
     G      " Move to the last line
      d     " And delete it

@DLosc ভাল প্রশ্ন! নতুন লাইনগুলি একটি রেজেক্সেক্স কমান্ডের সমাপ্তি যেমন বিকল্প (অপসারণ) বা অনুসন্ধান কমান্ডের ইঙ্গিত দেয়। আরও বিশদটি
DJMcMayhem


3

এলিস , 32 বাইট

/..- ~l+u~mSloy
\ia''-y.'Qa.+a@/

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

ব্যাখ্যা

এটি এমন প্রোগ্রামগুলির জন্য একটি স্ট্যান্ডার্ড টেম্পলেট যা পুরোপুরি অর্ডিনাল মোডে কাজ করে। মোড়ানো, প্রোগ্রামটি নীচে:

i.' -l.uQm.lay.a-'~y+'~aS+o@

i       take input as string
.       duplicate
' -     remove spaces from copy
l.u     create all-lowercase and all-uppercase versions
Q       reverse stack, so original string is on top
m       truncate original string to length of spaces-removed string
.lay    convert everything except uppercase characters to \n
.a-'~y  convert everything except \n (i.e., convert uppercase characters) to ~
+       superimpose with lowercase string
        \n becomes the corresponding lowercase character, and ~ remains as is
'~aS    convert ~ to \n
+       superimpose with uppercase string
        lowercase in existing string stays as is because it has a higher code point
        \n becomes corresponding uppercase character
o       output
@       terminate

3

জাভাস্ক্রিপ্ট (ES6), 94 91 85 বাইট

s=>s.replace(/./g,c=>c==" "?"":c[`to${"@"<s[x]&s[x++]<"["?"Upp":"Low"}erCase`](),x=0)
  • ইটিএইচ প্রোডাকশন এবং আরনল্ডের সহায়তায় 6 বাইট সংরক্ষণ করা হয়েছে।

চেষ্টা করে দেখুন

o.innerText=(f=

s=>s.replace(/./g,c=>c==" "?"":c[`to${"@"<s[x]&s[x++]<"["?"Upp":"Low"}erCase`](),x=0)

)(i.value="Hi! Test!");oninput=_=>o.innerText=f(i.value)
<input id=i><pre id=o>



আপনি করতে পারেন '@'<s[i]&s[i]<'['??
ETH প্রোডাকশনগুলি

@ স্টেপহেন: ওহ, মানুষ, আমি এই কাজ করার সময় গত রাতে দেখিনি।
শেগি

@ এইচটি প্রোডাকশন: আমি ভাবছিলাম যে এটি যদি কম হয় তবে আমি কোন অক্ষরগুলি ব্যবহার করতে চাই সেগুলি সন্ধান করতে আমি খুব অলস ছিলাম: ডি এটি দেখায় যে একটি বাইট সংরক্ষণ করতে পারে; ধন্যবাদ।
শেগি

3

রেটিনা , 77 71 বাইট

.+
$&¶$&
T`L `l_`.+$
+`((.)*)[A-Z].*(¶(?<-2>.)*)
$1$3 
.+¶

T`l `L_` .?

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার স্যুট অন্তর্ভুক্ত। ব্যাখ্যা: প্রথম পর্যায়ে রেখাটি সদৃশ করা হয় যখন দ্বিতীয় পর্যায়টি সদৃশটিকে ছোট করে তোলে এবং এর স্পেসগুলি মুছে দেয়। তৃতীয় পর্যায়ে তারপরে ডান থেকে বামে প্রতিটি বড় হাতের অক্ষরের মধ্য দিয়ে লুপ হয় এবং দ্বিতীয় লাইনে সংশ্লিষ্ট অক্ষরের আগে একটি স্থান রাখার চেষ্টা করা হয়। প্রথম লাইনটি মুছে ফেলা হয় এবং ফাঁকা স্থানগুলি ফলাফলের প্রাসঙ্গিক অক্ষরগুলি বড়হস্ত করতে ব্যবহৃত হয়। সম্পাদনা: @ কোবি ধন্যবাদ 6 টি বাইট সংরক্ষণ করা।


ছোট প্রশ্ন: (.?)এবং $4অংশগুলি প্রয়োজন? দেখে মনে হচ্ছে শেষ পর্যন্ত optionচ্ছিক গ্রুপ থাকা কোনও কাজ করে না।
কোবি

@ কোবি এই প্রশ্নটির চেয়ে ছোট কিছু নয়! এটি মূলত আলাদা আলাদা পদক্ষেপ হিসাবে অনুবাদ করার পরিবর্তে অক্ষরগুলি সরাসরি বড়হীন হওয়ার জন্য মিলিয়ে দেখার জন্য চেহারাগুলির ব্যবহারের চেষ্টাটির অংশ ছিল।
নীল

3

পার্ল, 95 94 + 1 = 95 বাইট

-N এর জন্য +1 বাইট জরিমানা

থেকে প্রতিস্থাপন পর এক বাইট সংরক্ষণ s/\s//gকরতেs/ //g

$s=$_;s/ //g;$_=lc($_);while(/(.)/gs){$p=$&;$p=uc($p)if(substr($s,$-[0],1)=~/[A-Z]/);print$p;}

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

ব্যাখ্যা:

  1. ইনপুট স্ট্রিংয়ের অনুলিপি তৈরি করুন।

  2. সমস্ত স্থান সরিয়ে ফেলুন এবং স্ট্রিংকে লোয়ার কেসে রূপান্তর করুন।

  3. তারপরে প্রতিটি অক্ষরের উপর লুপ শুরু করুন। উপরের ক্ষেত্রে সংরক্ষণের জন্য স্ট্রিংয়ে একই অবস্থানে টেস্ট লেটার। যদি এটি উচ্চতর হয় - বর্তমান অক্ষরকে বড় আকারের করুন। চিঠি প্রিন্ট।

নোট করুন যে পার্লটি "-n" কমান্ড লাইন সুইচ দিয়ে চালানো দরকার


পিপিসিজিতে আপনাকে স্বাগতম! আপনি যদি চান, আপনি এটি চেষ্টা করুন অনলাইনে একটি লিঙ্ক যুক্ত করতে পারেন: tio.run/# (আমি এটি যুক্ত করব, তবে আমি জানি না এটি পার্ল 5 বা পার্ল 6)
স্টিফেন

1
আমি মনে করি আপনি পতাকা +1জন্য বাইট গণনা করা প্রয়োজন -n। তা ছাড়াও এ দেখতে ভালো লাগছে! সাইটে স্বাগতম! :)
ডিজেএমসিএমহেম

@ স্টেপহেন এটি পার্ল ৫, আপনি কি লিঙ্ক যুক্ত করছেন? আমি সেখানে আমার কোডটি প্রপার পদ্ধতিতে চালাতে ব্যর্থ হয়েছি।
ভাইটেল

নতুন পার্ল গল্ফার দেখে খুশি! আমি আপনার উত্তরে টিআইও লিঙ্ক যুক্ত করেছি এবং ফর্ম্যাটিংয়ের উন্নতি করেছি।
দাদা


2

পাইথন 3 , 117 বাইট

s=input()
y=list(s.replace(' ','').lower())
i=0
for c in y:
 if s[i].isupper():y[i]=c.upper()
 i+=1
print(''.join(y))

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

এটি আমার প্রথম কোড গল্ফের চেয়ে অনেক সুন্দর, সুতরাং এটি খারাপ হতে পারে, নীচের মন্তব্যে মাইনাস সহায়তা!

পিএস হ্যাঁ, এটি নির্বোধ এবং বর্ধমান iবাইটস ওভার রেঞ্জের (লেন (y)) সংরক্ষণ করে। আচ্ছা ভালো.


1
পিপিসিজিতে আপনাকে স্বাগতম! চমৎকার প্রথম জমা! তবে, আমাদের সাইটের আই / ও মান মেনে চলতে হবে, আপনার জমাটি অবশ্যই স্ট্রিংয়ের ফাংশন হতে পারে অথবা ইনপুট নিতে হবে; আপনি ধরে নিতে পারবেন না ইনপুটটি একটি চলকতে রয়েছে। আশা করি আপনি আপনার এখানে অবস্থান করাটা উপভোগ করেছেন! :)
হাইপারনিউট্রিনো

ধন্যবাদ; এতে একটি ফাংশন সম্পাদনা করেছেন, তবে শরীরে 5 বাইট সংরক্ষণ করেছেন: ডি
লুক সাওকাক

1
@ লুকসাকজাক ইনডেন্টেশনের জন্য একটি স্পেসে পরিবর্তন করে একটি টন বাইট সংরক্ষণ করুন এবং সম্ভবত এটি অনলাইনে চেষ্টা করুন! লিঙ্কটি চাইলে
স্টিফেন

1
আপনি পরে স্থানটি মুছে ফেলতে পারেন return
ক্যালকুলেটরফলাইন

@ লুক্স সাওকজাক কেমন আছেন? tio.run/…
স্টিফেন


2

কাঠকয়লা , 33 বাইট

A⁰χFLθ¿⁼§θι A⁺¹χχ¿№α§θ⁻ιχ↥§θι↧§θι

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

যেহেতু আমি এখনও চারকোল কোডটিতে একক ইনপুট প্যারামিটার হিসাবে হোয়াইটস্পেসগুলির সাথে একটি স্ট্রিং পাস করতে জানি না, তাই আমি কেবল শিরোনামটিতে চারকোল ভেরিয়েবলের পরীক্ষার স্ট্রিংটি নির্ধারণ করি যা প্রথম ইনপুটটি কী উপস্থাপন করে ( θ):

AA Quick Brown Fox Jumped Over The Lazy Dogθ

কোডটিতে বাইটের সমান সংখ্যা রয়েছে যেন স্ট্রিংটি প্রথম ইনপুট হিসাবে পাস করা হয়েছে।

আপনি কোডটির ভার্বোজ সংস্করণটি দেখতে পাবেন ।


1
আমি অন্য উত্তরে বলেছিলাম তবে আপনি যদি ভুলে যান তবে একটি উপাদান দিয়ে পাইথন অ্যারে হিসাবে কেবল ইনপুট দিন
ASCII-

আমার কেবল ইনপুটটির একটি পেছনের নতুন লাইনের প্রয়োজন।
নীল

2

পিএইচপি, 181 বাইট

আমি বাইটের সংখ্যালঘু সংখ্যা পাওয়ার চেষ্টা করি, এটি আমার কোড:

<?php
$s=readline();
preg_match_all('/[A-Z]/',$s,$m,PREG_OFFSET_CAPTURE);
$s=strtolower(str_replace(' ','',$s));
while($d=each($m[0]))$s[$d[1][1]]=strtoupper($s[$d[1][1]]);
echo $s;

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


একটি কনস্ট্যান্ট পরিবর্তে PREG_OFFSET_CAPTUREআপনি মান ব্যবহার করতে পারেন 256, $argnযেমন একটি সংক্ষিপ্ত পরিবর্তনশীল readline()একটি ইনপুট জন্য এবং আমি মনে করি ctype_upperএবং ব্যবহার lcfirstএবং ucfirstএক লুপ এবং ব্যবহারের সঙ্গে বাইট প্রচুর সংরক্ষণ করতে হবে $$iএবং তিন অপারেটর
Jörg Hülsermann

2

জাভা 8, 184 177 161 বাইট

s->{String r="";for(int i=0,j=i,t,u;i<s.length;){t=s[i++];if(t>32){u=s[j++];r+=(char)(t<65|t>90&t<97|t>122?t:u>64&u<91?t&~32:u>96&u<123|u<33?t|32:t);}}return r;}

অবশ্যই আরও কিছু গল্ফ করা যেতে পারে ..
- 16 বাইট পরিবর্তে পরিবর্তে ইনপুট গ্রহণ করে @ অলিভিগ্রগ্রোয়ারকে ধন্যবাদ ।char[]String

ব্যাখ্যা:

এখানে চেষ্টা করুন।

s->{                           // Method with char-array parameter and String return-type
  String r="";                 //  Result-String
  for(int i=0,j=i,t,u;         //  Some temp integers and indices
      i<s.length;){            //  Loop over the String
    t=s[i++];                  //   Take the next character and save it in `t` (as integer)
                               //   and raise index `i` by 1
    if(t>32){                  //   If `t` is not a space:
     u=s[j++];                 //   Take `u` and raise index `j` by 1
     r+=                       //   Append the result-String with:
      (char)                   //    Integer to char conversion of:
       (t<65|t>90&t<97|t>122?  //     If `t` is not a letter:
        t                      //      Simply use `t` as is
       :u>64&u<91?             //     Else if `u` is uppercase:
        t&~32                  //      Take `t` as uppercase
       :u>96&u<123|u<33?       //     Else if `u` is lowercase or a space:
        t|32                   //      Take `t` as lowercase
       :                       //     Else:
        t);                    //      Take `t` as is
    }
  }                            //  End of loop
  return r;                    //  Return result-String
}                              // End of method

1
char[]এটির জন্য একটি স্ট্রিংয়ের পরিবর্তে নিন , আপনি প্রচুর পরিমাণে বাইট সঞ্চয় করবেন!
অলিভিয়ের গ্রাগোয়ার

অন্যদিকে, আমি অন্য একটি অ্যালগোরিদম দিয়েও উত্তর দিয়েছি । এবং এখানে, আমি বিপরীত যুক্তিগুলি গ্রহণ করি: ইন = String, আউট = char[]:-)
অলিভিয়ার গ্রোগোয়ার

2

কমন লিস্প, 104 বাইট

(defun f(s)(map'string(lambda(x y)(if(upper-case-p x)(char-upcase y)(char-downcase y)))s(remove #\  s)))

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

শব্দযুক্ত কমন লিস্পের জন্য অস্বাভাবিকভাবে সংক্ষিপ্ত!

সোজা কোড:

(defun f (s)                     ; receive the string as parameter
  (map 'string                   ; map the following function of two arguments
       (lambda (x y)             ; x from the original string, y from the string with removed spaces
         (if (upper-case-p x)    ; if x is uppercase
             (char-upcase y)     ; get y uppercase
             (char-downcase y))) ; else get y lowercase
       s
       (remove #\  s)))

2

জাভা (ওপেনজেডিকে 8) , 150 117 113 97 বাইট

s->{for(int i=0,j=0,c;i<s.length;)if((c=s[i++]&95)>0)System.out.printf("%c",c^(s[j++]|~c/2)&32);}

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

আরও গল্ফ করার সময়, আমি 102 বাইটে এসেছি:

s->{for(int i=0,j=0,c;i<s.length;)if((c=s[i++]&95)>0)System.out.printf("%c",c<64?c|32:c|s[j]&32,j++);}

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

তবে আমি মনে করি এটি ডেনিসের সি উত্তরের মতো দেখতে শুরু হয়েছিল তাই আমি কেবল তার বিট-টুইডলিংয়ের পোর্ট করেছি এবং ... যাদু ঘটেছে। বন্দর থেকে বড় লাভগুলি শাখাগুলি এবং এর ভিতরে পুনরাবৃত্তিগুলি সরিয়ে দিচ্ছে।


@ এসিলিংক্যাট যা কাজ করে না: Hi! Test!হওয়া উচিত Hi!tEst!তবে আপনার সমাধানের সাথে এটি হয়ে যায় Hi!Test
অলিভিয়ার গ্রোগোয়ার

2

গুগল শিটস, 213 বাইট

=ArrayFormula(JOIN("",IF(REGEXMATCH(MID(A1,ROW(OFFSET(A1,0,0,LEN(A1))),1),"[A-Z]"),MID(UPPER(SUBSTITUTE(A1," ","")),ROW(OFFSET(A1,0,0,LEN(A1))),1),MID(LOWER(SUBSTITUTE(A1," ","")),ROW(OFFSET(A1,0,0,LEN(A1))),1))))

ইনপুটটি ঘরে রয়েছে A1এবং সূত্রটি এরকমভাবে ভেঙে যায়:

  • ArrayFormula()আমাদের প্রতিটি পদটি ROW()স্বতন্ত্রভাবে মূল্যায়ন করতে দিন
  • JOIN() এই সমস্ত স্বতন্ত্র ফলাফলকে একক স্ট্রিংয়ে যুক্ত করে
  • IF(REGEXMATCH(),UPPER(),LOWER() ইনপুট ক্ষেত্রে কেসটি কী ছিল তার উপর নির্ভর করে আপার বা লোয়ার কেস ব্যবহার করে এটি বিকল্পটিকে কী করে তোলে
  • ROW(OFFSET())মূল্যবোধের একটি বিন্যাস দেখায় 1করার A1.lengthযে মধ্যে প্রতিপালিত করা যাবে MID()ফাংশন তাই আমরা ঘুরে প্রতিটি চরিত্র মূল্যায়ন করতে পারেন

পরীক্ষার কেসের ফলাফল: (আপনি যদি বড় সংস্করণে ক্লিক করেন তবে এটি পড়া সহজ))

TestCases



2

পার্ল, 92 বাইট

$p[$i++]=$-[0]while s/[A-Z]/lc($&)/e;s/\s//g;for$c(@p){substr($_,$c,1)=~tr[a-z][A-Z]};print;

ব্যাখ্যা:

$p[$i++]=$-[0]while s/[A-Z]/lc($&)/e;   #get locations of caps into an array at the same time converting letters to lowercase

s/\s//g;   #delete all spaces

for$c(@p){substr($_,$c,1)=~tr[a-z][A-Z]};   #convert lowercase letters to uppercase where uppercase letters were present

print;   # print (of course) :)

1
পিপিসিজিতে আপনাকে স্বাগতম! :)
স্টিফেন

-nআপনার উত্তরটি বৈধ করার জন্য আপনাকে পতাকা যুক্ত করতে হবে। কয়েকটি গল্ফিং জিনিস: s/ //gযথেষ্ট (প্রয়োজন নেই \s), y/a-z/A-Z/একই রকম tr[a-z][A-Z], আপনি -pপতাকা ব্যবহার করতে পারেন যাতে আপনার শেষের প্রয়োজন হয় না print, আপনার মধ্যে প্রথম বন্ধনী প্রয়োজন হয় না lc$&
দাদা



1

পাইথন 2, 106 105 বাইট

s=input()
print''.join(map(lambda(c,u):[c.lower,c.upper][u](),zip(s.replace(' ',''),map(str.isupper,s))))

সম্পাদনা করুন: print ''.join=> এর মাধ্যমে একটি বাইট সংরক্ষণ করুন print''.join

লাম্বদা ফর্ম, 99 বাইট

lambda s:''.join(map(lambda(c,u):[c.lower,c.upper][u](),zip(s.replace(' ',''),map(str.isupper,s))))


1

কিউ / কেডিবি +, 49 বাইট

সমাধান:

{@[a;(&)#:[a:lower x except" "]#x in .Q.A;upper]}

উদাহরণ:

q){@[a;(&)#:[a:lower x except" "]#x in .Q.A;upper]}"Hi! Test!"
"Hi!tEst!"

q){@[a;(&)#:[a:lower x except" "]#x in .Q.A;upper]}"A Quick Brown Fox Jumped Over The Lazy Dog"
"AqUickbrOwnfoxJumpEdovertHelazYdog"

q){@[a;(&)#:[a:lower x except" "]#x in .Q.A;upper]}"testing TESTing TeStING testing testing TESTING"
"testingtESTIngteStInGTEstingtestingtestiNG"

q){@[a;(&)#:[a:lower x except" "]#x in .Q.A;upper]}"TESTING... ... ... success! EUREKA???!!! maybe, don't, NOOOOO"
"TESTING.........success!eureKA???!!!maybe,don't,nooooo"

q){@[a;(&)#:[a:lower x except" "]#x in .Q.A;upper]}"Enter        PASSWORD ---------"
"Enterpassword---------"

q){@[a;(&)(#:[a:lower x except" "]#x)in .Q.A;upper]}"A a B b C c D d E e F f G g H h I i J j K k L l M m N n O o P p Q q R r S s T t U u V v W w X x Z z"
"AabbCcddEeffGghhIijjKkllMmnnOoppQqrrSsttUuvvWwxxZz"

q){@[a;(&)#:[a:lower x except" "]#x in .Q.A;upper]}"  TEST"
"teST"

ব্যাখ্যা:

সূচকগুলি সন্ধান করুন যেখানে ইনপুট বড় হাতের অক্ষরে রয়েছে এবং তারপরে upperইনপুট স্ট্রিংয়ের একটি ছোট, স্থান-সরানো সংস্করণে সেই সূচকগুলিতে ফাংশন প্রয়োগ করে । নোট করুন যে আমরা স্ট্রিংয়ের দৈর্ঘ্যের বাইরে ফাংশনটি প্রয়োগ করতে পারি না, সুতরাং #ইনপুট স্ট্রিংটি ছোট হাতের স্থান, স্থান-সরানো সংস্করণের দৈর্ঘ্যে কাটাতে ব্যবহার করুন ( )।

{@[a;where count[a:lower x except " "]#x in .Q.A;upper]} / ungolfed
{                                                      } / lambda function
 @[ ;                                           ;     ]  / apply FUNC to VAR at INDICES: @[VAR;INDICES;FUNC]
                                                 upper   / uppercase, upper["abc"] -> "ABC"
                                       x in .Q.A         / boolean list where input is in uppercase alphabet ABC..XYZ
                                      #                  / take this many elements from list on the right (ie truncate)
           count[                    ]                   / returns length of the stuff inside the brackets, count["ABC"] -> 3                                        
                         x except " "                    / remove " " from string
                   lower                                 / lowercase, lower["ABC"] -> "abc"
                 a:                                      / save in variable a
     where                                               / returns indices where true where[101b] -> 0 2
   a                                                     / our lowercased, space-stripped input

বোনাস:

উত্তরগুলি পড়ার পরে, ভেবেছিলাম যে আমি একটি সমাধান চেষ্টা করব যেখানে আমি ইনপুটটিতে পুনরাবৃত্তি করব, এখন পর্যন্ত আমি কেবল একটি 53 বাইট সমাধান পরিচালনা করেছি:

{a{$[y in .Q.A;upper x;x]}'#:[a:lower x except" "]#x}


1

পার্ল 5 , 40 বাইট

কোড + -Fপতাকা 37 বাইট । (নোট করুন যে পার্লের পুরানো সংস্করণগুলিতে আপনার -anপতাকা যুক্ত করতে পারে )

print$F[$i++]=~/[A-Z]/?uc:lc for/\S/g

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

ব্যাখ্যা:
ধন্যবাদ -F, @Fইনপুট প্রতিটি অক্ষরের একটি তালিকা রয়েছে।
for/\S/gইনপুটটির প্রতিটি অ-স্থান অক্ষরকে পুনরাবৃত্তি করে। আমরা $iকোন পুনরাবৃত্তিতে তা গণনা করি। যদি $F[$i++]বড় হাতের অক্ষর হয় ( /[A-Z]/), তবে আমরা বড় হাতের বর্তমান অক্ষর ( uc) মুদ্রণ করি, অন্যথায়, আমরা এটিকে ছোট হাতের ( lc) মুদ্রণ করি । এটি নোট করুন ucএবং lcতাদের যুক্তিটি যদি কোনও চিঠি না থাকে তবে অপরিবর্তিত রাখুন।


পূর্ববর্তী সংস্করণ (কম গল্ফড: 47 বাইট):

 s/ //g;s%.%$_=$&;$F[$i++]=~/[A-Z]/?uc:lc%ge

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.