ইনপুট প্রতিটি শব্দের প্রথম অক্ষর বড় করুন


34

এটি তুলনামূলকভাবে দ্রুত, তবে আমি নিশ্চিত যে আপনি এটি পছন্দ করবেন।

কোডগল্ফ এমন একটি প্রোগ্রাম যা বাক্য আকারে ইনপুট নেবে এবং তারপরে প্রতিটি শব্দের মূলধনযুক্ত প্রথম অক্ষরের সাথে আউটপুট সরবরাহ করবে।

নিয়মাবলী:

  1. জমাগুলি কোনও ফাংশন আকারে নাও থাকতে পারে। সুতরাং না:

    function x(y){z=some_kind_of_magic(y);return z;} আপনার চূড়ান্ত উত্তর হিসাবে ... আপনার কোড অবশ্যই দেখায় যে এটি ইনপুট নেয় এবং আউটপুট সরবরাহ করে।

  2. কোডটি অবশ্যই ইনপুটটিতে থাকা অন্য কোনও মূল অক্ষর সংরক্ষণ করতে হবে। সুতরাং

    eCommerce and eBusiness are cool, don't you agree, Richard III?
    

    হিসাবে রেন্ডার করা হবে

    ECommerce And EBusiness Are Cool, Don't You Agree, Richard III?
    
  3. আপনারা কেউ হয়ত ভাবছেন, "সহজ, আমি কেবলমাত্র রেইগেক্স ব্যবহার করব!" এবং সুতরাং আপনার নির্বাচিত গল্ফিং ভাষায় নেটিভ রেজেক্স ব্যবহার করে 30 টি অক্ষর জরিমানা লাগবে যা আপনার চূড়ান্ত কোড গণিতে প্রয়োগ করা হবে। দুষ্ট হাসি

  4. এই ক্ষেত্রে একটি "শব্দ" কোনও স্থান দ্বারা পৃথক পৃথক কিছু। সুতরাং palate cleanserদুটি শব্দ, যেখানে pigeon-toedএকটি শব্দ হিসাবে বিবেচিত হয়। if_you_love_her_then_you_should_put_a_ring_on_itএকটি শব্দ হিসাবে বিবেচিত হয়। যদি কোনও শব্দ একটি অ বর্ণানুক্রমিক চরিত্রের সাথে শুরু হয় তবে শব্দটি সংরক্ষণ করা হয়, তাই _thisরেন্ডারিংয়ের পরে যেমন থাকে তেমন _this। (এই পরীক্ষার কেসটি দেখানোর জন্য মার্টিন বাটনারকে কুডোস)।

    • 4b। কোনও গ্যারান্টি নেই যে ইনপুট বাক্যাংশের শব্দগুলি একটি একক স্পেস দ্বারা পৃথক করা হবে।
  5. পরীক্ষার কেস, (দয়া করে আপনার কোড পরীক্ষা করতে ব্যবহার করুন):

    ইনপুট:

    eCommerce rocks. crazyCamelCase stuff. _those  pigeon-toed shennanigans. Fiery trailblazing 345 thirty-two Roger. The quick brown fox jumped over the lazy dogs. Clancy Brown would have been cool as Lex Luthor. good_bye
    

    আউটপুট:

    ECommerce Rocks. CrazyCamelCase Stuff. _those  Pigeon-toed Shennanigans. Fiery Trailblazing 345 Thirty-two Roger. The Quick Brown Fox Jumped Over The Lazy Dogs. Clancy Brown Would Have Been Cool As Lex Luthor. Good_bye
    
  6. এটি কোড গল্ফ, সংক্ষিপ্ততম কোড জয় ...

শুভকামনা ...


1
লাইনের শেষে স্পেসগুলি সম্পর্কে কী? আমাদের কি তা সংরক্ষণ করতে হবে? এটি আমাদের চাহিদা পূরণ করে যদি আমরা একটি যুক্ত করতে পারি?
ডেনিস

2
ডেনিস, দয়া করে ইনপুট থেকে স্পেসগুলি সংরক্ষণ করুন ...
ওলি ওয়েস্ট

3
! = টাইটেল কেসে বাঁধ! সি # আবার হারায়!
ইওয়ান

1
@ টিম কবুতর টোডের আগে ডাবল স্পেসটি সঠিক । তিনি স্পেসিং সংরক্ষণ করতে বলেছিলেন।
mbomb007

2
কথাগুলি কী আলাদা করে? কোন শ্বেত স্পেস (ট্যাবস, নিউলাইনস, ইত্যাদি) বা কেবল ফাঁকা স্থান?
স্টিভেন রাম্বালস্কি

উত্তর:


21

সিজেম, 15 13 বাইট

Lq{_eu?_S-}/;

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

pseudocode

L             e# B := ""
 q            e# Q := input()
  {       }/  e# for C in Q:
   _eu?       e#     C := B ? C : uppercase(C)
       _S-    e#     B := string(C).strip(" ")
            ; e# discard(B)

সমস্ত পরিবর্তিত অক্ষর সি স্ট্যাকের উপর রেখে গেছে এবং তাই প্রস্থান করার সময় মুদ্রণ করা হয়।


3
অভিশাপ এই চালাক। ডি:
মার্টিন ইন্ডার

আমার একমত হতে হবে, একটি কোডগল্ফ ভাষায় 4 টি চর দ্বারা কাউকে আউটগল্ফ করা নিজের মধ্যে একটি কীর্তি ... ভাল হয়েছে।
ওয়ালিওয়েস্ট

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

13

সিএসএস 2.1, 49

:after{content:attr(t);text-transform:capitalize}

ব্যাখ্যা :

  • attrফাংশন একটি থেকে ইনপুট নেয় t(পাঠ্য) এইচটিএমএল অ্যাট্রিবিউট।
  • ইনপুটটি সেট text-transformকরে মূলধন করা হয় capitalize
  • সিউডো-এলিমেন্টেcontent সম্পত্তি ব্যবহার করে আউটপুটটি উত্পন্ন সামগ্রী হিসাবে সরবরাহ করা হয় ।::after

চলমান স্নিপেট :

:after {
    content: attr(t);
    text-transform: capitalize;
}
<div t="eCommerce rocks. crazyCamelCase stuff. _those  pigeon-toed shennanigans. Fiery trailblazing 345 thirty-two Roger. The quick brown fox jumped over the lazy dogs. Clancy Brown would have been cool as Lex Luthor. good_bye"></div>

দ্রষ্টব্য : সিএসএস ২.১ পছন্দসই আচরণটি নির্দিষ্ট করেছে: capitalizeপ্রতিটি শব্দের প্রথম অক্ষরকে বড় করে ফেলেছে। যাইহোক, CSS3 প্রতিটি শব্দের প্রথম টাইপোগ্রাফিক চিঠি ইউনিট বড় করে তোলে । সুতরাং উপরের স্নিপেটটি পুরানো আইআই তেও সঠিকভাবে কাজ করবে না, যা সিএসএস ২.১ অনুসরণ করে না; অথবা CSS3 অনুসরণকারী নতুন অনুগত ব্রাউজারগুলিতে নয়।


ওহ, এই চালাক!
আইকিউ আন্দ্রেয়াস

1
( _thoseসিএসএস 3 ব্রাউজারগুলিতে সমস্যাটি সম্পর্কে খুব খারাপ , তবে সমস্যাটি সমাধানের অনন্য পদ্ধতির কারণে আমি এখনও উত্সাহ দিচ্ছি))
আইকিউআন্ড্রিয়াস

@ ওরিওল, "ওহ এটি চালাক!" প্রকৃতপক্ষে! দুঃখিত IQAndreas, আমি আপনার মন্তব্য এখানে ধার করতে হবে ... সমস্যা সমাধানের জন্য এটি একটি
উদ্ভাবনী

10

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

alert(prompt().split(' ').map(x=>x&&x[0].toUpperCase()+x.slice(1)).join(' '))

মন্তব্য

alert( // output
    prompt(). // take input
    split(' '). // split by spaces
    map(x=> // map function to array
        x && // if x, empty string "" is falsey and returns itself
        x[0].toUpperCase() + x.slice(1) // capaitalize 1st char and concatenate the rest
    ).
    join(' ') // join array with spaces
)

শব্দগুলি একাধিক স্পেস দ্বারা পৃথক করা হলে কী হবে? [4 বি]
কেইক

3
@ কেক এটি পরিচালনা করেছেন x&&। একটি খালি স্ট্রিং মিথ্যা তাই &&শর্ট সার্কিটগুলি এবং বাম অপারেন্ডটি খালি স্ট্রিং দেয়। স্পেস সংরক্ষণ করা হয়।
nderscore

দুর্দান্ত, ব্যাখ্যাটির জন্য ধন্যবাদ। আমি কীভাবে এটি এখন কাজ করতে পারি তা বুঝতে আমাকে সহায়তা করতে পারে।
Caek

এটি এমনকি অস্কি অক্ষরকেও বড় করে তুলবে, যাতে å হয়ে যাবে Å!
লিও

9

পার্ল, 13 বাইট

perl -040pe '$_="\u$_"'

9 বাইট প্লাস 4 বাইটের জন্য 040p(ধরে নিলাম আমি বিশেষ নিমন্ত্রণগুলির নিয়মগুলি সঠিকভাবে ব্যাখ্যা করেছি )।

-040ইনপুট রেকর্ড পৃথককারীকে $/একটি একক স্থানে সেট করে , তাই স্পেসগুলি সংরক্ষণ করা হয়; \uপালাবার ক্রম শিরোনাম ক্ষেত্রে পরবর্তী অক্ষরে পরিবর্তন করে।


দুর্দান্ত কাজ, কমান্ড লাইন ব্যবহার করার জন্য সম্মানজনক উল্লেখ!
ওয়েলওয়েস্ট

7

সিজেম, 17 15 বাইট

lS/{S+(eu\+}/W<

এটি এখানে পরীক্ষা করুন।

অনুমানটির মোটামুটি সরল বাস্তবায়ন। নতুন করতে ব্যবহার {}&পরপর ফাঁকা স্থানের জন্য ত্রুটিগুলি এড়ানোর।

ডেনিসের দ্বারা সংরক্ষিত দুটি বাইট।


দুর্দান্ত জিনিস! সিজেএম কি প্রাথমিকভাবে কেবল একটি গল্ফিং ভাষা বা এর কিছু ব্যবহারিক বাণিজ্যিক অ্যাপ্লিকেশন রয়েছে?
ওয়েলওয়েস্ট

6
@ ওয়েলওয়েস্ট না এটি কেবল একটি গল্ফ করার ভাষা। এটিতে অবশ্যই বাণিজ্যিক অ্যাপ্লিকেশন নেই, তবে আমি ব্যক্তিগতভাবে এটি মাঝে মাঝে দ্রুত নিক্ষেপ স্ক্রিপ্টগুলির জন্য ব্যবহার করি (কারণ এতে অনেকগুলি বিল্ট-ইন রয়েছে, এবং আপনি যদি জানেন যে আপনি কী করছেন তবে টাইপ করার চেয়ে কম অক্ষর টাইপ করা দ্রুত হয় আরও অক্ষর;))।
মার্টিন ইন্ডার

আপনি প্রতিটি শব্দের একটি স্পেস যুক্ত করে কয়েকটি বাইট সংরক্ষণ করতে পারেন। আমার প্রশ্নের ওপির উত্তরের উপর নির্ভর করে এটি আপনাকে 14 বা 12 বাইটে পেতে পারে।
ডেনিস

@ ডেনিস ওহ ঠিক আছে, আমি এটির সাথে চারপাশে খেলছিলাম, তবে প্রথম চরিত্রটি আঁকানোর আগে কেবল এটি যুক্ত করার কথা বিবেচনা করি নি। আমি আগামীকাল যে পরিবর্তন করব, আপনাকে ধন্যবাদ!
মার্টিন ইন্ডার

@ ডেনিস ধন্যবাদ, আমি এটি পরিবর্তন করেছি, তবে 14-বাইট সংস্করণটি আপনি কী বোঝাতে চেয়েছিলেন তা আমি নিশ্চিত নই। আপনি যদি দ্বিতীয়টি বাদ দেওয়ার কথা বলছেন তবে ইনপুটটিতে +পিছনের জায়গাগুলি থাকলে তা ভেঙে যায়।
মার্টিন এন্ডার

7

সি, 64 63 বাইট

a;main(c){while(~(c=getchar()))putchar(a?c:toupper(c)),a=c-32;}

স্থির করুন: কিছু সংকলক (যেমন ক্ল্যাং) আরগভির পরিবর্তে কোনও পূর্ব পরামিতি পছন্দ করে না, তাই আমি এটিকে একটি বৈশ্বিক চলকটিতে স্থানান্তরিত করেছি। বাইট গণনা একই থাকে। লক্ষ্য করার জন্য চিকিত্সা দুর্বল ধন্যবাদ। 63৩ বাইট অবধি, ডেনিসকে ধন্যবাদ।

Ungolfed:

int a;

int main(int c) {
    while(~(c = getchar()))
        putchar(a ? c : toupper(c)),
        a = c - ' ';
}

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


1
while(~(c=getchar())- আমি এটি পছন্দ করি। বিড়ম্বনা আসলে এটি সংকলন করবে না, তবে আপনি একই চরিত্রের গণনাটি পেতে পারেনc;main(a){...}
squeamish ossifrage

1
তোমাদের মধ্যে ঘোষণা অদলবদল যদি aএবং cএবং তিন অপারেটর ক্রম, আপনি প্রতিস্থাপন করতে পারেন ==সঙ্গে -এক বাইট সংরক্ষণ করুন।
ডেনিস

আপনি অবশ্যই, ঠিক।
আন্দ্রে বিওনদো

নিস! +1 প্রোগ্রামটি ঠিক একইভাবে ব্যবহার করার সময় কাজ করবে while(!(c = getchar()))?
স্পিক্যাট্রিক্স

1
@ কুল গাই: না, বিটওয়াইজ ~এবং লজিকাল !এক নয়। সি তে যে কোনও কিছুই শূন্য নয় এটি সত্য বলে বিবেচিত হয়, সুতরাং আপনার অবস্থাটি এমন হবে while((c = getchar()) == 0)যা অবশ্যই কাজ করবে না। বিটওয়াইজ নট অপারেটর ~মান বিট-বিট বিভক্ত করে। লুপটি ভাঙ্গতে, ~cঅবশ্যই শূন্য হতে হবে: এর অর্থ এটি হচ্ছে যে সমস্ত বিট এক হতে হবে, যাতে অবহেলিত হয়ে গেলে তারা সমস্ত শূন্য হয়ে যায়। এই মানটি (32 বিবিট ইনট জন্য) 0xFFFFFFFFযা হ'ল স্বাক্ষরিত হয় -1(ইওএফ)।
আন্দ্রে বিওনদো 13'15

7

পাইথন 3, 59 56 বাইট

f=1
for c in input():print(end=f*c.upper()or c);f=c==" "

3 বাইটের জন্য @ রিটিক্যালটি ধন্যবাদ


3
কীভাবে print(end=f*c.upper()or c)? এটি 4 বাইট সংরক্ষণ করবে

@ প্রারম্ভিকতা ওহ বাহ, আমার কী ধারণা ছিল না যে আপনি কেবল একটি কীওয়ার্ড আরগ দিয়ে খালি মুদ্রণ রাখতে পারবেন। ধন্যবাদ!
Sp3000

7

পার্ল সংস্করণ <5.18, 30 27 26 25

say map"\u$_",split$,=$"

24+1জন্য অক্ষর -n

\uপরবর্তী অক্ষরটিকে একটি স্ট্রিং বড় বড় করে তোলে । @ThisSuitIsBlackNot 1 বাইট সংরক্ষণ করার জন্য এটিকে নির্দেশ করেছেন। আমরা ফাংশন ব্যবহার করার আগে ucfirst

পার্লডোকস থেকে ,

অন্য একটি বিশেষ কেস হিসাবে, বিভাজন কমান্ড লাইন সরঞ্জামের পূর্বনির্ধারিত আচরণটি এমুকুলেট করে যখন PATTERN হয় বাদ দেওয়া হয় বা একটি একক স্থান অক্ষর (যেমন '' বা "\ x20" দ্বারা গঠিত তবে আক্ষরিক / /) নয়। এই ক্ষেত্রে, এক্সপিআর-এ যে কোনও শীর্ষস্থানীয় শ্বেত স্পেস বিভাজন হওয়ার আগেই সরিয়ে ফেলা হবে এবং PATTERN এর পরিবর্তে চিকিত্সা করা হবে যেন এটি / \ s + /; বিশেষত এর অর্থ হ'ল যে কোনও স্বচ্ছ সাদা অংশ (কেবল একটি একক স্থানের অক্ষর নয়) পৃথককারী হিসাবে ব্যবহৃত হয়। তবে স্ট্রিংয়ের পরিবর্তে "/ /" প্যাটার্ন নির্দিষ্ট করে এই বিশেষ চিকিত্সা এড়ানো যেতে পারে, যার ফলে কেবলমাত্র একটি একক স্থান অক্ষরকে বিভাজক হতে দেয়। পার্লসের প্রথমদিকে পার্ল 5.18 তে এই বিশেষ কেসটি বিভক্ত করার প্যাটার্ন আর্গুমেন্ট হিসাবে "" সরল ব্যবহারের মধ্যে সীমাবদ্ধ ছিল।

যেহেতু $"কোনও স্থানের মূল্যায়ন করা হয়, এটি স্থানগুলি সংরক্ষণ করবে। যেহেতু আমরা উভয়ই $,একটি স্পেস ক্যারেক্টারে সেট করতে চাই এবং স্পেস ক্যারেক্টারকে বিভক্ত করতে চাই, @ নটকি উল্লেখ করলেন যে আমরা বিভক্তির ইনপুট হিসাবে উভয়ই করতে পারি। এটি আমাদের যা ছিল তার থেকে 3 বাইট সংরক্ষণ করে, যা প্রথমে সেট করা ছিল $,এবং তারপরে $"বিভাজনে ইনপুট করা।

@ অ্যালেক্সান্দার-ব্রেট যেমন উল্লেখ করেছেন তেমন একটি অতিরিক্ত বাইট সংরক্ষণের ,পরিবর্তে মানচিত্রের জন্য ব্যবহার {}করা।

সাথে চালান:

echo 'eCommerce     rocks. crazyCamelCase stuff. _those  pigeon-toed shennanigans. Fiery trailblazing 345 thirty-two Roger. The quick brown fox jumped over the lazy dogs. Clancy Brown would have been cool as Lex Luthor. good_bye' | perl -nE'say map"\u$_",split$,=$"'

1
1 বাইট এর সাহায্যে সংরক্ষণ করুন...map"\u$_",split...
অ্যালেক্সান্ডার-ব্রেট

@ আলেকজান্ডার-ব্রেট ধন্যবাদ! আমি উত্তর আপডেট।
hmatt1

5

> <> (ফিশ) , 39 বাইট

</?-' 'o:;?(0:<-*' '*('{'$)'`'::i
i/.0e

পদ্ধতি:

  • একটি চর নিন এবং এটির মূলধন যদি সীমার মধ্যে থাকে a-zতবে এটি মুদ্রণ করুন। (এই অংশের জন্য বাম থেকে ডান কোডটি হ'ল i::'backquote')$'{'(*' '*+)
  • যদি সর্বশেষ গৃহীত চরটি EOF চর হয় তবে অন্য প্রিন্ট থেকে প্রস্থান করুন
  • যদি সর্বশেষ গৃহীত চরটি একটি স্থানের চর হয় তবে পয়েন্ট 1 এ যান অন্য একটি নতুন চিঠি নিন এবং পয়েন্ট 2 এ যান।

5

জাভা, 273 বাইট

সম্পাদনা

import static java.lang.System.*;class x{public static void main(String[] s){char[] a=new java.util.Scanner(in).nextLine().toCharArray();boolean f=1>0;for(int i=0;i<a.length;i++){if(a[i]==' '){f=1>0;continue;}if(f){a[i]=Character.toUpperCase(a[i]);f=1<0;}}out.println(a);}}

এটি পিসিজিতে আমার প্রথম উত্তর, এটি গ্রহণযোগ্য কিনা তা নিশ্চিত নয়।
অতুল কুম্ভর

বিদেশে স্বাগতম! আপনি ভেরিয়েবল স্পেস সরিয়ে এবং চলক নামের জন্য একক অক্ষর ব্যবহার করার চেষ্টা করতে পারেন। জেভিএকে গল্ফ করার জন্য আরও কিছু টিপস রয়েছে।
nderscore

ইঙ্গিতটির জন্য @ আন্ডারস্কোর ধন্যবাদ, আমি টিপসটি ব্যবহার করে আমার উত্তর সম্পাদনা করেছি।
অতুল কুম্ভর

আরও ভাল দেখাচ্ছে! আমি আপনার পোস্টে বাইট কাউন্টও যুক্ত করেছি।
nderscore

1
@TuukkaX তিনি নেই publicসামনে class.. এবং যদি আপনি এর অর্থ তিনি অপসারণ করতে পারেন publicসামনে static void main(..., তাহলে আপনি, ভুল যদি না তিনি পরিবর্তন classকরতে interfaceএবং জাভা ব্যবহার 8+।
কেভিন ক্রুইজসেন

5

জাভাস্ক্রিপ্ট (রেজেক্স সমাধান) - 104 বাইট

কাউকে বুলেট কামড়তে হবে এবং রেজেক্স সমাধান সমাধান করতে হবে! 74 টি অক্ষর, +30 অক্ষরের জরিমানা:

alert(prompt().replace(/(^| )[a-z]/g,function(m){return m.toUpperCase()}))

অথবা আপনি যদি কোডটি তার অ-সংবিহীন ফ্যাশনে পড়তে এবং বুঝতে চান:

//     Matches the (beginning of the line or a space), followed by a lowercase English character.  
string.replace( /(^| )[a-z]/g ,
                function(match) { return match.toUpperCase(); }

1
চতুর ... যদিও আপনি 30 অক্ষরের জরিমানার সাথে মূল্য দিয়েছিলেন ... বুলেট কামড়ানোর জন্য আমি আমার টুপি আপনার কাছে
তুলে নিয়েছি

4

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

i=raw_input()
print''.join((c,c.upper())[p==' ']for p,c in zip(' '+i,i))

এই প্রোগ্রামটি কোনও স্পেসের আগে একটি অক্ষরকে মূলধন করে তোলে (স্ট্রিংয়ের প্রথম অক্ষরের জন্য একটি ক্লডজ সহ)। এটি .upper()সঠিকভাবে মূলধন করতে স্ট্রিং পদ্ধতির উপর নির্ভর করে ।


2
পাইথন 3 এ raw_inputinputprintprint()
বন্দরে

ধন্যবাদ স্টিভন আমি পাইথন ৩ এ কোডিং করে বাইটে সঞ্চয়গুলি বিবেচনা করেছি Then তারপরে আমি ভাবলাম, আমি যদি ভাষাটি প্রতিযোগিতামূলক হওয়ার জন্য পরিবর্তন করি তবে আমি পাইথে পরিবর্তন করব। পাইথন 2 উপ-লিগে অংশ নিয়ে আমি আনন্দিত। আমি কাজের জন্য পাইথন 2-এ প্রতিদিন কোড করি, তাই এই অভিজ্ঞতাটি আমাকে আমার চাকরিতে আরও ভাল করে তোলে (তবে আমার কাজের কোডটি গল্ফ হয় না)।
লজিক নাইট

4

পিএইচপি 64 76 77 83 84 89 বাইট

না $_GETপিএইচপি ইনপুট হিসাবে গণনা?
যদি তা হয় তবে এখানে আমার প্রথম সিজি চেষ্টা

foreach(explode(' ',$_GET[@s])as$k=>$v)echo$k?' ':'',ucfirst($v)

ধন্যবাদ ম্যানটওয়ার্ক :)

একটি মাত্র ucwordsফাংশনটি ব্যবহার করতে পারে, যার ফলশ্রুতিতে 21 বাইট হবে:

<?=ucwords($_GET[@s])

ধন্যবাদ হ্যারি মুস্তো-প্লেফায়ার :)


ব্যক্তিগতভাবে আমি কেবল fgets(STDIN)ইনপুট পড়ার জন্য বিবেচনা করি । তবে $_GETযতদূর জানি আমাদের পক্ষে noক্যমত্য নেই ।
manatwork

হ্যাঁ, এটি কাজ করে: ডি
অক্টোফেক্স

সতর্কতা বন্ধ করতে আপনার কৌশলগুলির দরকার নেই। তারা হুঁশিয়ারি! কেউ তাদের যত্ন করে না।
ইসমাইল মিগুয়েল

ঠিক আছে, ভেবে দেখিনি। অনুমান করুন আমাকে সাবস্ট্রাস্টের সাথে আটকে থাকতে হবে
অক্টোফেক্স

ওটার দরকার নেই. অপসারণ সম্পর্কে আমার আগের পরামর্শটি ভুলে যাওয়ার এখন সময় $k=>। এটি পিছনে রাখুন:foreach(split(' ',$_GET[@s])as$k=>$v)echo$k?' ':'',ucfirst($v);
manatwork

4

হাস্কেল, 69

import Data.Char
main=interact$tail.scanl(!)' '
' '!c=toUpper c;_!c=c

ব্যাখ্যা:

scanlএকটি ফাংশন (a -> b -> a)এবং একটি প্রাথমিক মান নেয় a, তার পরে একটি তালিকা তৈরি [b]করতে গুলিগুলির একটি তালিকাকে পুনরাবৃত্তি করে [a]:

scanl (!) z [a,b,c] == [   z
                       ,   z ! a
                       ,  (z ! a) ! b
                       , ((z ! a) ! b) ! c]

এটি বার বার ফাংশনটির বাম আর্গুমেন্ট হিসাবে প্রেরণ করা হিসাবে এবং পূর্ববর্তীটি তৈরি করতে ডান আর্গুমেন্ট হিসাবে ইনপুট তালিকা থেকে একটি মান হিসাবে বার বার গ্রহণ করে ।

আমি একটি ফাংশন লিখেছি (!) :: Char -> Char -> Charযা আপনি এটি দিয়েছিলেন এমন সঠিক চরিত্রটি ফিরিয়ে দেয়, তবে বাম চরটি ' '(স্থান) হলে এটি মূলধন করে । এর জন্য এর scanlঅর্থ: ইনপুট তালিকা থেকে মানটি ফিরিয়ে দিন , তবে পূর্ববর্তী ফলাফলটি যদি একটি স্থান থাকে তবে এটি মূলধন করুন । সুতরাং scanl (!) ' ' "ab cd"হয়ে:

    scanl (!) ' ' "ab cd"
==> ' ' : scanl (!) (' ' ! 'a') "b cd"
==> ' ' : scanl (!)     'A'     "b cd"
==> ' ' : 'A' : scanl (!) ('A' ! 'b') " cd"
==> ' ' : 'A' : scanl (!)     'b'     " cd"
==> ' ' : 'A' : 'b' : scanl (!) ('b' ! ' ') "cd"
==> ' ' : 'A' : 'b' : scanl (!)     ' '     "cd"
==> ' ' : 'A' : 'b' : ' ' : scanl (!) (' ' ! 'c') "d"
==> ' ' : 'A' : 'b' : ' ' : scanl (!)     'C'     "d"
==> ' ' : 'A' : 'b' : ' ' : 'C' : scanl (!) ('C' ! 'd') ""
==> ' ' : 'A' : 'b' : ' ' : 'C' : scanl (!)     'd'     ""
==> ' ' : 'A' : 'b' : ' ' : 'C' : 'd' : ""
==> " Ab Cd"

' 'প্রথম চিঠিটি মূলধন করার জন্য আমাদের প্রাথমিক মান দরকার তবে তারপরে আমরা tailআমাদের চূড়ান্ত ফলাফল পেতে এটি কেটে ফেলি ।


নিস! আপনি দয়া করে আমার জন্য এটি ব্যাখ্যা করতে পারেন?
পোইডা

আমি একটি ব্যাখ্যা লিখেছি।
লিন

আরও কয়েকটি scanlউদাহরণ: এক , দুটি
লিন

@ মরিস কুডোস এরকম দুর্দান্ত অ্যালগরিদম ব্যবহার করার জন্য ... :)
ওয়াল ওয়েস্ট

3

পাইথ, 20 বাইট

uXGHr@GH1fqd@+dzTUzz

এই একাধিক স্পেস সত্যিই sucks। অন্যথায় সত্যিই খুব সহজ 12 বাইট সমাধান হত।

এটি অনলাইনে ব্যবহার করে দেখুন: পাইথ সংকলক / নির্বাহক

ব্যাখ্যা

                      implicit: z = input string
         f       Uz   filter [0, 1, 2, ..., len(z)-1] for elements T, which satisfy:
          qd@+dzT        " " == (" " + z)[T]
                      (this finds all indices, which should be capitalized)
u                  z  reduce, start with G = z, for H in idices ^ update G by
 XGH                     replace the Hth char of G by
    r   1                upper-case of
     @GH                 G[H]
                      implicitly print result

সম্পাদনা করুন: ডেনিস অ্যালগরিদম দিয়ে 16 টি অক্ষর সম্ভব possible


1
এটিকে অনেক বেশি চ্যালেঞ্জিং করার জন্য একাধিক স্পেস জিনিস রয়েছে ... অন্যথায় এটি স্ট্রিং.স্প্লিট ("") বা এটির মতোই কিছু সাধারণ ঘটনা হবে ... তবে আপনি এটি 20 টি চরিত্রে করতে ভাল করেছেন
ওয়াল ওয়েস্ট

3

সিজেম, 14 বাইট

এটি সবচেয়ে কম নয়, তবে ...

qS/Sf.{\eu}s1>

অনুরূপ ধারণা ব্যবহার করে অন্য একটি উত্তর:

qS/Laf.{;eu}S*

.x পরামিতিগুলির একটিতে কেবল একটি আইটেম থাকলে কেবলমাত্র প্রথম আইটেমটি পরিবর্তন করে।


1
চেইনিং fএবং .বেশ বুদ্ধিমান। অন্য 14 বাইটের বৈকল্পিক:qS/Sf.{\eu}S.-
ডেনিস

3

অ্যাপ্লিকেশন Lua, 64 62 61 বাইট

গল্ফ দেওয়ার জন্য লুয়া একটি ভয়াবহ ভাষা, সুতরাং আমি এইটির জন্য নিজেকে নিয়ে বেশ গর্বিত।

print(string.gsub(" "..io.read(),"%s%l",string.upper):sub(2))

[এটি এখানে চেষ্টা করুন] 1 পুরানো, টমমরো আপডেট করবে


1
পিপিসিজিতে আপনাকে স্বাগতম! অবশ্যই, কমাগুলির পরে আপনার এই স্পেসগুলির দরকার নেই?
মার্টিন ইন্ডার

বাহ, আমি এটিতে নতুন তাই আমি জেনে নেই ফাঁকা স্থানগুলিও জানি। 62 বাইট!

2
আমি এটিও লক্ষ্য করেছি যে এটি সম্পূর্ণরূপে সঠিক নয়: আপনি সমস্ত অ-অক্ষরের পরে চিঠিগুলি বড় করছেন, তাই abc_defদেবেন Abc_Def। তবে কেবলমাত্র ফাঁকের পরে থাকা অক্ষরগুলি বড় হাতের অক্ষরে রূপান্তরিত হওয়া উচিত। সুসংবাদটি হ'ল, এটি ঠিক করা একটি বাইট সংরক্ষণ করে। ;)
মার্টিন ইন্ডার

3

জাভা, 204 211 226 বাইট

সিজিতে আমার প্রথম প্রবেশ, আমি আশা করি এটি ঠিক আছে:

class U{public static void main(String[]s){int i=0;char[]r=s[0].toCharArray();r[0]=Character.toUpperCase(r[0]);for(char c:r){if(c==' '&&i>0)r[i+1]=Character.toUpperCase(r[i+1]);i++;System.out.print(c);}}}

@ টিএনটি-তে 7 বাইট সংরক্ষণ করা হয়েছে


আমার দুর্বল জাভা দক্ষতার সাথে জড়িত:public class U{public static void main(String[]s){int i=-1,j;char[]r=s[0].toCharArray();for(char c:r)if(++i==0||c==' '&&i>0)r[j=i+(i==0?0:1)]=Character.toUpperCase(r[j]);System.out.print(r);}}
ম্যান্যাটওয়ার্ক 11'15

1
পিপিসিজিতে আপনাকে স্বাগতম! publicতাই আপনি আরো 7 রক্ষা করতে পারে পরিবর্তক প্রয়োজন নেই।
টিএনটি

3

পিএইচপি: 76 74 টি অক্ষর

foreach($l=str_split(fgets(STDIN))as$c){echo$l?ucfirst($c):$c;$l=$c==" ";}

নমুনা রান:

bash-4.3$ php -r 'foreach($l=str_split(fgets(STDIN))as$c){echo$l?ucfirst($c):$c;$l=$c==" ";}' <<< 'eCommerce rocks. crazyCamelCase stuff. _those  pigeon-toed shennanigans. Fiery trailblazing 345 thirty-two Roger. The quick brown fox jumped over the lazy dogs. Clancy Brown would have been cool as Lex Luthor. good_bye'
ECommerce Rocks. CrazyCamelCase Stuff. _those  Pigeon-toed Shennanigans. Fiery Trailblazing 345 Thirty-two Roger. The Quick Brown Fox Jumped Over The Lazy Dogs. Clancy Brown Would Have Been Cool As Lex Luthor. Good_bye

পরিবর্তে ucfirst($c), ব্যবহার করুন $c^' '। (টিপ: যদি আপনি bitwise-xorকোনও স্থান সহ একটি চিঠি থাকেন তবে এটি বড় হাত থেকে ছোট হাতের কাছে রূপান্তরিত হবে এবং অপোসাইটটিও প্রযোজ্য)
ইসমাইল মিগুয়েল

@ ইসমাইল মিগুয়েল, আপনি কেবল ছোট হাতের অক্ষরগুলি প্রক্রিয়াকরণ করার সাথে সাথে এটি আপনার সমাধানে ভাল কাজ করে। তবে আমার সমাধানে প্রথম সমস্ত অক্ষর প্রক্রিয়াজাত হয়। সুতরাং (অন্যথায় দুর্দান্ত) জোর ট্রিকের জন্য আমার কোডটিরও কিছু চরিত্রের টাইপ ফিল্টারিংয়ের প্রয়োজন হবে। :(
manatwork 12'15

সেটা আমার মন কেটে যায়নি। এটি কোনও চিঠি কিনা তা পরীক্ষা করার জন্য অবশ্যই কিছুটা কৌশল অবলম্বন করতে হবে।
ইসমাইল মিগুয়েল

1
একটি জিনিস আপনি করতে পারেন $l=str_split(fgets(STDIN)), যা কোডটি 2 বাইট দ্বারা হ্রাস করে!
ইসমাইল মিগুয়েল

1
এখন আমি পাগল হয়ে যাচ্ছি ম্যান, কতক্ষণ আমি সেই সূচনাতে অভিনয় করেছি এবং এটি মিস করেছি। আপনাকে ধন্যবাদ, @ ইসমাইল মিগুয়েল।
manatwork

3

সি, 74 বাইট

a,b=1;main(){while((a=getchar())>0)b=isspace(putchar(b?toupper(a):a));}

রান-টাইম ক্যারেক্টার সেট (ASCII, EBCDIC, Baudot, ... যাই হোক না কেন) সম্পর্কে কোনও অনুমান করে না। কি ধরে নিচ্ছে যে ইওএফ নেতিবাচক (আমি মনে করি সি এটির নিশ্চয়তা দেয়)।

a,b=1;
main()
{
    while((a=getchar())>0)
        b=isspace(putchar(b?toupper(a):a));
}

একটি ইনপুট চরিত্র; খ সত্য যদি শেষ চরিত্রটি স্থান ছিল। কেবলমাত্র অ-সুস্পষ্ট বিটটি হ'ল আমরা putcharকোনও ত্রুটি না থাকলে মুদ্রিত অক্ষরটিকে ফিরিয়ে আনার বিষয়টি ব্যবহার করি ।


3

সি # লিনক - 187

এটি জয়ের কাছাকাছি কোথাও নেই তবে আমি লিনককে খুব বেশি ভালবাসি।

namespace System{using Linq;class P{static void Main(string[]a){Console.Write(a[0].Substring(1).Aggregate(a[0][0].ToString().ToUpper(),(b,c)=>b[b.Length-1]==32?b+char.ToUpper(c):b+c));}}}

3

ভিম, 11 , 10 বাইট

qqvUW@qq@q

ব্যাখ্যা:

qq           #Start recording in register 'q'
  vU        #Make the character under the cursor uppercase
     W       #Move forward a WORD
      @q     #recursively call macro 'q'
        q    #stop recording
         @q  #Call the recursive macro

ডেনিসকে ছাড়িয়ে যাওয়ার জন্য আমি কী সোনার ব্যাজ পাব?



2

বাশ, 61

a="${@//: / }"
a=(${a//: / })
a="${a[@]^}"
echo "${a//:/ }"

নোটগুলি এখানে প্রোগ্রামের প্রদর্শনটি ঠিক করার জন্য নোট করুন। বাস্তবে এগুলি কিছু মুদ্রণযোগ্য অক্ষর হতে পারে যেমন বিইএল।

আউটপুট

$ ./cap1st.sh "eCommerce rocks. crazyCamelCase stuff. _those  pigeon-toed shennanigans. Fiery trailblazing 345 thirty-two Roger. The quick brown fox jumped over the lazy dogs. Clancy Brown would have been cool as Lex Luthor. good_bye"
ECommerce Rocks. CrazyCamelCase Stuff. _those  Pigeon-toed Shennanigans. Fiery Trailblazing 345 Thirty-two Roger. The Quick Brown Fox Jumped Over The Lazy Dogs. Clancy Brown Would Have Been Cool As Lex Luthor. Good_bye
$ 

বাশ, 12

দুর্ভাগ্যক্রমে এই একটি প্রধান / একাধিক / পিছনের স্থান সংরক্ষণ করে না, তবে অন্যথায় এটি কাজ করে:

echo "${@^}"

আউটপুট

$ ./cap1st.sh eCommerce rocks. crazyCamelCase stuff. _those  pigeon-toed shennanigans. Fiery trailblazing 345 thirty-two Roger. The quick brown fox jumped over the lazy dogs. Clancy Brown would have been cool as Lex Luthor. good_bye
ECommerce Rocks. CrazyCamelCase Stuff. _those Pigeon-toed Shennanigans. Fiery Trailblazing 345 Thirty-two Roger. The Quick Brown Fox Jumped Over The Lazy Dogs. Clancy Brown Would Have Been Cool As Lex Luthor. Good_bye
$ 

5
তবে সেটা অর্ধেক চ্যালেঞ্জ!
Sp3000

1
@ এসপি 3000 সেখানে আমি এটি স্থির করেছি (49 টি চর হিসাবে)
ডিজিটাল ট্রমা

2

পিপ , -s= 16 এর জন্য 15 + 1

{IaUC:a@0a}Ma^s

ব্যাখ্যা:

                  a is first cmdline arg (implicit)
            a^s   Split a on spaces
{         }M      Map this function to each element:
 Ia                 If the word is not empty,
   UC:a@0             uppercase its first character
         a          Return the word
                  Output the resulting list (implicit) joined on spaces (-s flag)

এই প্রোগ্রামটি আঁকছে এমন একটি আকর্ষণীয় বৈশিষ্ট্য হ'ল :অ্যাসাইনমেন্ট মেটা-অপারেটর। বেশিরভাগ সি-এর মতো ভাষাতে কিছু সংখ্যক কম্পিউট-অ্যাসাইনড অপারেটর রয়েছে: যেমন x*=5একই কাজটি করে x=x*5। পাইপে, তবে আপনি যে কোনও অপারেটরের :উপর নজর রাখতে পারেন এবং এটিকে একটি গণনা-ও-নিয়োগ অপারেটরে পরিণত করতে পারেন । এটি এমনকি unary অপারেটরদের জন্য যায়। সুতরাং গণনা করে এবং এটিকে আবার নির্ধারণ করে , যেমনটি হবে। এই ক্ষেত্রে, (পিপ এর চপল স্ট্রিং সঙ্গে একসঙ্গে) ব্যবহার করা হয় একটি শব্দের প্রথম অক্ষর বড় হাতের অক্ষরে।-:x-xxx:-xUC:

প্রোগ্রামটি কমান্ড-লাইন থেকে ইনপুট নেয়, যাতে এই জাতীয় অনুরোধের প্রয়োজন হয়:

python3 pip.py -se "{IaUC:a@0a}Ma^s" "test teSt TEST  _test"

2

সি, 125

সংক্ষিপ্ততম সমাধান নয়, তবে আমি সত্যিই সি তে গল্ফ পছন্দ করি

char b[99];main(c){while(scanf("%[A-Za-z_-]",b)==1)islower(*b)&&(*b&=223),printf("%s",b);~(c=getchar())&&putchar(c)&&main();}

ungolfed:

char b[99];
main(c)
{
  while(scanf("%[A-Za-z_-]", b) == 1) {
    if(islower(b[0])) {
      b[0] &= 0xDF;
    }
    printf("%s", b);
  }
  if((c = getchar()) != -1) {
      putchar(c);
      main();
  }
}

আমি জানি না, রেগেক্সের মতো সিনট্যাক্স ব্যবহার করে হোল্টার নিয়মগুলি প্রসারিত করছে scanf, তবে এটি বেশ সুন্দরভাবে কাজ করে। (আচ্ছা, প্রযুক্তিগতভাবে এটি সম্পূর্ণ রেজেেক্স নয়)

অন্য একটি বিষয় বিবেচনা করার বিষয় হ'ল এই কোডটি কেবল 99 বাইটের চেয়ে কম শব্দের জন্য কাজ করে। তবে আমি মনে করি এই সমাধানটি বেশিরভাগ ক্ষেত্রে কার্যকর হবে।


ইঙ্গিত: & = 223 -> - = 32
edc65

2

হাস্কেল: 127 টি অক্ষর

import Data.List
import Data.Char
i=isSpace
s a b=i a==i b
u (w:ws)=(toUpper w):ws
f w=concatMap u$groupBy s w
main=interact f

আমি নিচে 69 বাইট
লিন

2

পিএইচপি, 82

echo join(' ',array_map(function($s){return ucfirst($s);},explode(' ',$argv[1])));

ব্যবহার:

$ php code.php "eCommerce rocks. crazyCamelCase stuff. _those  pigeon-toed shennanigans. Fiery trailblazing 345 thirty-two Roger. The quick brown fox jumped over the lazy dogs. Clancy Brown would have been cool as Lex Luthor. good_bye"

2

সি #, 133 131

using C=System.Console;class P{static void Main(){var s=2>1;foreach(var c in C.ReadLine()){C.Write(s?char.ToUpper(c):c);s=c==32;}}}

আপনার কি দরকার &&c!=32? আমি সি # তে খুব সাবলীল নই, তবে আমি অনুমান করব যে কোনও স্থানকে বড় হাতের অক্ষরে রূপান্তর করার ফলে একটি স্থানের ফলাফল হয়।
ডিএলস্ক

ওফস, ধন্যবাদ - আমার কিছু অন্যান্য পরিবর্তন করার আগে এটি ছিল। আপনি সঠিক যে এটি প্রয়োজন হয় না।
ব্লগারবার্ড

"সি = সিস্টেম.কনসোল ব্যবহার করে চেষ্টা করুন;" সিস্টেমটি ব্যবহার না করে
ইওয়ান

2

গণিত, 66 বাইট

Print@StringReplace[InputString[],WordBoundary~~a_:>ToUpperCase@a]

আমি ব্যবহার করব ToCamelCase, তবে এটি ব্যবধান সংরক্ষণ করে না।


2

আর, 139 105 বাইট

for(i in 1:length(p<-strsplit(readline(),"")[[1]])){if(i<2||p[i-1]==" ")p[i]=toupper(p[i])};cat(p,sep="")

অবহেলিত + ব্যাখ্যা:

# Assign p to be a vector of the input read from stdin, split into characters

for(i in 1:length(p <- strsplit(readline(), "")[[1]])) {

    # If we're at the first iteration or the previous character was a space

    if (i < 2 || p[i-1] == " ") {

        # Convert the current character to its uppercase equivalent

        p[i] <- toupper(p[i])
    }
}

# Join the vector elements into a single string and print it to stdout
cat(p, sep = "")

রিজেক্স সহ আর, 49 41 + 30 = 71 বাইট

আমি সত্যিই বৌদ্ধ; এই পেনাল্টির সাথে নিয়মিত এক্সপ্রেশন ব্যবহার করে এর আরও ভাল স্কোর রয়েছে।

gsub("(^.| +.)","\\U\\1",readline(),pe=T)

এটি স্ট্রিংয়ের শুরুতে বা কোনও সংখ্যক স্পেস অনুসরণ করে কোনও একক অক্ষরের সাথে মেলে এবং এটি ক্যাপচারের একটি বড় সংস্করণ দিয়ে প্রতিস্থাপন করে। নোট করুন যে আবেদন \\Uকরা বৈধ এবং নন-অক্ষরের জন্য এর কোনও প্রভাব নেই। এটি আর ফাংশন পরামিতিগুলির আংশিক মিলের এবং এর প্রতিশব্দটির সুবিধা গ্রহণ করে pe=Tবলে ব্যাখ্যা করা হয় । যে কারণেই হোক না কেন, আর পার্ল-স্টাইল নিয়মিত প্রকাশটি ডিফল্টরূপে ব্যবহার করে না।perl = TRUETRUE

রেগেক্স পদ্ধতির 8 বাইট সংরক্ষণ করতে সাহায্য করার জন্য মিকিটিকে ধন্যবাদ!


আপনার রেজেক্সের সাথে ম্যাচিং স্ট্রিং হতে পারে (^.| +.)। যেকোনো কিছু বড় করা ঠিক আছে।
মিকিটি

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