स्ट्रिंग को बड़ा करें


18

एक स्ट्रिंग को देखते हुए, इसे कैपिटलाइज़ करें। पूंजीकरण से मेरा मतलब है कि conTeNT-lENgthपरिवर्तन Content-Length। उदाहरण में मैंने 2 शब्दों के साथ स्ट्रिंग -को शब्द सीमा के रूप में दिखाया । हालाँकि मुझे उम्मीद है कि आप किसी एक वर्ण द्वारा सीमा के रूप में अलग किए गए किसी भी शब्द के स्ट्रिंग के लिए कोड लिखेंगे । यह सीमा स्ट्रिंग में बदल सकती है।

शर्तेँ

  1. उपयोग करने regular expressionsकी अनुमति नहीं है
  2. एक वाक्य (स्ट्रिंग) में किसी भी संख्या में शब्द हो सकते हैं।
  3. प्रत्येक शब्द में किसी भी मामले के Englishअक्षर शामिल होंगे [a-zA-Z]
  4. वाक्य में अलग-अलग शब्द एक ही वर्ण द्वारा अलग किए जाएंगे। यह चरित्र होगा केवल में से किसी एक हो -, ., <space-character>, /, &, #। आप सुरक्षित रूप से मान सकते हैं कि वाक्य में उल्लिखित लोगों के अलावा कोई अन्य चरित्र नहीं होगा ।
  5. शब्द सीमाओं को आउटपुट में संरक्षित किया जाना चाहिए।
  6. सबसे छोटा कोड जीतता है।

उदाहरण के लिए आपके प्रोग्राम के Begin/With.Type&Contentलिए आउटपुट होना चाहिए BeGin/wITH.tyPE&conTeNt

Some test cases:
 "aGeNT ACcEpT/LEngTh-tYPe USeR raNgE.TyPe" 
 "type&AgeNt/CC/COnteNt lEnGth#acCePT/AgeNt.RAnGe-Cc/contEnt/cODe" 
 "cc/rEspoNCe.lEngtH#tYpE-witH&UsEr/bEgIN&uSer.AGEnT&begIn/aCCEPt/Cc" 
 "lENgTH#USeR.tYpE/BeGiN&LENGth tYpe/ACCEpt#rANge/codE&AnD-ACCepT/ConTenT" 
 "contENT/ACcEpT" 
 "BeGin/wITH.tyPE&conTeNt"
 "Code.cc#User.lenGTh-USer-AND&tyPE TypE&leNgtH.tYPe usER.UseR&with" 
 "RaNgE&COnTeNT WITh CoNTENT-TypE tyPe"
 "BEgin COdE#uSeR#aGeNt.USeR"
 "TypE LENGth"

2
जिसे आप कैपिटलाइज़ेशन कहते हैं, वह वास्तव में ऊँट-केस का रूपांतरण है।
पियरे अरलाउड

6
@ArlaudPierre नहीं, उसे "परीक्षण मामलों" के रूप में जो दिया गया है, वह ऊंट मामले की तरह है। जिसे कैपिटलाइज़ेशन कहा जा रहा है वह टाइटल केस के करीब है।
इज़्ज़ी

क्या आप परीक्षण मामलों के लिए अपेक्षित आउटपुट प्रदान कर सकते हैं? ऐसा लगता है कि कुछ अंतर्निहित कार्य यह मान सकते हैं कि ऑल-कैप शब्द (जैसे /CC/पंक्ति 2, या -AND&पंक्ति 7 में) को अकेला छोड़ दिया जाना चाहिए। क्या यह ठीक है, इस चुनौती के लिए?
इस्सी

क्या इनपुट हमेशा एक शब्द से शुरू होता है या एक विभाजक से शुरू हो सकता है?
lebatsnok

जवाबों:


7

GolfScript, 36 27 19 अक्षर

0\{95&+.47>32*\}%\;

एक काफी बुनियादी गोल्फस्क्रिप्ट दृष्टिकोण जो विनिर्देश के अनुसार सभी इनपुट के लिए काम करता है। उदाहरणों का परीक्षण ऑनलाइन किया जा सकता है ।


ठंडा। उत्सुक था कि क्या मेरा समाधान एक पेशेवर के रूप में कम से कम दो बार है। :) लेकिन मुझे यकीन है कि आप दिन खत्म होने से पहले इसे कई बार छोटा कर देंगे।
मैनटवर्क

@manatwork अब हमारे पास दो का कारक है ;-) अभी भी सभी स्वैप से नाखुश हैं।
हावर्ड

मुझे पता था कि आप मुझे निराश नहीं करेंगे।
१३:५३ बजे मैनेटवर्क

22

पायथन 3,22

print(input().title())

यह कोड स्टड से इनपुट के रूप में एक स्ट्रिंग लेगा और stdout को एक कैपिटल आउटपुट देगा।

उदाहरण के लिए:

इनपुट:

BEGIN/wITH.tyPe&cOnTENt

ouput:

Begin/With.Type&Content

निम्नलिखित कोड मल्टी-लाइन इनपुट के लिए है (यदि आवश्यक हो)

पायथन 3, 46

import sys
for i in sys.stdin:print(i.title())

while 1:print(input.title())कोड के अंतिम टुकड़े के लिए एक छोटा समतुल्य है।
रामचंद्र आपटे

1
@ रामचंद्रअपे मुझे यकीन नहीं है कि इसकी अनुमति है या नहीं। जैसे ही इसके EOF
Wasi

1
मुझे लगता है कि गोल्फों के लिए आम सहमति यह है कि जब तक आउटपुट सही है, तब तक त्रुटियां मायने नहीं रखतीं
अस्थिरता

डैंग; जैसे ही मैंने यह प्रश्न देखा, मैंने इसके बारे में सोचा, लेकिन आपने मुझे इसे हरा दिया। +1
जस्टिन

+1 मुझे यह गोल्फ की तुलना में बेहतर लगता है क्योंकि यह अश्लीलता की तरह नहीं दिखता है।
टिम सेगुईन

6

गणितज्ञ 62

डेटा

tests={"aGeNT ACcEpT/LEngTh-tYPe USeR raNgE.TyPe","type&AgeNt/CC/COnteNt lEnGth#acCePT/AgeNt.RAnGe-Cc/contEnt/cODe","cc/rEspoNCe.lEngtH#tYpEwitH&UsEr/bEgIN&uSer.AGEnT&begIn/aCCEPt/Cc","lENgTH#USeR.tYpE/BeGiN&LENGth tYpe/ACCEpt#rANge/codE&AnD-ACCepT/ConTenT","contENT/ACcEpT","BeGin/wITH.tyPE&conTeNt","Code.cc#User.lenGTh-USer-AND&tyPE TypE&leNgtH.tYPe usER.UseR&with","RaNgE&COnTeNT WITh CoNTENT-TypE tyPe","BEgin COdE#uSeR#aGeNt.USeR","TypE LENGth"}

कोड

StringReplace[ToLowerCase@#,WordBoundary~~x_:>ToUpperCase@x]&

प्रयोग

f["aGeNT ACcEpT/LEngTh-tYPe USeR raNgE.TyPe"]

"एजेंट स्वीकार / लंबाई-प्रकार उपयोगकर्ता Range.Type"

f /@ tests

{"एजेंट स्वीकार / लंबाई-प्रकार उपयोगकर्ता की सीमा। टाइप",
"प्रकार और एजेंट / सीसी / सामग्री की लंबाई # स्वीकार / एजेंट.रेंज-सीसी / सामग्री / कोड", "सीसी / प्रतिक्रिया। गति # प्रकार-के साथ और उपयोगकर्ता / आरंभ और उपयोगकर्ता। तेजी और शुरुआत / Accept / Cc "," लंबाई # User.Type / Begin & लंबाई प्रकार / Accept # रेंज / कोड और एंड-एक्सेप्ट / कंटेंट "," Content / Accept ",
" Begin / With.Type & Content ",
" Code.Cc # User.Length-User -और प्रकार और लंबाई टाइप करें। टाइप करें User.User & With ",
" रेंज और कंटेंट विथ कंटेंट-टाइप टाइप ",
" बिगिन कोड # यूजर # Agent.User ",
" टाइप लेंथ "}


-1 - यह मूल रूप से रेगेक्स है
कैलकुलेटर

गणितज्ञ सीधे रेगेक्स चला सकते हैं लेकिन मैंने कुछ और इस्तेमाल किया। यह रेगेक्स के समान है, लेकिन यह रेगेक्स नहीं है।
डेविड


6

जावास्क्रिप्ट (94)

prompt().split(l='').map(function(a){return l='A'>l?a.toUpperCase():a.toLowerCase()}).join('')

5

PHP: 78 73 65 64 वर्ण

$b=ucfirst;foreach(str_split($s)as$c)echo$b($c),!$b[0]=$c<A?u:l;

इनपुट में पारित हो जाता है $s। यह पात्रों के एक सरणी के रूप में स्ट्रिंग पर संचालित होता है।

यह एक साधारण 2 स्टेट मशीन है। यह स्ट्रिंग्स के शाब्दिक आदेश पर निर्भर करता है, और यह कि पार्सर स्वचालित रूप से मानता है कि आपको कुछ मामलों में एक स्ट्रिंग टाइप करना है।

राज्य को संग्रहीत किया जा रहा है $bऔर उस फ़ंक्शन के नाम के रूप में दर्शाया जा रहा है जिसे अगले चरित्र पर बुलाया जाना चाहिए। ucfirstऔर lcfirstटाइप करें और के समान व्यवहार करने के लिए अपेक्षाकृत कम होता है strtolower/ strtoupperएक वर्ण तारों पर। इसके अलावा, चूंकि वे केवल एक अक्षर से भिन्न होते हैं, हम उन्हें राज्य को संग्रहीत करने के लिए कुशलतापूर्वक उपयोग कर सकते हैं। मूल संस्करण को बूलियन में राज्य को स्पष्ट रूप से संग्रहीत करने की आवश्यकता है।

चूंकि इको बूलियन झूठी के लिए कुछ भी प्रिंट नहीं करता है, मैंने !इको स्टेटमेंट में असाइनमेंट (जो इस मामले में सत्य है) को "छिपाने" के लिए एक अल्पविराम और ऑपरेटर का उपयोग किया । इसने मुझे एक चरित्र को हटाने की अनुमति दी {}


कृपया इनलाइन कोड के बजाय कोड ब्लॉक मार्कअप का उपयोग करें, इसलिए कोड गोल्फ यूजरस्क्रिप्ट एन्हांसमेंट पैक जैसी स्क्रिप्ट कोड के नीचे का आकार सम्मिलित कर सकते हैं। वैसे, आपके कोड में सभी 3 अंतरिक्ष वर्णों को हटाया जा सकता है।
मनटवर्क

इसके बजाय $b=ord($c)>64;कोशिश करें $b=$c>"@";। या यहां तक ​​कि $b=$c>=A;- AFAIR जो एक चेतावनी फेंकता है, लेकिन अच्छी कोडिंग प्रथाओं यहाँ एक पुण्य नहीं हैं।
मनटवर्क

@manatwork धन्यवाद, ऐसा नहीं सोचा था। मैं पहले से ही किसी भी तरह एक परेशान चर का उपयोग करने के लिए एक चेतावनी फेंक रहा हूँ।
टिम सेगिन

हम्म ... $ b को केवल ध्वज के रूप में उपयोग नहीं करने के बारे में, लेकिन इसमें वास्तविक फ़ंक्शन नाम को संग्रहीत करने के बारे में क्या? $b=ucfirst;foreach(str_split($s)as$c){echo$b($c);$b[0]=$c>=A?l:u;}
मैनटवर्क

@ महान काम! मैं फ़ंक्शन के साथ ऐसा करने का एक तरीका सोचने की कोशिश कर रहा था। मेरी कोशिशें सब बड़ी थीं।
टिम सेगिन

4

सी, 83

n;main(c){c=getchar();putchar(c>96?n?c:(n=c-32):c&64?n?c+32:(n=c):(n=0,c));main();}

लाइनों पर ले जाता है stdin, उन्हें अनुवाद करता है stdout। (पसंद SIGINTकरता है EOF।)


4

पॉवर्सशैल: ३owers - ४३

आप कैसे इनपुट लेना चाहते हैं इसके आधार पर ...

इनपुट के लिए उपयोगकर्ता को प्रेरित करें: 43

(Culture).TextInfo.ToTitleCase((read-host))

पाइपलाइन से इनपुट लें: 38

(Culture).TextInfo.ToTitleCase($input)

स्क्रिप्ट चलाते समय एक तर्क के रूप में इनपुट प्रदान करें: 37

(Culture).TextInfo.ToTitleCase($args)

नोट: उपरोक्त लिपियाँ ऑल-कैप्स शब्दों को अनदेखा कर देंगी, जैसा कि वे छोड़ रहे हैं। यदि इसके लिए जिम्मेदार होने की आवश्यकता है, तो इनपुट को शीर्षक केस रूपांतरण से पहले कम-केस के लिए मजबूर किया जाना चाहिए। यह पहली विधि में 10 अक्षर जोड़ता है, और 12 अन्य दो के लिए।

(Culture).TextInfo.ToTitleCase((read-host).ToLower())
(Culture).TextInfo.ToTitleCase("$input".ToLower())
(Culture).TextInfo.ToTitleCase("$args".ToLower())

विनिर्देश के अनुसार काम नहीं करता है। कोशिश करो foo:bar
मोर्मगिल

@Mormegil कौन सा? रीड-होस्ट संस्करण, कम से कम, मेरे लिए ठीक काम करता है। मैंने प्रश्न में सभी परीक्षण मामलों के खिलाफ इसका परीक्षण किया और वे सभी प्रश्न के लिए टिप्पणी में पोस्ट किए गए विशेष मामलों को छोड़कर उम्मीद के मुताबिक वापस आ गए।
इस्सी

:(कोलन) को नियम 4 में शब्द विभाजक के रूप में सूचीबद्ध नहीं किया गया है, इसलिए, AFAICS foo:barको परिणाम में होना चाहिए Foo:bar, नहीं Foo:Bar । लेकिन यह विनिर्देशन का सिर्फ मेरा (काफी सख्त) पठन है।
मॉर्मगिल

2
@Mormegil खैर, यह साफ-सुथरा है। ऐसा लगता है कि उस अस्पष्टता को हल करने के लिए कल्पना को घुमाया गया था, जबकि एक ही समय में इस उत्तर को अमान्य नहीं किया गया था।
इज़्ज़ी

1
आप के get-cultureसाथ बदल सकते हैं culture; देखें कोडगॉल्फ.स्टैकएक्सचेंज.com
डेंको डर्बिएक

4

जावा - 209 अक्षर

class C{
public static void main(String[]a){
for(String b:a){
char[]k=b.toLowerCase().toCharArray();
for(int i=-1;i<k.length;i++){if(i<0||"-. /&#".indexOf(k[i])>=0)k[++i]=(char)(k[i]-32);}
System.out.println(k);}}}

मैंने केवल पठनीयता के लिए नई कड़ियाँ जोड़ीं।


3

आर, 143 116

एक समाधान शायद थोड़ा लंबा है लेकिन यहाँ हम चलते हैं:

f=function(x){a=sapply(1:nchar(x),function(y)substr(tolower(x),y,y));d=c(1,which(!a%in%letters)+1);a[d]=toupper(a[d]);cat(a,sep="")}

थोड़ा असंयमित और समझाया:

f <- function(x){
    #Split the string in characters and "lower-case" everything
    a <- sapply(1:nchar(x),function(y)substr(tolower(x),y,y))
    #Select the first character and each character following a 
    #character that doesn't belong to lower case alphabet
    d <- c(1,which(!a%in%letters)+1)
    #Make those ones uppercase.
    a[d] <- toupper(a[d])
    #Output (stdout) while pasting them back together.
    cat(a,sep="")
    }

संपादित करें : 116 वर्ण

यहां मुख्य चुनौती वेक्टर करना है substr। यहाँ एक और कम क्रिया तरीका है।

f=function(x){n=1:nchar(x);a=mapply(substr,tolower(x),n,n);d=c(T,!a%in%letters);a[d]=toupper(a[d]);cat(a[n],sep="")}

इंडेंट:

f <- function(x){
    n <- 1:nchar(x)
    a <- mapply(substr,tolower(x),n,n)
    d <- c(T,!a%in%letters) #This has been simplified as well
    a[d] <- toupper(a[d])
    cat(a[n],sep="") #Because a is now 1 char longer than x, need to subset a
    }

उपयोग:

> f("aGeNT ACcEpT/LEngTh-tYPe USeR raNgE.TyPe")
Agent Accept/Length-Type User Range.Type

आप कुछ पात्रों को बचा सकते हैं। चूँकि aकेवल लोअरकेस वर्णों की सहमति है, इसलिए अपरकेस के साथ मैचों की जाँच करने की कोई आवश्यकता नहीं है LETTERS
स्वेन होइनस्टीन

@SvenHohenstein वास्तव में, धन्यवाद!
प्लेनैपस

एक और एक: आप के TRUEसाथ बदल सकते हैं T
स्वेन होइनस्टीन

मूल रूप से मैं tolowerबाद में था।
प्लेनैपस

ठीक है, यहाँ एक और एक ;-) आप एक चरित्र को बचाने के mapply(substr,tolower(x),n,n) साथ बदल सकते हैं strsplit(tolower(x),"")[[1]]
स्वेन होइनस्टीन

3

Befunge 98 - 24 45

~\j:'``!3*j' -;:'``b*j:'/`!3*j' +#;:,'/`!jc#@

इसे लिखने से मेरे दिमाग पर चोट लगी।

यह इनपुट लेता है ~और यदि पिछला चरित्र विभाजकों में से एक था (या यदि कोई पिछला चरित्र नहीं था), तो यह निष्पादित होता है

:'``!3*j' -;

यह स्निपेट चरित्र को ले जाता है, और यदि इसका एससीआई मान इससे अधिक या इसके बराबर है a, तो यह इसमें से 32 घटाता है, इस प्रकार इसे ऊपरी मामले में बदल देता है। यदि इससे कम है a, 3*jतो समायोजन को रोक देता है। बाद में, यह अगले भाग को छोड़ देता है। यह भाग ऊपरी मामले से निचले मामले में बदल रहा है (मुझे यकीन है कि इसे अगले भाग के साथ विलय किया जा सकता है; मुझे यकीन नहीं है कि कैसे)

:'``b*j:'/`!3*j' +#;

चरित्र मुद्रित होता है ( ,), फिर यह जांचता है कि क्या चरित्र सीमाओं में से एक है:

'/`!

यह मूल रूप से चरित्र की तुलना इस्की मूल्य से करता है /। यदि चरित्र सीमा नहीं है, तो कोड धक्का देता है 12ताकि यह अगली बार पूंजीकरण समायोजन को छोड़ देगा। #अंतिम कार्यक्रम पर स्किप करता है: @और यदि इनपुट समाप्त हो ~जाता है @, तो प्रोग्राम को समाप्त करते हुए कोड निष्पादन को वापस भेज देता है ।


3

रूबी: 60 51 50 47 वर्ण

$_.downcase.chars{|c|$><<$/=$/<?0?c.upcase: c}

नमूना रन:

bash-4.1$ for line in "${test[@]}"; do printf '%-75s | %s\n' "$line" "$( ruby -ne '$_.downcase.chars{|c|$><<$/=$/<?0?c.upcase: c}' <<< "$line" )"; done
aGeNT ACcEpT/LEngTh-tYPe USeR raNgE.TyPe                                    | Agent Accept/Length-Type User Range.Type
type&AgeNt/CC/COnteNt lEnGth#acCePT/AgeNt.RAnGe-Cc/contEnt/cODe             | Type&Agent/Cc/Content Length#Accept/Agent.Range-Cc/Content/Code
cc/rEspoNCe.lEngtH#tYpE-witH&UsEr/bEgIN&uSer.AGEnT&begIn/aCCEPt/Cc          | Cc/Responce.Length#Type-With&User/Begin&User.Agent&Begin/Accept/Cc
lENgTH#USeR.tYpE/BeGiN&LENGth tYpe/ACCEpt#rANge/codE&AnD-ACCepT/ConTenT     | Length#User.Type/Begin&Length Type/Accept#Range/Code&And-Accept/Content
contENT/ACcEpT                                                              | Content/Accept
BeGin/wITH.tyPE&conTeNt                                                     | Begin/With.Type&Content
Code.cc#User.lenGTh-USer-AND&tyPE TypE&leNgtH.tYPe usER.UseR&with           | Code.Cc#User.Length-User-And&Type Type&Length.Type User.User&With
RaNgE&COnTeNT WITh CoNTENT-TypE tyPe                                        | Range&Content With Content-Type Type
BEgin COdE#uSeR#aGeNt.USeR                                                  | Begin Code#User#Agent.User
TypE LENGth                                                                 | Type Length

1
ना l==l.swapcaseही के रूप में l<?0(परीक्षण नहीं)? इस कार्य के लिए कम से कम इनपुट की अनुमति है।
हावर्ड

हाँ। अब उस बल्लेबाज ने जोर देकर कहा कि किसी भी अन्य विभाजकों से अपेक्षा नहीं की जानी चाहिए, वास्तव में यह छोटा है। शुक्रिया, @ हावर्ड।
१ '

2

सी # - 110

एक साधारण परिमित-राज्य-मशीन-आधारित प्रसंस्करण:

x.Aggregate(new{b=1>0,r=""},(s,c)=>new{b="-. /&#".Contains(c),r=s.r+(s.b?Char.ToUpper(c):Char.ToLower(c))}).r

(जहां xहै stringफायदा उठाने में)

और निश्चित रूप से, यदि आप उबाऊ होना चाहते हैं (विनिर्देश अद्यतन किए जाने के बाद), तो आप उपयोग कर सकते हैं

new CultureInfo(9).TextInfo.ToTitleCase(x)

या, सभी बोरिंग बॉयलरप्लेट के साथ:

class C{static void Main(string[]a){System.Console.WriteLine(new System.Globalization.CultureInfo(9).TextInfo.ToTitleCase(a[0]));}}

नाह, संकलन नहीं होगा क्योंकि C # कोई स्क्रिप्टिंग भाषा नहीं है और आपको इसे एक कक्षा में एनकोड करना होगा।
पियरे अरलाउड

2
कौन कहता है? Microsoft (R) Roslyn C# Compiler version 1.2.20906.1 Loading context from 'CSharpInteractive.rsp'. Type "#help" for more information. > "foobar".Aggregate(new{b=1>0,r=""},(s,c)=>new{b="-. /&#".Contains(c),r=s.r+(s.b?Char.ToUpper(c):Char.ToLower(c))}).r "Foobar"लेकिन अगर आप उबाऊ बॉयलरप्लेट के बारे में वास्तव में परवाह करते हैं, तो इसके 112 अक्षर जोड़ें।
मोरमगिल

1
आप बॉयलरप्लेट से publicऔरstring[]a
जॉनबोट

अरे हाँ, आप सही हैं public, लेकिन मुझे तर्क की आवश्यकता है, जैसा कि मैंने प्रक्रिया की है ...
मॉरमगिल

2

जावास्क्रिप्ट 102

prompt().split(o=q='').map(function(c){o+=(q)?c.toLowerCase():c.toUpperCase(),q=('A'>c)?0:1})
alert(o)

आपको टर्नरी स्थिति के आसपास कोई (… नहीं चाहिए )। इससे भी अधिक, आपको दूसरी टर्नरी की आवश्यकता नहीं है function(c){o+=q?c.toLowerCase():c.toUpperCase(),q='@'<c}:।
मैनटवर्क

2

फोर्थ, 135

: s swap ;
: c 1 begin key dup 96 > if s if 32 - then 0 s 
else dup 64 > if s 0= if 32 + then 0 s then else 1 s then then emit again ; c

अनूदित आउटपुट को stdoutवैसे ही लिखा जाता है जैसा वह पढ़ता है stdin


1
"फिर फिर से बाहर निकलें" आगे के साथ तुकबंदी!
बिल्ली

2

बेगुंजे -98 (29), सी (65)

चूंकि विधि / एल्गोरिथ्म बहुत समान है, इसलिए मैं एक ही पोस्ट में दोनों संस्करणों को शामिल करता हूं। दोनों इस बात पर नज़र रखने पर निर्भर करते हैं कि अंतिम वर्ण एक प्रतीक या पत्र था, ताकि यह पता चल सके कि किसी पत्र को नीचे करना है या नहीं।

Befunge-98 (29)
#@~:'0` #v_,0>
',++@'% '<   ^
सी (65)
c,d;main(){for(;~(c=getchar());d=c>48)putchar(c<48?c:c&95|32*d);}


1

एक्सेल VBA-11 अक्षर

तत्काल खिड़की में

?[Proper()]

VBscript

Set xlapp = CreateObject("excel.application")
wscript.echo xlapp.Evaluate("Proper(""BeGin/wITH.tyPE&conTeNt"")"

क्या आप उपयोग पर कुछ सहायता प्रदान कर सकते हैं? मुझे "कंपाइल एरर: एक्सटर्नल नेम नॉट डिफाइन" मिलता है। (डेवलपर 2013 में वर्ड टैब पर मैंने विजुअल बेसिक पर क्लिक किया, उसके बाद विजुअल बेसिक में एप्लीकेशन I के लिए आपके कोड को तत्काल विंडो में कॉपी-पेस्ट किया और एंटर दबाया।)
मैनटवर्क

@ मैनटवर्क मुझे स्पष्ट करना चाहिए था कि यह एक्सेल में था। आप इसे Word से कर सकते हैं, लेकिन Excel को स्वचालित करने के लिए पथ अधिक लंबा है।
brettdj

1
ठंडा। पूरी तरह से तब काम करता है जब VBA की शुरुआत Excel 2013 से होती है।
manatwork

एक्सेल में भी सीधे काम करता है:, =PROPER(A1)11 बाइट्स
Wernisch

1

AWK, 113 103 बाइट्स

{for(;++i<=split($0,a,"");){s=a[i]
O=O (L?tolower(s):toupper(s))
L=1
if(index("-. /&#",s))L=0}print O}

यह सिंगल लाइन कंटेंट के लिए ठीक काम करता है, लेकिन मल्टीलाइन इनपुट के लिए एक जोड़ी इनिट्स को जोड़ना पड़ता है

{O=""
for(L=0;++i<=split($0,a,"");){s=a[i]
O=O (L?tolower(s):toupper(s))
L=1
if(index("-. /&#",s))L=0}print O}

यह अच्छा होगा यदि हम खेतों में रिकॉर्ड के स्वचालित विभाजन का लाभ उठा सकते हैं और उक्त क्षेत्रों को संशोधित कर सकते हैं, लेकिन फिर हम अपने क्षेत्र विभाजकों को खो देंगे। :(

मुझे पता है कि यह जवाबों का सबसे बड़ा हिस्सा नहीं है और यह एक पुराना सवाल है, लेकिन मुझे लगता है कि AWK CG के उत्तर-स्थान में रेखांकित किया गया है :)

(कोड का परीक्षण करने के लिए धन्यवाद @manatwork, यह अब काम करना चाहिए :) साथ ही प्रवाह को बदल दिया लेकिन बाइट-काउंट को समान रखा, कुछ ;को नई सुर्खियों के साथ बदल दिया ।)


1
क्या आपको यकीन है? कोई भी कोड आवश्यक उत्पादन का उत्पादन करने के लिए न तो लगता है gawk, न ही , mawkया original-awk। (उबंटू पर परीक्षण किया गया।)
मैनटवर्क

इसे gawkRHEL6 बॉक्स पर उपयोग करके लिखा गया था , लेकिन फिर इसे एक विंडोज़ बॉक्स में स्थानांतरित कर दिया गया। बहुत अच्छी तरह से एक प्रतिलेखन मुद्दा हो सकता है। मैं काम के बाद परीक्षण की कोशिश करूंगा जब मैं एक ही मशीन पर परीक्षण और पोस्ट कर सकता हूं .... मुझे लगता है कि मैं इस मुद्दे को देखता हूं, वैसे भी। l=0होना चाहिएL=0
रॉबर्ट बेन्सन

उम्मीद है कि यह अब काम करता है, @manatwork। परीक्षण के लिए धन्यवाद। :)
रॉबर्ट बेन्सन

1
अब सही ढंग से काम करने लगता है। सभी परीक्षण मामलों की जाँच नहीं की गई है, लेकिन इसे थोड़ा कम करना संभव प्रतीत होता है {for(l=split($0,a,$0="");i<=l;s=a[++i]){$0=$0(L?toupper(s):tolower(s));L=index("-. /&#",s)}}1:।
मैनटवर्क

मुझे बदलने का आपका प्रयोग पसंद है $0और कमांड 1से बचने के लिए लेबल printवे चीजें हैं जिन्हें मैंने करने के बारे में नहीं सोचा है। मुझे इसे भविष्य के गोल्फिंग के लिए ध्यान में रखना होगा :)
रॉबर्ट बेंसन

1

PHP (> v5.4.32) - 25 वर्ण

<?=ucwords($a,'-. /&#')?>

स्पष्टीकरण:

  • ucwords () एक अंतर्निहित PHP फ़ंक्शन है

  • पहला पैरामीटर $aइनपुट है

  • दूसरा पैरामीटर डेलिमेटर्स है (परीक्षण मामलों में पाए जाने वाले गैर-वर्णानुक्रम चैटर)

  • के उपयोग के कारण रिटर्न / इको / प्रिंट ग्रहण किया जाता है <?= ?>

लिंक:


1
नमस्ते और साइट पर आपका स्वागत है! मुझे लगता है कि इस समय यह एक स्निपेट है जिसे डिफ़ॉल्ट रूप से अनुमति नहीं है, लेकिन आप एक पूर्ण कार्यक्रम का उपयोग करके 41 बाइट्स प्राप्त कर सकते हैं -R: ऑनलाइन प्रयास करें! या तर्कों का उपयोग करते हुए 42: इसे ऑनलाइन आज़माएं!
डोम हेस्टिंग्स

0

टी-एसक्यूएल, 179

DECLARE @T VARCHAR(MAX)='foo',@X VARCHAR(2),@ INT=0WHILE @<LEN(@T)SELECT @X=SUBSTRING(@T,@,2),@+=1,@T=STUFF(@T,@,1,IIF(@X LIKE'[a-Z]_',LOWER(RIGHT(@X,1)),UPPER(RIGHT(@X,1))))PRINT @T

यहां SQL Server 2012 में सेलेक्ट वर्जन को आजमाएं ।

"Foo" को इनपुट स्ट्रिंग से बदलें। चर गिनती शून्य-लंबाई वाली स्ट्रिंग के लिए है। यह कोड एक अनुक्रमणिका का उपयोग करके स्ट्रिंग का पता लगाता है, जो पिछले चरित्र के आधार पर उस स्थिति में चरित्र को ऊपर या नीचे ले जाता है।


0

जावास्क्रिप्ट (Node.js) , 70 बाइट्स

c=>a=>c.split``.map(b=>a="A">a?b.toUpperCase():b.toLowerCase()).join``

इसे ऑनलाइन आज़माएं!

मुझे यकीन है कि इसे और आगे बढ़ाया जा सकता है।

ध्यान दें :

के माध्यम से इनपुट लेता है f(string)(), अंतिम आवश्यक हैं लेकिन कुछ भी नहीं करते हैं।


0

पॉवरशेल, 77 75 बाइट्स

यह समाधान पूरी तरह से कार्य नियमों (यहां तक ​​कि अस्पष्ट उदाहरण foo:bar) से मिलता है ।

-join($args|% t*y|%{"$_"|%('ToU*r','ToL*r')[+$l];$l=!('# -./&'|% Co*s $_)})

@Iszi से बिल्टइन फ़ंक्शन ToTitleCase के साथ पॉवर्सशेल समाधान भी देखें ।

समझाया परीक्षण स्क्रिप्ट:

$f = {

-join(
$args|% t*y|%{                   # for each char from input string
    "$_"|%('ToU*r','ToL*r')[+$l] # evaluate ToUpper or ToLower method depend on $l (lower) value
                                 # Note the variable $l is not defined for a first char
                                 # so it evaluates toUpper for the first char 
    $l=!('# -./&'|% Co*s $_)     # golfed form for $l=!'# -./&'.Contains($_) expression
                                 # =0 if the current char is specified separator (toUpper for next char)
}                                # =1 otherwise (toLower for next char)
)                                # finally, join all chars to a result string

}

@(
    ,('foo:bar'                                                                 ,'Foo:bar')
    ,('aGeNT ACcEpT/LEngTh-tYPe USeR raNgE.TyPe'                                ,'Agent Accept/Length-Type User Range.Type')
    ,('type&AgeNt/CC/COnteNt lEnGth#acCePT/AgeNt.RAnGe-Cc/contEnt/cODe'         ,'Type&Agent/Cc/Content Length#Accept/Agent.Range-Cc/Content/Code')
    ,('cc/rEspoNCe.lEngtH#tYpE-witH&UsEr/bEgIN&uSer.AGEnT&begIn/aCCEPt/Cc'      ,'Cc/Responce.Length#Type-With&User/Begin&User.Agent&Begin/Accept/Cc')
    ,('lENgTH#USeR.tYpE/BeGiN&LENGth tYpe/ACCEpt#rANge/codE&AnD-ACCepT/ConTenT' ,'Length#User.Type/Begin&Length Type/Accept#Range/Code&And-Accept/Content')
    ,('contENT/ACcEpT'                                                          ,'Content/Accept')
    ,('BeGin/wITH.tyPE&conTeNt'                                                 ,'Begin/With.Type&Content')
    ,('Code.cc#User.lenGTh-USer-AND&tyPE TypE&leNgtH.tYPe usER.UseR&with'       ,'Code.Cc#User.Length-User-And&Type Type&Length.Type User.User&With')
    ,('RaNgE&COnTeNT WITh CoNTENT-TypE tyPe'                                    ,'Range&Content With Content-Type Type')
    ,('BEgin COdE#uSeR#aGeNt.USeR'                                              ,'Begin Code#User#Agent.User')
    ,('TypE LENGth'                                                             ,'Type Length')
) | % {
    $s,$e = $_
    $r = &$f $s
    "$($r-ceq$e): $r"
}

आउटपुट:

True: Foo:bar
True: Agent Accept/Length-Type User Range.Type
True: Type&Agent/Cc/Content Length#Accept/Agent.Range-Cc/Content/Code
True: Cc/Responce.Length#Type-With&User/Begin&User.Agent&Begin/Accept/Cc
True: Length#User.Type/Begin&Length Type/Accept#Range/Code&And-Accept/Content
True: Content/Accept
True: Begin/With.Type&Content
True: Code.Cc#User.Length-User-And&Type Type&Length.Type User.User&With
True: Range&Content With Content-Type Type
True: Begin Code#User#Agent.User
True: Type Length

0

QBasic, 74 बाइट्स

1c$=LCASE$(INPUT$(1))
IF f=0THEN c$=UCASE$(c$)
f=c$>"@
?c$;
IF""<c$GOTO 1

बाइट्स की गिनती CP-437 में की जाती है ; एक एकल बाइट (वर्ण कोड 20) है।

यहाँ इनपुट विधि थोड़ी अजीब है: वर्णों को एक बार में टाइप किया जाता है, और उनके प्रदर्शित होने से पहले उनका कैपिटलाइज़ेशन बदल दिया जाता है। इसलिए जब आप टाइप करते हैं aGeNT, तो यह स्क्रीन पर दिखाई देता है Agent। मारने Enterसे कार्यक्रम समाप्त हो जाता है।


0

पायथन 3 , 122 बाइट्स

lambda s:''.join(chr(ord(c)+[[0,0],[0,32],[-32,0]][('@'<c<'[')-('`'<c<'{')]['@'<p<'['or'`'<p<'{'])for c,p in zip(s,'-'+s))

इसे ऑनलाइन आज़माएं!

एक महान स्कोर नहीं है, लेकिन मैं केस बदलने के लिए बिलिन स्ट्रिंग ऑपरेशंस के बिना इसे आज़माना चाहता था।


-2

PHP - 23 वर्ण

mb_convert_case ($ w, 2);

इसे काम करने के लिए php_mbstring की आवश्यकता है


1
मेरे 5.3.26 mb_convert_case("BeGin/wITH.tyPE&conTeNt", 2);रिटर्न पर "शुरुआत / with.type & content", "Begin / With.Type & Content" नहीं।
मनटवर्क
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.