বিভক্ত এবং মূলধন


14

চ্যালেঞ্জ:

নির্দিষ্ট পজিশনে একটি স্ট্রিং বিভক্ত দেওয়া এবং প্রদত্ত শব্দের প্রথম অক্ষরকে বড় করে দিন। প্রথম শব্দের প্রথম চরটি মূলধন করুন যদি এবং কেবলমাত্র এটি ইতিমধ্যে মূলধন হয়ে থাকে

ইনপুট :

একটি স্ট্রিং sএবং একটি চরিত্র c

আউটপুট:

cপ্রথম অক্ষরের সাথে প্রতিস্থাপিত প্রতিটি সংঘের স্ট্রিং

উদাহরণ:

STRING(s)             CHARACTER(c)  RESULT
Hello_world           _             HelloWorld
me,no,like            ,             meNoLike
you-got-it            -             youGotIt
Am^I^clear            ^             AmIClear
go!full!caps          !             goFullCaps
weird&but&tRue        &             weirdButTRue
ProbleM1fixed1no      1             ProbleMFixedNo
!prob!!lem!s!Olved!!  !             ProbLemSOlved

বিঃদ্রঃ :

  • প্রদত্ত ইনপুট সর্বদা কার্যকর হবে। অর্থাত্: প্রথমটি অক্ষরে প্রতিস্থাপনের জন্য সর্বদা কমপক্ষে একটি অক্ষরের স্ট্রিং থাকবে be দ্বিতীয়টি সর্বদা একক চরিত্রে থাকবে।
  • ইনপুট স্ট্রিংয়ের দৈর্ঘ্য 4 টি বেশি হবে।
  • চরিত্রটিতে বিভক্ত হওয়ার জন্য কমপক্ষে একটি ঘটনা ঘটবে।

  • ইনপুটটিতে কেবলমাত্র অক্ষর এবং বিভাজক (গ্লোবাল @ আরনাউল্ড) থাকার গ্যারান্টিযুক্ত

  • পৃথককারী এমন কোনও কিছু যা বর্ণমালা নয় (আজ / এজেড) (@ ডেনিস প্রস্তাবিত)

জয়ের মানদণ্ড:

এটি তাই প্রতিটি ভাষার জয়ের জন্য বাইটের মধ্যে সংক্ষিপ্ততম কোড।


  1. দুটি ভুল উল্লেখ করার জন্য @ জোনাথন অ্যালানকে ধন্যবাদ

7
পরীক্ষার কেসগুলি তৈরি করার সময় টিপস: কমপক্ষে একটি কোণার কেসকে প্রতিটি কভার করুন। আপনার সমস্ত পরীক্ষার কেসগুলি মূলত অভিন্ন (সম্ভবত একটিটি ছাড়া 1)। কীভাবে সমাধানগুলি ব্যর্থ হতে পারে সে সম্পর্কে চিন্তা করার চেষ্টা করুন এবং এই জাতীয় পরিস্থিতির জন্য একটি পরীক্ষার কেস তৈরি করুন। কয়েকটি উদাহরণ: পৃথককারী হিসাবে চিঠিগুলি, বিভাজকটি সর্বশেষ চরিত্র হিসাবে, পরপর বিভাজক ইত্যাদি and বিভিন্ন পরীক্ষার কেসগুলির প্রয়োজন নেই যা বিভিন্ন জিনিস পরীক্ষা করে না।
স্টিভি গ্রিফিন

আপনি সর্বশেষ পরীক্ষার ক্ষেত্রে একটি ডিলিমিটার মিস করছেন - একটি হওয়া উচিত! আছে। আমি নিজে এটি সম্পাদনা করব, তবে আমার এটি করার জন্য পর্যাপ্ত অক্ষর নেই।
ওলিয়েন

1
অনুমানের একাধিক পরিবর্তনের কারণে আমি এটিকে হ্রাস করেছি। সাইডনোটে, আপনাকে শেষ পরীক্ষার মামলার চেয়ে খুব শীঘ্রই উল্লেখ করতে হবে যে স্ট্রিংটিতে পরপর 2 বা ততোধিক "বিভাজক" থাকতে পারে এবং আমাদের কোনও গ্যারান্টি নেই যে কোনও চিঠি সর্বদা "বিভাজক" অনুসরণ করবে।
শেগি

2
আমি এটি সন্ধান করলাম: স্টিভি কোনও পরীক্ষার ক্ষেত্রে পরামর্শ দেয়নি, তবে তিনি জিজ্ঞাসা করেছিলেন যে প্রথম বা শেষ চরিত্রটি বিভাজক হতে পারে এবং পরপর বিভাজনকারী হতে পারে কিনা। ভবিষ্যতে, দয়া করে লাইভে যাওয়ার আগে এই সমস্ত বিশদটি বাছাই করতে স্যান্ডবক্স ব্যবহার করে বিবেচনা করুন। নির্দিষ্টকরণের পরিবর্তনের কারণে আপনার উত্তর অকার্যকর হওয়া হতাশ। সবার মধ্যে সবচেয়ে আশ্চর্য হ'ল প্রোগ্রামটির প্রয়োজন না থাকলেও চরিত্রটিকে ইনপুট হিসাবে নেওয়ার সীমাবদ্ধতা। এটি মোটেই বোঝা যায় না।
ডেনিস

1
আমরা কি বিভাজকের সাথে একটি পরীক্ষা-মামলা .করতে পারি, আমি কল্পনা করতে পারি যে স্ট্রিং বিভাজক ফাংশনগুলির সাথে লড়াই করে।
জেএডি

উত্তর:




5

জাভাস্ক্রিপ্ট (ES6), 58 56 বাইট

@ L4m2 / @ ডাউনগোটকে 2 বাইট সংরক্ষণ করা হয়েছে

বাক্য গঠন সিনট্যাক্সে ইনপুট নেয় (s)(c)

s=>c=>s.replace(u=/./g,x=>u=x==c?'':u?x:x.toUpperCase())

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

মন্তব্য

s => c =>                  // given s and c
  s.replace(u = /./g, x => // initialize u to a RegExp; replace each character x in s with,
    u =                    // and update u to:
      x == c ?             //   if x is the separator:
        ''                 //     an empty string
      :                    //   else:
        u ?                //     if u is not an empty string:
          x                //       x unchanged
        :                  //     else:
          x.toUpperCase()  //       x capitalized
  )                        // end of replace()

সান্ত্বনা 56 বাইটের জন্য s=>c=>s.replace(RegExp(c+".","g"),m=>m[1].toUpperCase()), যেহেতু এটি বিশেষ রেজেক্স চরিত্রগুলির জন্য কাজ করে না
কনর ও'ব্রায়েন

50 বাইট । অথবা 47 আপনি দ্বিতীয় ইনপুট নিতে বিরক্ত না করলে এটি অপ্রাসঙ্গিক।
শেগি

1
@ শেগি ধন্যবাদ! আমি এটিকে একটি পৃথক সংস্করণ হিসাবে যুক্ত করেছি, যেহেতু নতুন বিধিগুলি মূলগুলি থেকে বেশ আলাদা।
আর্নল্ড

1
ব্যর্থ!prob!!lem!s!Olved!!
l4m2

@ l4m2, এটি একটি নতুন পরীক্ষার কেস যা আবার অনুমানটিকে পরিবর্তন করে । RegEx এ থাকা এর +আগে একটি .এটি পেয়ে যাবে।
শেগি


3

সেড 4.2.2 (-আর), 21

s/[^a-z]+(.)?/\u\1/gi

আমি \Wপরিবর্তে চেষ্টা করেছি [^a-z], কিন্তু দুর্ভাগ্যক্রমে এটি মেলে না _

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


আমাদের নতুন মানদণ্ড অনুসারে, পতাকাগুলির প্রতিটি অনুরোধকে আলাদা একটি ভাষা হিসাবে বিবেচনা করা হয়, এবং এইভাবে আপনার উত্তরটি পরিবর্তিত হতে পারে sed 4.2.2 (-r), 21 bytes
মিঃ এক্সকোডার 16'12

@ মিঃ এক্সকোডার ভাল লাগছে - ধন্যবাদ!
ডিজিটাল ট্রমা

3

জেলি , 8 বাইট

Œt⁸1¦«⁸ḟ

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

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

Œt⁸1¦«⁸ḟ  Main link. Left argument: s (string). Right argument: c (character).

Œt        Title case; capitalize the first character of each word.
  ⁸1¦     Replace the first character of the result with the first character of s.
     «⁸   Take the character-wise minimum of the result and s.
          Note that uppercase letters have lower code points than lowercase ones.
       ḟ  Filterfalse; remove all occurrences of c.

3

অক্টাভা , 83 , 66 , 64 বাইট

2 বাইট সংরক্ষণ করেছেন লুইস মেন্ডোকে ধন্যবাদ। upperপরিবর্তে toupper

@(s,c,k=upper(s(i=find(s==c)+1)))[strsplit({s(i)=k,s}{2},c){:}];

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

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

ব্যাখ্যা:

যুক্তি তালিকার ইনপুট:

@(s,c,k        % An anonymous function that may take three input variables, s, c, k
               % where the third argument has the default value:
 k=upper(s(i=find(s==c)+1))

kএখানে sপ্রতিটি বিভাজকের পরে প্রথম চরিত্র c, বড় হাতের অক্ষরে রূপান্তরিত। প্রতিটি মূলধনী অক্ষরের সূচকটি সঞ্চিত থাকে i

সেল অ্যারে বডি:

আমরা দুটি উপাদান দিয়ে একটি সেল অ্যারে তৈরি করি, একটিতে আমরা বলেছিলাম যে সমস্ত চরিত্রগুলি এর সমমনা দ্বারা প্রতিস্থাপিত করা উচিত k, এবং অন্যটি দিয়ে s, এটি ইতিমধ্যে আপডেট করা হয়েছে। আমরা এটি ব্যবহার করে সূচি দিয়েছি {2}যাতে আমরা কেবল পুরো, পরিবর্তিত স্ট্রিংটি ফিরে পাই। এটি খাওয়ানো হয় strsplit, যা এটি পৃথককারী চরিত্রের কোষগুলিতে বিভক্ত করে। আমরা এটি ব্যবহার করে কমা-বিচ্ছিন্ন তালিকায় রূপান্তর করি{:} এবং স্কোয়ার বন্ধনী ব্যবহার করে এটি স্ট্রিংয়ে ফিরে যুক্ত করি []

দুঃখিত যদি এটি আপনার কাছে কোনও অর্থবোধ করে না ... এটি সবেমাত্র আমার কাছে উপলব্ধি করে: পি


3

রেটিনা 0.8.2 , 20 বাইট

T`lLp`LL_`[\W\d_]+.?

এটি অনলাইন চেষ্টা করুন! কেবল স্ট্রিং নেয়, separaচ্ছিক পৃথক। বর্ণমালাবিহীন সমস্ত অক্ষর মুছে ফেলা হয়েছে তবে নিম্নলিখিত বর্ণমালার কোনও অক্ষর বড়হীন। পূর্ববর্তী 34-বাইট সংস্করণ স্বেচ্ছাসেবক ইনপুট গ্রহণ করেছে:

T`l`L`(?=.*(.)$)\1+.
(?=.*(.)$)\1

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

উভয় সমাধানের জন্য ডান থেকে বামে ম্যাচের পরিবর্তে ব্যবহার +করাও কাজ করে।


যেহেতু ইনপুটটিতে কেবল বর্ণানুক্রমিক অক্ষর এবং বিভাজক রয়েছে তার জন্য গ্যারান্টিযুক্ত, সুতরাং আপনি [^a-z]চেহারাগুলির পরিবর্তে এটি ব্যবহার করতে পারেন অনলাইনে চেষ্টা করুন!
ব্যবহারকারী 41805


2

রাদা , 57 54 বাইট

-৩ বাইট ধন্যবাদ গরুর কোয়েস্টকে

{(_/`\Q$_`)|{pull;[upperCase(_[:1]),_1[1:]]if[#_1>0]}}

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

ব্যাখ্যা:

{
  (_/`\Q$_`)| /* Pull two strings and split the first with the second */
  {
    pull;                /* Pull one string and print it */
                         /* For each string _1 in the stream: */
                         /*   If _1 is not empty: */
    [                    /*     Print: */
      upperCase(_[:1]),  /*       The first character capitalized */
      _1[1:]             /*       The rest of characters */
    ]if[#_1>0]           /*   End if */
  }
}

আপনি খুঁজে চলে যাবে \ERegex থেকে, এবং _[0:1]_[:1]
user41805

2

ভি , 6 7 বাইট

যুক্তি ব্যবহার না করে 1 বাইট সংরক্ষণ করা হয়েছে

ÓÁˆ/õ±

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

প্রোগ্রামটি পাঠ্যটিকে ইনপুট হিসাবে এবং চার্টটিকে একটি আর্গুমেন্ট হিসাবে গ্রহণ করে।

Hexdump:

00000000: d3c1 882f f5b1                           .../..

এটি একটি সহজ বিকল্প। সঙ্কুচিত, এটি নীচের মত দেখাচ্ছে

:s/\A(.)/\u\1/g

একটি বিশ্বব্যাপী প্রতিস্থাপন সম্পাদন করুন যেখানে \Aএকটি অক্ষরহীন অক্ষর এবং তারপরে একটি অক্ষর (.)বড় বড় \uপ্রথম ক্যাপচার গোষ্ঠীর সাথে প্রতিস্থাপন করা হবে\1


cকোনও বিশেষ রেইজেক্স চরিত্র যেখানে ইনপুটটির জন্য কাজ করে না
কনর ও'ব্রায়েন

1
@ কনরোও ব্রায়ান স্থির হয়ে গেছে এবং এর জন্য আমি একটি সংক্ষিপ্ত সমাধান পেয়েছি: ডি
ইউজার 41805

2

স্কালা, 83 বাইট

def f(s:String)={val w=s.split("[^a-zA-Z]");w(0)+w.tail.map(_.capitalize).mkString}

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

ব্যাখ্যা:

def f(s: String) = {                        // takes a String "s" as input
  val w = s.split("[^a-zA-Z]");             // split on non-alpha chars
  w(0) + w.tail.map(_.capitalize).mkString  // upper case first letter of all words except first one and join array into a String
}                                           //



1

পিএইচপি, 91 83 বাইট

$a=explode($argv[2],$argv[1]);echo array_shift($a);foreach($a as$i)echo ucfirst($i);

সাথে চালাও -r। বিস্ফোরণের পরিবর্তে বিভাজন ব্যবহার করে 2 বাইট সংক্ষিপ্ত ছিল, কিন্তু ge পরীক্ষা রেজেসের কারণে ব্যর্থ হয়।

-8 ধন্যবাদ মেড


1
আপনি লুপটি অপসারণ করতে {এবং }থেকে এটিকে সরাতে পারেন , এটি কেবলমাত্র পরবর্তী বিবৃতিটিকে শর্তের মূল হিসাবে বিবেচনা করবে।
মেডি

1
: এমনকি আপনি লুপ ভিতরে প্রতিধ্বনি কি করতে পারেন$a=explode($argv[2],$argv[1]);echo array_shift($a);foreach($a as$i)echo ucfirst($i);
মেড



0

হুশ , 10 বাইট

ΣΓ·:mΓo:ax

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

ব্যাখ্যা

ΣΓ·:mΓ(:a)x  -- example inputs: 'x' "abxbcxcdxdex"
          x  -- split on character: ["ab","bc","cd","de"]
 Γ           -- pattern match (x = head) (xs = tail) and do..
  ·:         -- | construct list (x:xs) but with the second argument do..
    m        -- | | map (eg. "bc")
     Γ(  )   -- | | | pattern match on first character
      ( a)   -- | | | | upper-case it
      (: )   -- | | | | and join again
             -- | | | : "Bc"
             -- | | : ["Bc","Cd","De"]
             -- : ["ab","Bc","Cd","De"]
Σ            -- concatenate: "abBcCdDe"


0

জাভা 10, 141 বাইট

s->c->{var r=s.split("\\"+c);var r=a[0],t;for(int i=0;++i<a.length;r+=t.isEmpty()?"":(char)(t.charAt(0)&~32)+t.substring(1))t=a[i];return r;}

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

ব্যাখ্যা:

s->c->{                    // Method with String and character parameters and String return-type
  var r=s.split("\\"+c);   //  Split String by character (with potential regex char)
  var r=a[0],              //  Result-String, starting at the first item
      t;                   //  Temp-String to reduce bytes
  for(int i=0;++i<a.length;//  Loop in the range [1, length_of_array)
      r+=                  //    After every iteration: append the result-String with:
         t.isEmpty()?      //     If the current item empty:
          ""               //      Append nothing
         :                 //     Else:
          (char)(t.charAt(0)&~32)
                           //      Capitalize the first character
          +t.substring(1)) //     And append the other characters as is
    t=a[i];                //   Set `t` to the current String-item of the array
  return r;}               //  Return the result-String

0

আর , 87 বাইট

g<-function(s,x,z=strsplit(s,x,T)[[1]])cat(z[1],capwords(z[-1]),sep="")
example(chartr)

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

এই কৌশলটি ব্যবহার করে সঠিকভাবে Tio মধ্যে মৃত্যুদন্ড কার্যকর করতে যাবে না তাই আমি এটা কৃত্রিম।

আমাদের Tঅন্যথায় পরীক্ষার কেসগুলির একটি ব্যর্থ হওয়া দরকার।


0

স্ট্যাক্স , 11 বাইট

óKo{cplòüö\

এটি চালান এবং এটি ডিবাগ করুন

ব্যাখ্যা

/BsF1:/s^s|dl                 # Full Program, unpacked, Implicit Input
/                             # Split on substrings (Split input with symbol to split on)
 B                            # Remove first element from array. Push the tail of the array, then the removed element.
  s                           # Swap first two elements of stack
   F                          # Start for loop
    1:/                       # Split array at index; push both parts.
       s^s                    # Swap first two elements of stack, capitalize character, swap first two elements 
         |dl                  # Get length of stack, listify that amount (entire stack), implicit output of array

কয়েকটি অংশ রয়েছে যা আমি সত্যিই কোনওভাবে ঠিক করতে চাই। আমি এটি প্রায় 8 বাইটে নামতে পারি, তবে এটি শেষ পরীক্ষার ক্ষেত্রে ব্যর্থ হয় <<


0

রুবি -pl , 36 বাইট

$_.gsub!(/[^a-z]+(.|$)/i){$1.upcase}

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

দ্বিতীয় যুক্তি ছাড়াই কেবল স্ট্রিং নেয়। gsub!পদ্ধতির ব্লক সংস্করণ ব্যবহার করে কারণ সাধারণ gsub! x,yবাক্য গঠন $1সহ সহজেই ম্যাচের ডেটা ভরা হয় না। |$শেষভাগে বিভাজক সহ পরীক্ষার ক্ষেত্রে রেজেক্সে প্রয়োজনীয়।


0

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

o=[]
for x in s.split(c): o.append(chr(ord(x[0])-32)+x[1:])
print(''.join(o))

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

এটি ধরে নিয়েছে যে স্ট্রিংটি ASCII এনকোডযুক্ত এবং ধরে নেওয়া হয়েছে sএবং cইনপুট সমেত প্রিললোড করা ভেরিয়েবল।

for x in s.split(x)       #loop through items in the string s split by x
    o.append(             #add the following to c
        chr(              #turn the following number into a character
            ord(          #turn the following character into a number
                x[0]      #the first character in string x
            )-32          #subtract 32 from this number
        +x[1:]            #add everything past and including the second character in string x

এই সমাধানটি ASCII এনকোডিং-এ, ছোট হাতের অক্ষরগুলি বড় বড় অক্ষরের পরে 32 টি এন্ট্রিগুলিতে অবস্থিত হয় এই বিষয়টি নিয়ে কাজ করে

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


কী হওয়ার sকথা?
মুহাম্মদ সালমান

@ মুহাম্মাদসালম্যানA string s and a character c.
ডেভিন মিলার

সুদৃশ্য, এটি কাজ করুন, এখানে যান এবং দেখুন এটি কার্যকর হয় কিনা: টিআইও । এটা কখন আমাকে বলবে?
মুহাম্মদ সালমান

ওহো! ভেরিয়েবলের নামগুলি পরিবর্তন করার সময় আমি ঠিক বুঝতে পেরেছিলাম, সি = [] অন্য কোনও চলক হওয়ার কথা
ড্যাভেন মিলার

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