উট কেসে রূপান্তর করুন


34

চ্যালেঞ্জ

আমি অন্য দিন গুগলের জাভা স্টাইল গাইডটি পড়ছিলাম এবং কোনও সালিশী স্ট্রিংকে উটকেস নোটেশনে রূপান্তর করতে তাদের অ্যালগরিদমকে হোঁচট খেয়েছি। এই চ্যালেঞ্জে আপনাকে এই অ্যালগরিদমটি বাস্তবায়ন করতে হবে যেহেতু আপনি যখন কোড-গল্ফ চ্যালেঞ্জগুলিতে আপনার সুপার প্রতিযোগিতামূলক জাভা সাবমিশনগুলি লিখছেন তখন আপনি আপনার মাথায় এই সমস্ত জিনিসগুলি করতে চান না।

দ্রষ্টব্য: আমি অ্যালগরিদমে কিছু ছোট সামঞ্জস্য করেছি। আপনি নীচের নির্দিষ্ট একটি ব্যবহার করা প্রয়োজন।

অ্যালগরিদম

আপনি একটি স্বেচ্ছাচারিত ইনপুট স্ট্রিং দিয়ে শুরু করুন এবং এটিতে নিম্নলিখিত ক্রিয়াকলাপগুলি প্রয়োগ করুন:

  1. সমস্ত অ্যাস্ট্রোফেস সরান `'
  2. ফলাফলকে শব্দে বিভক্ত করে বিভক্ত করুন
    • বর্ণগুলি বর্ণানুক্রমিক এবং একটি সংখ্যা নয় [^a-zA-Z0-9]
    • বড় হাতের অক্ষর যা উভয় পক্ষের ছোট হাতের অক্ষর দ্বারা বেষ্টিত। abcDefGhI jkউদাহরণস্বরূপ ফলনabc Def Ghi jk
  3. প্রতিটি শব্দ ছোট করুন Lower
  4. সবার বড় অক্ষর কিন্তু প্রথম শব্দটি।
  5. সমস্ত শব্দ একসাথে ফিরে যোগদান করুন।

অতিরিক্ত নোট

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

বিধি

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

"প্রোগ্রামিং প্রহেলিকা এবং কোড গল্ফ" -> "প্রোগ্রামিংপজল কোডস গল্ফ"
"এক্সএমএল এইচটিটিপি অনুরোধ" -> "এক্সএমএলএইচটিপি অনুরোধ"
"আইওএস-এ আইপিভি 6 সমর্থন করে?" -> "সাপ্লাইআইপিভি 6অনিস"
"সোমথিং w1 তম, এপোস্ট্রোফ এবং 'পঙ্ক] টিচুয়েশন" -> "কিছু থিংডিং 1 তম এপোস্ট্রোফএন্ডপঞ্চটিচিউশন"
"বিশেষ কিছু নয়" -> "কিছুই স্পেশাল" নেই
"5 স্পেশাল সিএ 5" -> "5 স্পেশালসিএ 5 ই"
"1337" -> "1337"
"1337-spEAk" -> "1337 স্পিক"
"হোয়াটএ গন্ডগোল" -> "হোয়াটমেস"
"abcD" -> "abcd"
"এ" -> "এ"
"বি" -> "খ"

শুভ কোডিং!


3
মজার বিষয়, আমি কখনই জানতাম না এটি "উট কেস" নামে পরিচিত। নামটি মানানসই আমি মনে করি ...
আশ্বিন গুপ্ত

4
আরও রয়েছে: snake_case&PascalCase
মার্টিজন

14
@ মার্তিজন snake_caseঅবশ্যই পাইথনের কারণে। ফরথেরও রয়েছে FORTHCASEএবং এপিএল রয়েছেunreadable in any case
বিড়াল

টেস্ট কেস 4 ApostropheSএর আউটপুট থাকা উচিত ।
টাইটাস

@ টিটাস না, এটি সঠিক। ইনপুট বিভক্ত হওয়ার আগে অ্যাপোসট্রোফগুলি সরানো হবে।
ডেনকার

উত্তর:


13

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

বাইট গণনাটি আইএসও 8859-1 এনকোডিং ধরেছে।

T`'\`
S_`\W|_|(?<=[a-z])(?=[A-Z][a-z])
T`L`l
T`l`L`¶.
¶

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

ব্যাখ্যা

এটি স্পেসিফিকেশনটি বেশ আক্ষরিক অর্থে প্রয়োগ করে:

T`'\`

অ্যাস্ট্রোথ্রফস এবং ব্যাকটিক্স সরান।

S_`\W|_|(?<=[a-z])(?=[A-Z][a-z])

অক্ষরহীন অক্ষরের চারপাশে স্ট্রিং বিভক্ত করুন (রেজেক্সে এটিও অঙ্কগুলি এবং আন্ডারস্কোরগুলি বাদ দেয়) বা আন্ডারস্কোর বা অবস্থানগুলিতে বাম দিকে এবং উপরের ক্ষেত্রে ডানদিকে নিম্ন কেস থাকে। এটি দুটি খালি খণ্ড তৈরি করবে যখন দুটি নন-অক্ষর, একটি সারিতে অ-অঙ্কিত অক্ষর বা স্ট্রিংয়ের শুরুতে আরও গুরুত্বপূর্ণ হবে। _বিকল্পের সাথে আমরা তাদের থেকে মুক্তি পাই । এখানে, "বিভাজন" এর অর্থ প্রতিটি অবশিষ্ট অংশকে তার নিজস্ব লাইনে রাখুন।

T`L`l

সবকিছুকে ছোট আকারে রূপান্তর করুন।

T`l`L`¶.

লাইনফিডের পরে ঘটে যাওয়া প্রতিটি চরিত্রকে আপার ক্ষেত্রে রূপান্তর করুন। এটি সুবিধামত প্রথম শব্দটি এড়িয়ে যাবে কারণ এর সামনে কোনও লাইনফিড নেই।

একসাথে ফিরে সমস্ত কিছুতে যোগ দেওয়ার জন্য লাইনফিডগুলি থেকে মুক্তি পান।


তুমি আমাকে এটা দ্বারা মেরেছ. সুন্দর!
mbomb007

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

5
@ দাভকো শিওর, পোস্ট করুন (বিদ্যমান জবাবের সাথে দৃষ্টিভঙ্গিটি কতটা আলাদা তার ভিত্তিতে আমি সাধারণত সিদ্ধান্ত নিই ... যদি কোথাও বাইট দিয়ে শেভ করা ঠিক একই জিনিস হয় তবে আমি সাধারণত উত্তরটি সম্পর্কে মন্তব্য করি তবে এটি যদি খুব ছোট হয় তবে একটি ভিন্ন পদ্ধতির কথা, তবে আমি কেবল একটি পৃথক উত্তর পোস্ট করব)।
মার্টিন এন্ডার

2
@ দাভকো যদিও চেহারাটি প্রয়োজনীয় তবে। মনে রাখবেন যে আপনার উত্তরটি Thingযদিও হওয়া উচিত এর মূলধনটি ধরে রাখে না ।
মার্টিন এন্ডার

1
@ মার্টিনবাটনার ওহ ... আমি তা লক্ষ্য করিনি। ওহ ভাল, আমি সফলভাবে অন্য কিছু চ্যালেঞ্জ উত্তর করব, তারপর।
দাভকো

11

জাভা, 198 190 বাইট

+3 বাইট কারণ আমি এটি ভুলে গিয়েছিলাম \W+== [^a-zA-Z0-9_]+এবং আমার মিল হওয়া দরকার[^a-zA-Z0-9]+

-11 ধন্যবাদ বাইট user20093 - ?:পরিবর্তে if/else

কারণ, জাভা

s->{String[]a=s.replaceAll("`|'","").split("[\\W_]+|(?<=[a-z])(?=[A-Z][a-z])");s="";for(String w:a){String t=w.toLowerCase();s+=a[0]==w?t:t.toUpperCase().charAt(0)+t.substring(1);}return s;}

এটি একটি ল্যাম্বডা। যেমন কল:

UnaryOperator<String> op = s->{String[]a=s.replaceAll("`|'","").split("[\\W_]+|(?<=[a-z])(?=[A-Z][a-z])");s="";for(String w:a){String t=w.toLowerCase();s+=a[0]==w?t:t.toUpperCase().charAt(0)+t.substring(1);}return s;};
System.out.println(op.apply("Programming Puzzles & Code Golf"));

পঠনযোগ্য সংস্করণ:

public static String toCamelCase(String s) {
    String[] tokens = s
            .replaceAll("`|'", "") // 1. Remove all apostrophes
            .split("[\\W_]+|(?<=[a-z])(?=[A-Z][a-z])"); // 2. Split on [\W_]+ or between [a-z] and [A-Z][a-z]
    s = ""; // Reusing s for building output is cheap
    for (String token : tokens) {
        String lowercaseToken = token.toLowerCase(); // 3. Lowercase every word
        s += tokens[0].equals(token)?lowercaseToken:lowercaseToken.toUpperCase().charAt(0) + lowercaseToken.substring(1); // 4. Uppercase first char of all but first word
        // ^ 5. Join all words back together
    }
    return s;
}

1
এটি সুইফ্ট নয় ...
ক্যালকুলেটরফ্লাইন

2
প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম! এটি একটি সুন্দর প্রথম উত্তর!
অ্যালেক্স এ।

1
পছন্দ করুন
বিড়াল

আপনি যদি শর্তাধীন বিবৃতি (? / অন্যথায়) শর্তাধীন অভিব্যক্তি (? :) এর সাথে প্রতিস্থাপন করেন তবে আপনি প্রায় 9 বাইট সংরক্ষণ করতে পারবেন
ব্যবহারকারী 902383

আমি কীভাবে @ ইউজার 902383 - -১১ বাইটের জন্য যুক্ত করেছি তা জানি না। দুর্ভাগ্যক্রমে আমাকে _টোকেন ডিলিমিটার হিসাবে মিলাতে 3 টিও যোগ করতে হয়েছিল।
CAD97

10

জাভাস্ক্রিপ্ট (ES6), 156 154 152 148 145 141 140 বাইট

ধন্যবাদ @ নীল (by বাইট), @ এটিএইচ প্রডাকশনস (3 বাইট), এবং @ এডসি 65 (7 বাইট)

a=>a[r='replace'](/`|'/g,a='')[r](/[a-z](?=[A-Z][a-z])/g,'$& ')[r](/[^\W_]+/g,b=>a+=(a?b[0].toUpperCase():'')+b.slice(!!a).toLowerCase())&&a

অ্যাস্টোস্ট্রোফস সরায়, তারপরে বিশেষ অক্ষরগুলিতে বিভক্ত করার জন্য / আশেপাশের রাজধানীগুলির আগে একটি প্রতিস্থাপন করে, তারপরে যথাযথ কেসিংয়ের সাথে একত্রিত হয়। দুর্ভাগ্যক্রমে, toLowerCase()এবং toUpperCase()বিরক্তিকরভাবে দীর্ঘ এবং এড়াতে এখানে শক্ত ...


1
আমি একটি ভিন্ন পদ্ধতির উপর কাজ করছিলাম যা আপনার b.slice(i>0)পদ্ধতির জল থেকে প্রবাহিত হয়েছে, তবে মাঝামাঝি সময়ে আমার ম্যাচের রেজেক্স /[A-Z]?([a-z0-9]|[0-9A-Z]{2,})+([A-Z](?![a-z]))?/gআপনার অন্যথায় দক্ষ replaceপদ্ধতির চেয়ে 2 বাইট সংরক্ষণ করতে পারে ।
নিল

1
অথবা আমি আপনার replaceসরাসরি 2 বাইট সংরক্ষণ করতে পারি :replace(/[a-z](?=[A-Z][a-z])/g,'$& ')
নীল

1
সাধারণত match...mapreplace
21c45 এ

1
@ এডসি 65 আমি এই পদ্ধতির সাথে ন্যূনতম 160 বাইট a=>a.replace(/`|'/g,'').replace(/[a-z](?=[A-Z][a-z])/g,'$& ').replace(/[\W_]*([a-z0-9]+)[\W_]*/gi,(_,b,i)=>(i?b[0].toUpperCase():'')+b.slice(i>0).toLowerCase())
পেয়েছি

2
অন্যদিকে, আমি এমন অফার দিতে চাই b=>a+=(a?b[0].toUpperCase():'')+b.slice(!!a).toLowerCase()যা আমি বিশ্বাস করি আপনাকে আরও 4 টি বাইট সংরক্ষণ করবে।
নীল

7

vim, 69 68 66

:s/[`']//g<cr>:s/[a-z]\zs\ze[A-Z][a-z]\|\W\|_/\r/g<cr>o<esc>guggj<C-v>GgU:%s/\n<cr>

পার্লের চেয়ে কম ভিএম ?! এ কী পাগলামি?

:s/[`']//g<cr>           remove ` and '
:s/                      match...
 [a-z]\zs\ze[A-Z][a-z]   right before a lowercase-surrounded uppercase letter
 \|\W\|_                 or a non-word char or underscore
 /\r/g<cr>               insert newlines between parts
o<esc>                   add an extra line at the end, necessary later...
gugg                     lowercasify everything
j                        go to line 2 (this is why we added the extra line)
<C-v>G                   visual select the first char of all-but-first line
gU                       uppercase
:%s/\n<cr>               join all lines into one

একটি নিরর্থক কীস্ট্রোক চিহ্নিত করার জন্য নীলকে ধন্যবাদ !


আমি দেখতে পাচ্ছি কেন শেষ :s রয়েছে %কিন্তু কেন প্রথম দুই অসঙ্গতি?
নীল

@ নীল বাহ, পেশীগুলির স্মৃতি। ধন্যবাদ!
ডুরকনব

5
পার্লের তুলনায় কম পঠনযোগ্য হতে পারে, খুব বেশি +1
বিড়াল

আমি এটি আমার
.vimrc- এ

1
@ ফ্রগলমনকি ১. :%j<cr>সমমান এবং খাটো is 2. এটি লাইনের মধ্যে ফাঁকা স্থান যুক্ত করে।
ডুরকনব

5

গণিত 10.1, 101 বাইট

""<>(ToCamelCase@{##2}~Prepend~ToLowerCase@#&@@StringCases[StringDelete[#,"`"|"'"],WordCharacter..])&

Undocumented ব্যবহার করে ToCamelCase, যা একইভাবে কাজ করে Capitalizeতবে অন্যান্য অক্ষরকে ছোট হাতের সাথে সেট করে।


10.3.0 এ নেই ..
একটি সিমন্স

কি ToCamelCase[n_,m_]:=n<>Capitalize/@mসঠিক? দেখতে এটার মত. এবং কেন কাজ Prependযখন ব্যবহার #~ToCamelCase~{##2}?
ক্যালকুলেটরফলাইন

@ বিড়ালআরএফ্লুফি যা আমাকে দেয়ToCamelCase::argx: ToCamelCase called with 2 arguments; 1 argument is expected.
LegionMammal978

আচ্ছা, ক্যামেলকেস কীভাবে কাজ করে? শুধু ToCamelCase[n_]:=""<>Capitalize/@n?
ক্যালকুলেটরফলিন

@CatsAreFluffy দেখুন এই
LegionMammal978

5

জুলিয়া, 98 89 বাইট

s->lcfirst(join(map(ucfirst,split(replace(s,r"['`]",""),r"[a-z]\K(?=[A-Z][a-z])|\W|_"))))

এটি একটি অনামী ফাংশন যা একটি স্ট্রিং গ্রহণ করে এবং একটি স্ট্রিং প্রদান করে। এটি কল করতে, এটি একটি ভেরিয়েবলের জন্য বরাদ্দ করুন।

পদ্ধতির এখানে Doorknob এর হিসাবে একই পার্ল উত্তর : replace, অ্যাপস্ট্রফিগুলি এবং খালি স্ট্রিং সঙ্গে ব্যাকটিক splitপ্রয়োজনীয় ক্ষেত্রে মিলে যায় একটি রেগুলার এক্সপ্রেশন উপর একটি অ্যারের মধ্যে, অ্যারের উপর ফাংশন প্রতিটি উপাদান, প্রথম অক্ষর বড় হাতের অক্ষরে অ্যারে ফিরে একটি স্ট্রিং, এবং ফলাফল প্রথম অক্ষর ছোট হাতের মধ্যে রূপান্তর।mapucfirstjoinlcfirst


আমি জুলিয়াকে সবসময় বেশি কার্যকরী, আকর্ষণীয় পাইথন হিসাবে পছন্দ করেছি তবে endবাক্য গঠনটি আমি ঘৃণা করি । হয়তো আমি সমস্ত কিছুর জন্য বেনাম ফাংশন ব্যবহার করব, তারপরে আমাকে কখনই টাইপ করতে হবে না end: ডি
বিড়াল

4

পার্ল 67 + 1 = 68 বাইট

y/'`//d;s/([a-z](?=[A-Z][a-z]))|\W|_/$1 /g;$_=lc;s/^ +| +(.)/\u$1/g

-pপতাকাটি প্রয়োজন এবং -lএকাধিক লাইনের জন্য:

$ perl -pl camelCase.pl input.txt
programmingPuzzlesCodeGolf
xmlHttpRequest
supportsIpv6OnIos:
someThingW1thApostrophesAndPuncTuation
nothingSpecial
5pecialCa5e
1337
1337Speak
abcd

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

y/'`//d;                            # Remove ' and `
s/([a-z](?=[A-Z][a-z]))|\W|_/$1 /g; # Replace according to '2. Split...' this will create
                                    #   a space separated string.
$_=lc;                              # lower case string
s/^ +| +(.)/\u$1/g                  # CamelCase the space separated string and remove any
                                    #   potential leading spaces.

2

পার্ল, 87 80 78 বাইট

y/'`//d;$_=join'',map{ucfirst lc}split/[a-z]\K(?=[A-Z][a-z])|\W|_/,$_;lcfirst

বাইট যোগ হয়েছে -pপতাকার ।

প্রথমত, আমরা ইনপুটটিতে সমস্ত অক্ষর একত্র y///করতে ট্রান্সলিটেশন অপারেটরটি ব্যবহার করি :d'`

y/'`//d;

তারপরে কোডের মাংস আসে:

                         split/[a-z]\K(?=[A-Z][a-z])|\W|_/,$_;

(ইনপুট স্ট্রিংটিকে $_যথাযথ স্থানে বিভক্ত করুন , \Kম্যাচের স্ট্রিংয়ে অভিনব ব্যবহার করে আসল ম্যাচ থেকে পূর্ববর্তী অংশটি বাদ দিতে)

          map{ucfirst lc}

(স্ট্রিংয়ের প্রতিটি বিভক্ত অংশের উপরে মানচিত্র করুন এবং পুরো স্ট্রিংকে ছোট হাতের অক্ষরে তৈরি করুন, তারপরে পরিবর্তিত স্ট্রিংয়ের বড় অক্ষরটি তৈরি করুন)

$_=join'',

(খালি স্ট্রিংয়ে যোগ দিন এবং ম্যাজিক আন্ডারস্কোরটিতে পুনরায় নিয়োগ করুন $_, যা শেষে মুদ্রিত হবে)

শেষ অবধি, আমরা প্রথম অক্ষরটিকে রেজেেক্স-ম্যাচ করে এবং\l একটি বিল্টিনের সাথে প্রতিস্থাপনের স্ট্রিং ব্যবহার করে, আগের পদ্ধতির চেয়ে 2 বাইট সংরক্ষণ করে:

lcfirst

7 মার্ট ( [^a-zA-Z\d]-> \W|_) এর জন্য @ মার্টিনব্যাটনারকে ধন্যবাদ !


1
আমি কীভাবে \K
মার্টিন এন্ডার

2

লুয়া, 127 বাইট

t=''l=t.lower z=io.read()for x in z:gmatch('%w+')do t=t..(t==''and l(x:sub(1,1))or x:sub(1,1):upper())..l(x:sub(2))end return t

স্টিডিনের কাছ থেকে একটি স্ট্রিং গ্রহণ করে এবং উটযুক্ত ফলাফলগুলি প্রদান করে।

ভেরিয়েবলের সমস্ত কিছু সঞ্চয় করার পক্ষে সম্ভবত এখনও আরও ভাল সমাধানের সন্ধান করা হবে।

তবে যাইহোক, সাধারণভাবে বেশ সহজ:

 z:gmatch('%w+')

এটি সেই সৌন্দর্য যা আমাকে কিছুটা বাইট সংরক্ষণ করেছিল। গ্যা্যাম্যাচ স্ট্রিংটিকে প্যাটার্নের ভিত্তিতে বিভক্ত করবে:%w+ যা কেবলমাত্র

এর পরে এটি সরল স্ট্রিং অপারেশন। স্ট্রিং.ইপার, স্ট্রিং.লুওয়ার এবং হয়ে গেছে।


2

পিএইচপি, 145 122 133 বাইট

<?=join(split(" ",lcfirst(ucwords(strtolower(preg_replace(["#`|'#","#\W|_#","#([a-z])([A-Z][a-z])#"],[""," ","$1 $2"],$argv[1]))))));

ফাইলে সংরক্ষণ করুন, সিএলআই থেকে কল করুন।
একটি একক কমান্ড লাইন আর্গুমেন্ট থেকে ইনপুট নেয়; যেখানে প্রয়োজন উদ্ধৃতি এবং সাদা স্থান।

ভাঙ্গন

<?=                 // 9. print result
join(split(" ",     // 8. remove spaces
    lcfirst(        // 7. lowercase first character
    ucwords(        // 6. uppercase first character in every word
    strtolower(     // 5. lowercase everything
    preg_replace(
        ["#`|'#",   "#\W|_#",   "#([a-z])([A-Z][a-z])#"],
        ["",        " ",        "$1 $2"],
        // 2. replace apostrophes with empty string (remove them)
                    // 3. replace non-word characters with space
                                // 4. insert space before solitude uppercase
        $argv[1]    // 1. take input from command line
    ))))
));

lcfirstএটি একটি একক কমান্ডে হ্রাস করার অনুমতি দেয়, 23 বাইট সংরক্ষণ করে।
অতিরিক্ত প্রতিস্থাপনের ক্ষেত্রে অ্যাডোস্ট্রোফস ঠিক করতে 11 বাইট খরচ হয়।


1

কোটলিন , 160 বাইট

fun a(s: String)=s.replace(Regex("['`]"),"").split(Regex("[\\W_]+|(?<=[a-z])(?=[A-Z][a-z])")).map{it.toLowerCase().capitalize()}.joinToString("").decapitalize()

আমার লক্ষ্যটি ছিল অন্যান্য "বিকল্প জাভা" স্কালাকে, তাই আমি আমার ফলাফল নিয়ে কিছুটা খুশি। আমি জাভা উত্তর থেকে রেজেক্স চুরি করেছি ।

এটি দিয়ে পরীক্ষা করুন:

fun main(args: Array<String>) {
    val testCases = arrayOf(
            "Programming Puzzles & Code Golf",
            "XML HTTP request",
            "supports IPv6 on iOS?",
            "SomeThing w1th, apo'strophe's and' punc]tuation",
            "nothing special",
            "5pecial ca5e",
            "1337",
            "1337-spEAk",
            "abcD",
            "a",
            "B")
    testCases.forEach { println(a(it)) }

}

এই মুহুর্তে আমি মনে করি প্রত্যেকে অপ্টিমাইজড রেজেক্সকে "ধার" দিচ্ছে \W|_|(?<=[a-z])(?=[A-Z][a-z])বা সামান্য এটি সংশোধন করছে যেমন। [\W_]+
CAD97

আপনি মানচিত্র এবং এক্সটেনশন ফাংশনে কিছু সঞ্চয় করতে পারেনfun String.a()=replace(Regex("['`]"),"").split(Regex("[\\W_]+|(?<=[a-z])(?=[A-Z][a-z])")).joinToString(""){it.toLowerCase().capitalize()}.decapitalize()
সম্ভবত

1

স্কালা, 181 170 144

def f(s:String)={val l=s.replaceAll("'|`","")split("[\\W_]+|(?<=[a-z])(?=[A-Z][a-z])")map(_.toLowerCase);l(0)+l.tail.map(_.capitalize).mkString}

পরীক্ষক:

val testCases = List(
  "Programming Puzzles & Code Golf" -> "programmingPuzzlesCodeGolf",
  "XML HTTP request" -> "xmlHttpRequest"
  // etc
)
println(testCases.map(t=>if(t._2!=f(t._1))s"FAIL:${f(t._1)}"else"PASS").mkString("\n"))

থেকে সাজসরঞ্জাম CAD97 করুন এবং ক্ষমা নাথান মেরিল :)


1
আপনি প্রতিস্থাপন 6 বাইট সংরক্ষণ করতে পারবেন [^a-zA-Z0-9]+সঙ্গে [\\W_]+
CAD97

0

সি 272 টি অক্ষর

সি প্রোগ্রামটি স্ট্রিংটি উটকেসে স্ট্রিংটি আর্গুমেন্ট হিসাবে 1 হিসাবে উদ্ধৃতিতে পাস করুন এই সমস্যা বিবৃতিতে অনেকগুলি আছে ...

#define S strlen(t)
#define A isalnum(t[i])
j=0;main(i,v)char**v;{char*p=v[1],*t;char o[99]={0};while(t=strtok(p," [{(~!@#$%^*-+=)}]")){i=0;p+=S+1;while((!A)&&i<S)i++;if(i!=S){o[j]=((j++==0)?tolower(t[i++]):toupper(t[i++]));while(i<S){if(A)o[j++]=t[i];i++;}}}puts(o);}

আপনাকে করার প্রয়োজন #include<string.h>জন্য strlen, strtokএবং toupper, এবং #include<ctype.h>জন্য isalnum
মেগো

সাইগউইনে জিসিসি ৩.৪.৪ ব্যবহার করে আমার এটির দরকার নেই। বাহ্যিক int ধরে ধরে সেগুলি অবশ্যই স্বয়ংক্রিয়ভাবে লিঙ্ক হওয়া উচিত।
ক্লিভ্ল্যাঙ্ক

সঙ্গে ./camel "Programming Puzzles & Code Golf"cygwin উপর (জিসিসি 3.4.4 সঙ্গে কম্পাইল), আমি পেতে programmingPuzzlesCodeEGolf। 5.3.0 সহ একই আউটপুট।
মেগো

বিষ্ঠা। আমিও. গল্ফ করার সময় আমি অবশ্যই একটি বাগ তৈরি করেছি। আমি এখন এটি খুঁজছি ...
ক্লাব্ল্যাঙ্ক

সমস্যাটি হ'ল আমি গল্ফ করার পরে অন্যান্য টোকনাইজার স্ট্রিং যুক্ত করেছি এবং এটি যথেষ্ট ভাল পরীক্ষা করেছিলাম না। আপনি যদি স্ট্রোকক কল থেকে '&' সরিয়ে ফেলেন তবে এটি সেই ইনপুটটিতে কাজ করে।
ক্লাব্ল্যাঙ্ক

0

জাভাস্ক্রিপ্ট, 123 বাইট

v=>v[r="replace"](/[`']/g,"")[r](/^.|.$|[A-Z][^a-z]+/g,x=>x.toLowerCase())[r](/[^a-z0-9]+./ig,x=>x.slice(-1).toUpperCase())

পাঠযোগ্য সংস্করণ

v=>
  v.replace(/[`']/g,"")
  .replace(/^.|.$|[A-Z][^a-z]+/g,x=>x.toLowerCase())
  .replace(/[^a-z0-9]+./ig,x=>x.slice(-1).toUpperCase())

অ্যাডোস্ট্রোফস সরান, প্রথম অক্ষরকে ছোট হাতের অক্ষর তৈরি করুন, শেষ অক্ষর ছোট হাতের অক্ষর এবং একাধিক বড় হাতের অক্ষরের কোনও গোষ্ঠীকরণ, 1 বা আরও অ-অক্ষরীয় অক্ষর + 1 অন্য বর্ণের যে কোনও গ্রুপের সাথে মেলে, সেই শেষ চরিত্রটিকে মূলধন হিসাবে প্রতিস্থাপন করুন।

[r = "প্রতিস্থাপন"] মিঃ ডব্লিউ 247 এর সমাধান থেকে কৌশল trick

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