राजधानियों या विराम चिह्न को बदलने के बिना शब्दों को उल्टा


13

शब्दों के क्रम, साथ ही विराम चिह्न और कैपिटल अक्षरों को उनके प्रारंभिक स्थान पर रखते हुए प्रत्येक शब्द को एक स्ट्रिंग में रिवर्स करने के लिए सबसे कम वर्णों वाला एक प्रोग्राम बनाएं।

"शब्दों का क्रम," से मेरा मतलब है कि प्रत्येक शब्द एक खाली जगह ("") से विभाजित है, इसलिए संकुचन और इस तरह एक शब्द के रूप में माना जाएगा। संकुचन में एपोस्ट्रोफ को उसी स्थान पर रहना चाहिए। ("डोंट" => "टानोल्ड")।

(विराम चिह्न का अर्थ है किसी भी वर्ण जो अज़, अज़ या व्हाट्सएप * नहीं हैं)।

  • इस तथ्य के कारण इस सूची से नंबर हटा दिए गए थे कि आपके पास पूंजी संख्या नहीं हो सकती है। नंबर को अब विराम चिह्न माना जाता है।

उदाहरण के लिए, इनपुट के लिए:

Hello, I am a fish.

यह उत्पादन करना चाहिए:

Olleh, I ma a hsif.

ध्यान दें कि O, जो पहले शब्द का पहला अक्षर है, अब कैपिटल है, क्योंकि H उसी स्थान से पहले कैपिटल था।

अल्पविराम और अवधि भी उसी स्थान पर हैं।

और ज्यादा उदाहरण:

This; Is Some Text!

उत्पादन होगा

Siht; Si Emos Txet!

किसी भी भाषा का उपयोग किया जा सकता है। सबसे कम मात्रा में वर्ण वाला कार्यक्रम जीतता है।


3
संकुचन का इलाज कैसे किया जाना चाहिए? यह Don't touch that!मानचित्र है t'noD hcuot taht!या करने के लिए noD't hcuot taht!?
dmckee --- पूर्व-मध्यस्थ बिल्ली का बच्चा

2
@ मॉमकी "(विराम चिह्न का अर्थ है कोई भी वर्ण जो az, AZ, 1-9 या व्हाट्सएप नहीं है)"
जॉन ड्वोरक

1
@ मॉमकी तो इसे मैप करना चाहिएNod't hcuot tath!
जॉन ड्वोरक

1
प्रत्येक शब्द को उलट देना आसान है। प्रत्येक शब्द को उलट देना और पूंजीकरण रखना नहीं है।
जॉन ड्वोरक

1
हाँ, यह चुनौती है;) बस उन्हें उल्टा करना बहुत सरल होगा और संभवतः इस्तेमाल की जाने वाली भाषा के लिए नीचे आ जाएगा। यह आपको सोचने के लिए है।
नासोन्फ़िश

जवाबों:


7

GolfScript, 58 54 48 वर्ण

" "/{.{65- 223&26<}:A,\{.A{96&\)31&@+}*}%+}%" "*

यह एक गोल्फस्क्रिप्ट समाधान है जो लंबे समय तक बना रहा। कोड के बहुत सारे वास्तव में यह पता लगा रहे हैं कि क्या कोई चरित्र जेडए-जेडए में है। हो सकता है कि कोई व्यक्ति इसका परीक्षण करने का एक छोटा तरीका भी खोज सकता है।

आप कोड को ऑनलाइन आज़मा सकते हैं । उदाहरण:

> Hello, I am fish.
Olleh, I ma hsif.

> This; Is Some Text!
Siht; Si Emos Txet!

> Don't try this at home.
Tno'd yrt siht ta emoh.

वह ऑनलाइन गोल्फस्क्रिप्ट संपादक उपयोगी लगता है। बुकमार्क करना, धन्यवाद
जॉन ड्वोरक

आप एक को बचाने " "के %लिए फाइनल को अंदर खींच सकते हैं । मैंने 11 वर्णों के लिए ए-जेडए-जेड के परीक्षण के अन्य तरीके ढूंढे हैं, लेकिन 10. के लिए अभी तक कोई नहीं
पीटर टेलर

4

एपीएल 69

के माध्यम से स्क्रीन इनपुट लेता है: t ⍞:

⎕av[1↓∊(↑¨v),¨((¯1×⌽¨z)+z←¯32×~1↓¨v>97)+¨⌽¨1↓¨v←(+\v<66)⊂v←0,⎕av⍳t←⍞]

क्या एपीएल को यूटीएफ -8 बाइट्स में नहीं गिना जाना चाहिए? :-)
जॉन ड्वोरक

@JDDvorak APL + विन V5 कैरेक्टर सेट सिंगल बाइट है। मुझे वर्णों को सही ढंग से प्रस्तुत करने के लिए यहां पोस्ट करने के लिए UTF-8 में बदलना होगा। ⎕av sett ऊपर वेक्टर टी में वर्णों के लिए 0-255 से सेट चरित्र में एक सूचकांक देता है।
ग्राहम

4

Coffeescript, 134 133 अक्षर

alert prompt().replace /\S+/g,(x)->c=x.match r=/[a-z]/gi;return x.replace r,(y)->return c.pop()[`(y<"a"?"toUpp":"toLow")`+"erCase"]()

Coffeescript (कोड गोल्फ के उद्देश्यों के लिए) जावास्क्रिप्ट का थोड़ा सा सघन संस्करण है। इसमें टर्नरी ऑपरेटर नहीं है, लेकिन इसमें जावास्क्रिप्ट के लिए एक एस्केप है।

यहाँ जावास्क्रिप्ट संस्करण है:

जावास्क्रिप्ट, 152 151 वर्ण

alert(prompt().replace(/\S+/g,function(x){c=x.match(r=/[a-z]/gi);return x.replace(r,function(y){return c.pop()[(y<"a"?"toUpp":"toLow")+"erCase"]()})}))

इंडेंट:

alert(prompt().replace(/\S+/g,function(x){
  c=x.match(r=/[a-z]/gi);
  return x.replace(r, function(y){
    return c.pop()[(y<"a"?"toUpp":"toLow")+"erCase"]()
  })
}))

2

रूबी: 89 अक्षर ( -pस्विच के लिए 1 सहित )

Jan Dvorak के CoffeeScript समाधान की प्रतिलिपि नहीं बनाई गई , लेकिन कई प्रयासों के बाद मेरा कोड एक सटीक प्रतिलिपि की तरह समाप्त हो गया। एक अवचेतन आवाज शायद " सफेद खरगोश जन Dvorak का पालन करें" फुसफुसाए रखा । तो एल्गोरिथ्म के लिए upvotes उसके जवाब पर जाना चाहिए।

$_.gsub!(/\S+/){|m|l=m.scan r=/[a-z]/i;m.gsub(r){|c|l.pop.send c<?a?:upcase: :downcase}}

नमूना रन:

bash-4.2$ ruby -p reverse-word.rb <<< "Hello, I am a fish.
This; Is Some Text!
Don't touch that!
S'm00ch1e"
Olleh, I ma a hsif.
Siht; Si Emos Txet!
Tno'd hcuot taht!
E'h00cm1s

0

लूआ, 143

print(((io.read"*l"):gsub("%w+",function(s)local r=""for i=1,#s do r=("")[s:byte(-i)>96 and"lower"or"upper"](s:sub(i,i))..r end return r end)))

अच्छी कोशिश, लेकिन यह भी जगह में विराम चिह्न रखना चाहिए: pastebin.com/X8QLf6fW
manatwork

संपादित करें: ओह, मैं अब देख रहा
हूं

-1

एक्मास्क्रिप्ट 6 (112 अक्षर)

में इनपुट दिया गया है s

alert(s.replace(/\S+/g,x=>(_=x.match(X=/[a-z]/gi),x.replace(X,a=>_.pop()[(a<"a"?"toUpp":"toLow")+"erCase"]()))))

@Jan Dorvak के जवाब पर आधारित।


-2

C # (375)

 public static string rev(string s)
    {
        var r = new Regex("[^A-za-z]");

        var result = "";
        var token = "";
        foreach (var c in s)
        {
            if (!r.IsMatch(c + ""))
            {
                token += c;
            }
            else
            {
                result += new string(token.Reverse().ToArray());
                result += c;
                token = "";
            }
        }

        var arr = result.ToArray();
        int i = 0;
        foreach (var c in s)
        {
            arr[i] = char.IsUpper(c) ? char.ToUpper(arr[i]) : char.ToLower(arr[i]);
            i++;
        }

        result = new string(arr);
        return result;
    }

minified

public static string rev(string s){var r=new Regex("[^A-za-z]");var result="";var token="";foreach(var c in s){if(!r.IsMatch(c+"")){token+=c;}else{result+=new string(token.Reverse().ToArray());result+=c;token="";}}var arr=result.ToArray();int i=0;foreach(var c in s){arr[i]=char.IsUpper(c)?char.ToUpper(arr[i]):char.ToLower(arr[i]);i++;}result=new string(arr);return result;}

यह नहीं होना चाहिए A-Za-z?
20

@ थोड़ा सा विस्तार: [A-z]नहीं है [A-Za-z]। पहला एक सामान्य (?) गलती है, क्योंकि इसमें गैर-अक्षर वर्ण होते हैं।
आउटगोल्फर

1
यह भी नहीं होना चाहिए, erm, गोल्फ?
Cyoce
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.