AlTeRnAtE tHe CaSe


42

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

hello world

এবং অন্যান্য প্রতিটি চরিত্রকে বড় হাতের মধ্যে রূপান্তর করুন, আপনি পাবেন:

hElLo wOrLd

আপনি দেখতে পাচ্ছেন, ছোট হাতের অক্ষর oঅনুসরণ করে ছোট হাতের অক্ষর থাকে w। এটি অবৈধ। পরিবর্তে, আপনাকে অবশ্যই এই জায়গাটি উপেক্ষা করে স্থানটি উপেক্ষা করতে হবে:

hElLo WoRlD

সমস্ত অ-বর্ণমালা অক্ষর একই থাকতে হবে। আউটপুট উপরের বা ছোট হাতের সাথে শুরু হতে পারে, যতক্ষণ না এটি ধারাবাহিকভাবে বিকল্প হয়। এর অর্থ নিম্নলিখিতগুলি একটি গ্রহণযোগ্য আউটপুটও হবে:

HeLlO wOrLd

আপনার প্রোগ্রামটি ইনপুট ক্ষেত্রে নির্বিশেষে কাজ করা উচিত।

ইনপুট স্ট্রিংটিতে কেবল প্রিন্টযোগ্য এএসসিআইআই থাকবে , সুতরাং আপনাকে অপ্রিন্টযোগ্য অক্ষর, নিউলাইনস বা ইউনিকোড সম্পর্কে চিন্তা করতে হবে না। আপনার জমাটি কোনও হয় পুরো প্রোগ্রাম বা কোনও ফাংশন হতে পারে এবং আপনি কোনও যুক্তিসঙ্গত ফর্ম্যাটে ইনপুট এবং আউটপুট নিতে পারেন। উদাহরণস্বরূপ, ফাংশন আর্গুমেন্ট / রিটার্ন মান, STDIN / STDOUT, একটি ফাইল পড়া / লেখা ইত্যাদি

উদাহরণ:

ASCII                                   ->  AsCiI
42                                      ->  42
#include <iostream>                     ->  #InClUdE <iOsTrEaM>
LEAVE_my_symbols#!#&^%_ALONE!!!         ->  lEaVe_My_SyMbOlS#!#&^%_aLoNe!!!
PPCG Rocks!!! For realz.                ->  PpCg RoCkS!!! fOr ReAlZ.
This example will start with lowercase  ->  tHiS eXaMpLe WiLl StArT wItH lOwErCaSe
This example will start with uppercase  ->  ThIs ExAmPlE wIlL sTaRt WiTh UpPeRcAsE
A1B2                                    ->  A1b2

যেহেতু এটি , মানক লুফোলগুলি প্রয়োগ হয় এবং বাইটের মধ্যে সংক্ষিপ্ত উত্তর!


33
বিতৃষ্ণা, আমি কেবল মাত্র উপলব্ধি করেছি ছিল যে মেমে xD
বিটা ক্ষয়

@ বেটাডেহে হাহাহা, এটি আমার উদ্দেশ্য ছিল না । আরও দুর্ভাগ্যজনক সময়। আমি যদিও এটিকে চ্যাট-মিনি-চ্যালেঞ্জ হিসাবে দেখি এবং এর পেছনের ধারণাটি আমার পছন্দ হয় কারণ এটি মনে হয় তার চেয়ে পরিষ্কারভাবে শক্ত।
DJMcMayhem

4
পরবর্তী চ্যালেঞ্জটি হ'ল একটি আসকি স্পঞ্জববcowsay
ফ্রেমবট

1
ধ্যাত্তেরি! আমি স্রেফ এর জন্য একটি সিজেএম স্ক্রিপ্ট লিখেছি (গতকালের মতো) এবং এটি মুছে ফেলেছি।
26:57

2
শিরোনামের জন্য বা ডুমের পেঙ্গুইন বা স্পার্কস ব্যবহার করে কমপক্ষে উদাহরণগুলি হারিয়ে যাওয়ার সম্ভাবনা রয়েছে।
ইয়ান

উত্তর:


19

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

বড়হাতে শুরু হয়।

s=>s.replace(/[a-z]/gi,c=>c[`to${(s=!s)?'Low':'Upp'}erCase`]())

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


ঠিক কীভাবে আমি এটি করতে যাচ্ছিলাম। আমি মনে করি আপনি দেখতে পাচ্ছেন যেখানে আপনি কয়েকটা বাইট সংরক্ষণ করতে পারেন তবে আমি আমার ফোনে তাই সঠিকভাবে পরীক্ষা করতে পারছি না।
শেগি

হ্যাঁ, একটি টার্নারি ব্যবহার করে আমি যা পরামর্শ দেব।
শেগি

1
s=!sকৌশলটি কীভাবে কাজ করে?
ক্রিটসি লিথোস

7
@KritixiLithos কারণ sইনপুট স্ট্রিং, হয় !sপ্রথম মূল্যায়ণ false(যদি না ইনপুট স্ট্রিং খালি, যে ক্ষেত্রে এটা হবে মূল্যায়ন true- কিন্তু একটি খালি স্ট্রিং যাহাই হউক না কেন কোনো ম্যাচ উৎপন্ন হবে না)। এর পরে, এটি কেবলমাত্র একটি স্ট্যান্ডার্ড বুলিয়ান অপারেশনে পরিণত হয়, falseএবং এর মধ্যে বিকল্প হয় true। এছাড়াও, আমরা sএই মুহুর্তে সামগ্রীটি হারাতে আপত্তি করি না কারণ এটি ইতিমধ্যে খাওয়ানোর জন্য ব্যবহৃত হয়েছিল .replace()
আর্নল্ড

3
@ মায়ারমন্টি দুর্ভাগ্যক্রমে, এটি কয়েকটি চিহ্নের সাথে মিলবে। যেমন একটি ইনপুট "A[I"ব্যর্থ হবে।
আর্নল্ড

12

05 এ বি 1 ই , 11 8 বাইট

কোড:

lvyJ¤aiš

05AB1E এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা:

l           # Lowercase the input
 vy         # For each element..
   J        #   Join the entire stack into a single string
    ¤a      #   Check if the last character is alphabetic
      iš    #   If true, swapcase the entire string

আমি 11-বাইট বীট করতে হবে জেনে আমি কীভাবে অন্ধ হয়ে যাওয়ার চেষ্টা করি তা আমি পছন্দ করি; তারপরে আস্তে আস্তে 17 থেকে 11 বাইটে যান এবং বুঝতে পারবেন lvy¾Fš}Da½Jযে আপনার কাছে ইতিমধ্যে ছিল _
ম্যাজিক অক্টোপাস উরান

1
@ কারাসোকম্পুটিং এখানে খুব সহজ 8 বাইট সমাধান রয়েছে: পি
আদনান

4
উহু, হাঁ, সুপার সহজ হা হা।
ম্যাজিক অক্টোপাস উরন

2
@ অ্যাক্টোপাস এ সম্পর্কে কিছু আলোচনা আছে, তবে আমি 'অ্যাসেবল' এবং 'ওসাবি' উভয়ই ব্যবহার করি।
আদনান

1
@ অক্টোপাস আমি আক্ষরিকভাবে বলি Oh-Five-Ay-Bee-One-Eee, আমি কোনও সৃজনশীল মানুষ নই।
ম্যাজিক অক্টোপাস আরন


8

জেলি , 13 বাইট

nŒsTm2
ŒlŒuǦ

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

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

ŒlŒsǦ  Main link. Argument: s (string)

Œl      Cast to lowercase.
    Ǧ  At indices returned by the helper link...
  Œu        apply uppercase.


nŒsTm2      Helper link. Argument: s (string)

 Œs         Apply swapcase to s.
n           Perform vectorizing not-equal comparison.
   T        Compute the truthy indices.
    m2      Select every other one, starting with the first.

7

জাপট , 16 14 বাইট

r"%l"_m"uv"gT°

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

ব্যাখ্যা

r              // RegEx replace input
 "%l"          // [A-Za-z] as first arg to replace
     _         // created function Z=>Z as second arg to replace
       "uv"gT° // alternates "u" & "v"
      m        // map Z to either "u" upper or "v" lower

খুব সুন্দর! আপনি মুছে ফেলতে পারেন ,। এটির একটি সংখ্যা না হওয়া পর্যন্ত ( [12]জাপট) জানে যে তারা বিভিন্ন আইটেম। আমি বিশ্বাস করি আপনি এটিও সরাতে পারেন &1
অলিভার 18

ধন্যবাদ @ ওবরকন জাপট ডকুমেন্টেশনটি কিছুটা বিরল।
বুড়ো

জাপট ব্যবহার করার জন্য ধন্যবাদ জাপট চ্যাট রুমে নির্দ্বিধায় প্রশ্ন, পরামর্শ ইত্যাদি জিজ্ঞাসা করুন । জাপট থ্রেডের জন্য একটি টিপসও রয়েছে । :)
অলিভার

_m"uv"gT°খুশী হলাম। আমি সবেমাত্র সেটাই বলতে চাইছিলাম।
অলিভার

@ ওবারাওকন হ্যাঁ আমি দেখেছি যেখানে আঠায় আপনার প্রশ্নের জবাব ETH পেয়েছে এবং এটি আমার চেষ্টা করে things
বুলেটগুলি 25'17

6

পাইথন 3 , 86 76 68 66 63 বাইট

-২ বাইটস ডিজেএমসিএমহেমকে
ধন্যবাদ -৩ বাইট ধন্যবাদ সাইওসকে

x=0
for i in input():print(end=(2*i).title()[x]);x^=i.isalpha()

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস চেষ্টা করে দেখুন


অজগর 3 এ দুটি বাইট সংক্ষিপ্ত: অনলাইনে চেষ্টা করে দেখুন!
DJMcMayhem

1
কোন কারণ আপনি করতে পারবেন না print(end=(2*i).title()[x])?
সাইয়েস

5

অ্যালিস , 18 বাইট

/olZlYuN
@iy.u..//

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

ব্যাখ্যা

এই প্রোগ্রামটি সম্পূর্ণরূপে অর্ডিনাল মোডে চলমান বিজোড় দৈর্ঘ্যের প্রোগ্রামগুলির জন্য একটি কম পরিচিত টেম্পলেট অনুসরণ করে। এই কোডের লিনিয়ারাইজড সংস্করণটি হ'ল:

il.l.uN.YuZyo@

কোডের ব্যাখ্যা:

i - push input onto stack            ["Hello world!"]
l - convert to lowercase             ["hello world!"]
. - duplicate                        ["hello world!", "hello world!"]
l - convert to lowercase (should be no-op, but avoids what seems to be a bug in the TIO implementation)
. - duplicate again                  ["hello world!", "hello world!", "hello world!"]
u - convert to uppercase             ["hello world!", "hello world!", "HELLO WORLD!"]
N - difference between sets          ["hello world!", "helloworld"]
. - duplicate reduced string         ["hello world!", "helloworld", "helloworld"]
Y - unzip (extract even positions)   ["hello world!", "helloworld", "hlool", "elwrd"]
u - convert to uppercase             ["hello world!", "helloworld", "hlool", "ELWRD"]
Z - zip evens back into string       ["hello world!", "helloworld", "hElLoWoRlD"]
y - perform substitution             ["hElLo WoRlD!"]
o - output                           []
@ - terminate

lসদৃশটি ব্যবহার না করে , স্ট্যাকটি পরে Nথাকবে ["helloworld", "helloworld"]। আমি দৃ strongly়ভাবে সন্দেহ করি এটি একটি বাগ।


5

সি (টিসিসি) , 60 57 56 বাইট

বিট 5 লক্ষ্য করার জন্য ডিজিটালট্রামাকে ধন্যবাদ ASCII আপার / লোয়ার ক্ষেত্রে একমাত্র পার্থক্য।

আরও তিনটি বাইট গলফ করার জন্য জেডচিকে বিশেষ ধন্যবাদ।

আরজেহান্টারের ধারণা থেকে আরও একটি বাইট সংরক্ষণ করুন

l;f(char*s){for(;*s=isalpha(*s)?*s&95|++l%2<<5:*s;s++);}

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


আমি এটিকে আরও কিছুটা গল্ফ দিয়েছি , এবং সংশোধন করেছি যাতে এটি সমস্ত জিসিসি, টিসিসি, ঝনঝনিতে কাজ করে। এফডাব্লুআইডাব্লু, জিসিসি কেবল পঠনযোগ্য মেমরিতে স্ট্রিং লিটারেল রাখে, তাই আমি strdup()পরীক্ষক-ড্রাইভারের কোডটিতে মেমরি পড়তে-লিখতে পয়েন্টার পাইতাম।
ডিজিটাল ট্রমা

1
@ ডিজিটাল ট্রামুমা এর জন্য ধন্যবাদ। আমি বিট 5 স্বীকৃত উচিত ছিল উপরের এবং নীচের মধ্যে পার্থক্য। সুন্দর!
ক্লাব্ল্যাঙ্ক

আমি এই সংস্করণটিকেও পুনরাবৃত্ত করার চেষ্টা করেছি , তবে এটি আর ছোট হতে পারে না।
ডিজিটাল ট্রমা

*s&~32|++l%2<<53 বাইট সংরক্ষণ করার জন্য আপনি অভ্যন্তরীণ শর্তসাপেক্ষে প্রতিস্থাপন করতে পারেন ।
zch

যেহেতু ইনপুট প্রতিশ্রুতি মুদ্রণযোগ্য হওয়া ASCII হতে চাইলে আমাদের অবশ্যই প্রতিস্থাপন করতে পারেন &~33সঙ্গে &95আরও বাইট সংরক্ষণ করুন।
আরজেহান্টার

4

জাভা 8, 99 বাইট

a->{String r="";int i=0;for(int c:a)r+=(char)(c>64&c<91|c>96&c<123?i++%2<1?c|32:c&~32:c);return r;}

ব্যাখ্যা:

এখানে চেষ্টা করুন।

a->{                          // Lambda with char-array parameter and String return-type
  String r="";                //  Result-String
  int i=0;                    //  Flag for alteration
  for(int c:a)                //  Loop over the characters of the input
    r+=(char)                 //   And append the result-String with the following (converted to char):
      (c>64&c<91|c>96&c<123?  //    If it's a letter:
       i++%2<1?               //     And the flag states it should be lowercase:
        (c|32)                //      Convert it to lowercase
       :                      //     Else (should be uppercase):
        (c&~32)               //      Convert it to uppercase
      :                       //    Else:
       c);                    //     Simply append the non-letter character as is
                              //  End of loop (implicit / single-line body)
  return r;                   //  Return result-String
}                             // End of method

আমি এটি সংক্ষিপ্ত করতে পারি না তবে আপনি ব্যবহার করতে (c+"").matches("[A-Za-z]")বা Character.isLetter(c)বাইট সংরক্ষণ করতে সক্ষম হতে পারেন ।
TheLethalCoder

উভয় @TheLethalCoder চেয়ে দীর্ঘতর হয় c>64&c<91|c>96&c<123যদিও। যেহেতু আমি ব্যবহার intজন্য যাহাই হউক না কেন Character.toUpperCase(...)এবং Character.toLowerCase(...)golfed অংশ (এই: (char)(c&~32)এবং (char)(c|32)), আমার সন্দেহ আমি এটা করেন, এগুলি সঙ্গে খাটো করতে পারে।
কেভিন ক্রুইজসেন 26'17

1
আমি ভেবেছিলাম আপনি যেভাবেই সেগুলি ব্যবহার করতে পারবেন কিনা তা দেখার জন্য আপনি পোস্টিংয়ের পক্ষে সক্ষম হবেন না
TheLethalCoder

পছন্দ করুন :) কিছু ক্ষেত্রে প্রথমে অন্যান্য চ্যালেঞ্জগুলির জন্য কিছুটা ভিন্ন পদ্ধতির সাহায্য করতে পারে তবে এই চ্যালেঞ্জের জন্য এটি আরও ছোট sh যাই হোক ধন্যবাদ.
কেভিন ক্রুইজসেন 26'17

a->{String r="";int i=0,f=32;for(int c:a)r+=(char)(c>64&c<91|c>96&c<123?(f=~f):c);return r;} ??
রোমান গ্রাফ

4

রুবি, 57 55 47 41 বাইট

বাইট গণনা কমান্ড লাইন বিকল্পের জন্য দুটি বাইট অন্তর্ভুক্ত।
উদাহরণস্বরূপ এটি চালান:$ ruby -p0 alternate_case.rb <<< "some input"

gsub(/\p{L}/){($&.ord&95|32*$.^=1).chr}

সঙ্গে p0বিকল্প, সমগ্র ইনপুট এক বারেই ধ্বংস করা হয়, এবং ঐন্দ্রজালিক বিশ্বব্যাপী $.1. এই পরে 0 এবং 1 এর মধ্যে টগল করার মাধ্যমে চালু ও রাজ্য রাখার জন্য ব্যবহার করা হয় মান বৃদ্ধি হয়।

মাল্টলাইন ইনপুট দিয়ে কাজ করে; এটি অনলাইন চেষ্টা করুন!

আশ্চর্যজনক ইনপুট দেওয়ার জন্য ভেন্ত্রোর ধন্যবাদ - বিশদগুলির জন্য মন্তব্যগুলি দেখুন।


1
ম্যান, যদি $.প্রতিটি getsকলের সাথে অটো-ইনক্রিমেন্ট না হয় তবে -pপতাকাটির সাথে একটি সম্পূর্ণ প্রোগ্রামটি আরও সংক্ষিপ্ত হত ...
মান ইঙ্ক

1
1&$.+=1আপনাকে প্রথম বন্ধনী ছাড়তে দেয়। আর সম্পন্নতা 'হেতু জন্য, আরেকটা বিশ্বব্যাপী পূর্ণসংখ্যা - এটা দুর্ভাগ্যবশত এর মাত্র শুধুমাত্র পাঠযোগ্য: $$
ভেন্টোরো

1
কমান্ড লাইন পতাকা সম্পর্কিত আরেকটি জিনিস: -p0দোভাষীকে একসাথে সমস্ত উপলভ্য ইনপুট পড়তে বাধ্য করে - সুতরাং আপনার কোডটি কেবল একবার একবার অনুরোধ করা হবে, আপনাকে অবাধে ব্যবহারের অনুমতি দেয় $.। এই সংমিশ্রণটি যে gsubস্পষ্টতই পরিচালনা করে যেমন $_.gsub!নির্দিষ্টকরণ যখন -pএকটি সম্পূর্ণ প্রোগ্রামকে উল্লেখযোগ্যভাবে খাটো করে তোলে: পতাকাটির gsub(/[a-z]/i){[$&.upcase,$&.downcase][1&$.+=1]}জন্য 48 টি এবং 2 টি p0
ভেন্টোরো

1
চূড়ান্ত মন্তব্য, আমি প্রতিশ্রুতি দিয়েছি :) একবার আপনি ব্যবহার করার পরে -p0, আপনি কীভাবে $.পিছন পিছন পিছনে পিছনে পিছনে পিছনে ফিরবেন তাতে আপনি আরও কয়েকটি অক্ষর সংরক্ষণ করতে পারেন : যেহেতু এটি এখন 1আপনার কোডটি ডাকা হবে তা নিশ্চিত হওয়ার পরে আপনি কেবল ব্যবহার করতে পারবেন $.^=1
ভেন্টোরো

2
আমি মিথ্যা বলেছি, আমার আর একটি মন্তব্য আছে: ডি যেহেতু ইনপুটটিতে কেবল প্রিন্টযোগ্য এএসসিআইআই রয়েছে তা নিশ্চিত করা হয়েছে, আমরা নিয়মিত অভিব্যক্তিগুলিতে ইউনিকোড বিভাগগুলির জন্য রুবির সমর্থনটি ব্যবহার করতে পারি: /\p{L}/(ইউনিকোড বিভাগের অক্ষর ) এর চেয়ে একটি চরিত্র ছোট /[a-z|/i
ভেন্টোরো

3

ব্র্যাচল্যাগ , 25 বাইট

{ḷ|ụ}ᵐ.{ḷ∈Ạ&}ˢ¬{s₂{∈Ạ}ᵐ}∧

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

এটি দীর্ঘ এবং ধীর উভয়ই।

ব্যাখ্যা

{   }ᵐ.                       The Output is the result of mapping on each char of the Input:
 ḷ                              Lowecase the char
  |                             Or
   ụ                            Uppercase the char
       {    }ˢ                In the Ouput, select the chars that:
        ḷ∈Ạ&                    when lowercased are in "abc...xyz" (ie are letters)
              ¬{       }∧     In that new string, it is impossible to find:
                s₂              a substring of 2 consecutive chars
                  {∈Ạ}ᵐ         where both of them are in the lowercase alphabet

3

এমএটিএল , 16 15 বাইট

Xktkyy-f2L))5M(

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা

'হ্যালো ওয়ার্ল্ড' ইনপুট বিবেচনা করুন

Xk    % To upper case
      % STACK: 'HELLO WORLD'
t     % Duplicate top element
      % STACK: 'HELLO WORLD', 'HELLO WORLD'
k     % To lower case
      % STACK: 'HELLO WORLD', 'hello word'
yy    % Duplicate top two elements
      % STACK: 'HELLO WORLD', 'hello word', 'HELLO WORLD', 'hello word'
-     % Difference (of code points; element-wise)
      % STACK: 'HELLO WORLD', 'hello word', [-32 -32 -32 -32 -32 0 -32 -32 -32 -32 -32]
f     % Indices of nonzeros
      % STACK: 'HELLO WORLD', 'hello word', [1 2 3 4 5 7 8 9 10 11]
2L)   % Keep only even-indexed values (*)
      % STACK: 'HELLO WORLD', 'hello word', [2 4 7 9 11]
)     % Reference indexing (get values at indices)
      % STACK: 'HELLO WORLD', 'elwrd'
5M    % Push (*) again
      % STACK: 'HELLO WORLD', 'elwrd', [2 4 7 9 11]
(     % Assignment indexing (write values at indices). Implicit display
      % STACK: 'HeLlO wOrLd

'


3

পার্ল 6 ,  32  30 বাইট

{S:g/<:L><-:L>*<:L>?/$/.tclc()/}

চেষ্টা করে দেখুন

{S:g{<:L><-:L>*<:L>?}=$/.tclc}

চেষ্টা করে দেখুন

সম্প্রসারিত:

{  # bare block lambda with implicit parameter 「$_」

  S            # string replace (not in-place) implicitly against 「$_」

  :global

  {

    <+ :L >    # a letter
    <- :L >*   # any number of non-letters
    <+ :L >?   # an optional letter

  }

  =

  $/.tclc()    # uppercase the first letter, lowercase everything else
}

3

কিউ / কেডিবি +, 51 42 38 বাইট

সমাধান:

{@[x;;upper]1#'2 cut(&)x in .Q.a}lower

উদাহরণ:

q){@[x;;upper]1#'2 cut(&)x in .Q.a}lower"hello world"
"HeLlO wOrLd"

নোট:

.Q.a        // abcde...xyz lowercase alphabet
(&) x in    // where, returns indices for where x (hello world) is an alpha
2 cut       // splits list into 2-item lists
1#'         // takes first item of each 2-item list; ie the indices to uppercase
@[x;;upper] // apply (@) upper to x at these indices

2

ভি , 17 , 13 বাইট

VUÍშáü$©/ì&

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

বা সমস্ত পরীক্ষার কেস যাচাই করুন!

HeXdUmP:

00000000: 5655 cde1 83a8 e1fc 24a9 2fec 26         VU......$./.&

ব্যাখ্যা:

এটি একটি সংকোচিত রেজেক্স uses uses ব্যবহার করে , সুতরাং এটি ব্যাখ্যা করার আগে আসুন রেজেক্সটি প্রসারিত করুন:

:%s/\v\a.{-}(\a|$)/\l&

VUধর্মান্তরিত সবকিছু বড় হাতের অক্ষরে। তারপরে আমরা এটি চালাই:

:%                      " On every line:
  s/\v                  "   Substitute:
      \a                "     A letter
        .{-}            "     Followed by as few characters as possible
            (\a|$)      "     Followed by either another letter or an EOL
                  /     "   With:
                   \l   "     The next character is lowercased
                     &  "     The whole text we matched

পুরানো / আরও আকর্ষণীয় উত্তর:

:se nows
Vuò~h2/á


2

সিজেম , 26 24 বাইট

qeu{_'[,65>&,T^:T{el}&}%

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

ব্যাখ্যা

q         e# Read all input.
eu        e# Uppercase it.
{         e# For each character:
 _        e#  Duplicate it.
 '[,65>&  e#  Set intersection with the uppercase alphabet.
 ,        e#  Length (either 0 or 1 in this case).
 T^:T     e#  XOR with T (T is initially 0), then store the result back in T.
 {el}&    e#  If The result of the XOR is true, lowercase the character.
}%        e# (end for)

2

পাইথ, 11 বাইট

srR~xZ}dGrZ

এখানে চেষ্টা করুন

ব্যাখ্যা

              # Z = 0; Q = eval(input())
srR~xZ}dGrZQ  # Auto-fill variables
         rZQ  # lowercase the input
 rR           # Apply the r function to each letter of the input with
   ~xZ}dG     # ... this as the other argument
   ~          # use the old value of the variable Z, then update it with the value of ...
    xZ        # Z xor ...
      }dG     # the variable d is a lowercase letter
              # because of how mapping works in pyth, d will contain the current letter
              # This causes Z to flip between 0 and 1, alternately upper and lower casing
              # the current character if it is a letter

2

পাওয়ারশেল, 86 বাইট

-join($args[0]|%{if($_-match"[a-z]"-and($i=!$i)){"$_".toupper()}else{"$_".tolower()}})

ইনপুট একটি [char[]]অ্যারে হয়।

ব্যাখ্যা জন্য কোড মন্তব্য

# Join the array of string and char back together.
-join
    # Take the first argument and pass each element ([char]) down the pipe. 
    ($args[0]|%{
        # Check if this is a letter. Second condition is a boolean that changes at every pass 
        # but only if the current element is a letter. If not the condition never fires
        if($_-match"[a-z]"-and($i=!$i)){
            # Change the character to uppercase
            "$_".toupper()
        }else{
            # Output the character to lowercase. 
            # Special characters are not affected by this method
            "$_".tolower()
        }
    })

2

হাস্কেল, 105 83 + 2 4 + 1 বিভাজকের বাইট = 108 86 88 বাইট

import Data.Char
f#(x:y)|isLetter x=([toUpper,toLower]!!f)x:(1-f)#y|1>0=x:f#y
_#l=l

ফাংশনটি হ'ল (1#), ছোট হাতের অক্ষর শুরু হয়। এটি অনলাইন চেষ্টা করুন!

দুঃখজনক বিষয় হ'ল এটি জাভা এবং সি এর চেয়ে বেশি দীর্ঘ উত্তর # আরজান জোহেনসেনকে তিনটি লাইন এক করে মার্জ করে 22 বাইট সংরক্ষণ করার জন্য ধন্যবাদ!


2
আমি দেখেছি এটি দীর্ঘ আমদানিকৃত ফাংশনগুলির প্রয়োজন তাই আমি চেষ্টাও করি নি ... তবে এটি অনেকটা আপনি কিছু লাইন একীভূত করতে পারেন:f#(x:y)|isLetter x=([toUpper,toLower]!!f)x:(1-f)#y|1>0=x:f#y
janrjan Johansen

নাইটপিকিংয়ের জন্য দুঃখিত, তবে আমি মনে করি 1#অনামী কাজ হিসাবে গণনা করা হয় না। আমার বোধগম্যতার সাথে একজন সনাক্তকারীকে বেনামে ফাংশন বাঁধতে সক্ষম হওয়া উচিত, তবে উদাহরণস্বরূপ f=1#কাজ করবে না। পরিবর্তে আপনার (1#)+2 বাইটের জন্য বিভাগটি প্রয়োজন । এটি হাস্কেল-তে গল্ফ করার জন্য আমাদের সম্প্রদায়ের নির্দেশিকাগুলিতেও স্পষ্টভাবে বলা হয়েছে , যদিও সম্ভবত এগুলি এই ক্ষেত্রে স্পষ্টভাবে উল্লেখ করার জন্য মানিয়ে নেওয়া উচিত।
লাইকনি

@ লাইকোনি ঠিক আছে, উত্তর আপডেট হয়েছে
জেনেরিক ডিসপ্লে নাম

2

গুগল শিটস, 264 বাইট

=ArrayFormula(JOIN("",IF(REGEXMATCH(MID(A1,ROW(OFFSET(A1,0,0,LEN(A1))),1),"[A-Za-z]"),CHAR(CODE(UPPER(MID(A1,ROW(OFFSET(A1,0,0,LEN(A1))),1)))+MOD(LEN(REGEXREPLACE(LEFT(A1,ROW(OFFSET(A1,0,0,LEN(A1)))),"[^A-Za-z]","")),2)*32),MID(A1,ROW(OFFSET(A1,0,0,LEN(A1))),1))))

এটি একটি বড় জগাখিচুড়ি তবে আপনি যদি এটি প্রসারিত করেন তবে এটি কিছুটা সহজ:

=ArrayFormula(
  JOIN(
    "",
    IF(REGEXMATCH(MID(A1,ROW(OFFSET(A1,0,0,LEN(A1))),1),"[A-Za-z]"),
      CHAR(
        CODE(UPPER(MID(A1,ROW(OFFSET(A1,0,0,LEN(A1))),1)))
        +
        MOD(LEN(REGEXREPLACE(LEFT(A1,ROW(OFFSET(A1,0,0,LEN(A1)))),"[^A-Za-z]","")),2)*32
      ),
      MID(A1,ROW(OFFSET(A1,0,0,LEN(A1))),1)
    )
  )
) 

ছদ্ম-যুক্তি এইভাবে চলবে:

For each character {                                    // ArrayFormula()
  If (character is a letter) {                          // REGEXMATCH(MID())
    Return CHAR(                                        // CHAR()
      CODE(UPPER(letter))                               // CODE(UPPER(MID()))
      +
      If (nth letter found and n is odd) {32} else {0}  // MOD(LEN(REGEXREPLACE(LEFT())))
    )
  } else {
    Return character                                    // MID()
  }
}

2

পার্ল 5 , 24 বাইট

23 বাইট + 1 বাইট জন্য -p

-২ বাইটের জন্য @ দাদাকে ধন্যবাদ

s/\pl/--$|?uc$&:lc$&/eg

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


ঝরঝরে। 2 বাইটের \plপরিবর্তে [a-z]থো :)
দাদা

@ দাদা, আমি সত্যই তা জানতাম না! কীভাবে জানলাম না !! ধন্যবাদ!
ডম হেস্টিংস

আমি মনে করি এটি টন হসপেলের কাছ থেকে শিখেছি এবং আমি এখন এবং পরে এটি ব্যবহার করি (আসলে আমি এটি প্রায়শই ভুলে যাই এবং [a-z]পরিবর্তে ব্যবহার করি !)। যদি আপনি আশ্চর্য হন তবে এটি পেরিলারচার্লাস থেকে এসেছে ;)
দাদা


1

সি 64 বাইট

B;R(char *s){for(;*s=isalpha(*s)?(B=!B)?*s|=32:*s&=~32:*s;s++);}

উচ্চতর এবং লোয়ার কেস চিঠিগুলি 0x20 দ্বারা অফসেট করা হয় এমন ascii এনকোডিংয়ের সুবিধা নেয়।


আপনি মধ্যে '' স্থান প্রয়োজন হবে না charএবং*s
cleblanc

এটি @ ক্লাব্ল্যাঙ্কের উত্তরের সাথে খুব মিল দেখাচ্ছে ।
ডিজিটাল ট্রমা

@ ক্লাব্ল্যাঙ্কের পোস্ট যখন আপার () এবং টু লোয়ার () এ ব্যবহৃত হত তখন আমি এটি পোস্ট করেছিলাম।
ব্যবহারকারী230118

1
এই মন্তব্যটির পরামর্শ দেওয়ার জন্য আমার মন্তব্যটি ছিল 18: 29: 34Z এ। এটি অন্তর্ভুক্ত করতে ক্লাব্ল্যাঙ্কের সম্পাদনাটি ছিল 18: 37: 36Z এ। আপনার উত্তর 18: 38: 21Z এ পোস্ট করা হয়েছিল। সুতরাং আমি অনুমান করি যে ক্লেব্ল্যাঙ্কের উত্তরটি আপনার পোস্টের এক মিনিটেরও কম ছিল। আপনার উত্তরটি আমার পরামর্শের সাথে অসাধারণ, তবে আমার ধারণা, কোড-গল্ফের প্রকৃতি - প্রায়শই একই ভাষায় সমাধানগুলি একই জিনিসকে রূপান্তরিত করে - তাই আমি এটিকে স্লাইড করতে দেব :)
ডিজিটাল ট্রমা

1

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

T`l`L
01T`L`l`[A-Z][^A-Z]*[A-Z]?

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

প্রথমে ইনপুটটিকে বড়হাতে রূপান্তরিত করে, এবং তারপরে ইনপুটটিকে দুটি মূল অক্ষর যুক্ত ম্যাচে ভাগ করে দেয়। এটিতে কেবলমাত্র একটি অক্ষর থাকবে কেবল যদি শেষ বর্ণের একটি জুড়ি না থাকে। তারপরে এটি এই ম্যাচের প্রতিটির প্রথম অক্ষরকে ছোট করে।

01দ্বিতীয় পর্যায়ের এ মোটামুটিভাবে অনুবাদ: এই পর্যায়ে ম্যাচ সংখ্যার উপর ভিত্তি করে আচরণ পরিবর্তন না, কিন্তু প্রতিটি ম্যাচের প্রথম অক্ষর পরিবর্তন প্রয়োগ করা হয়।



1

সি #, 100 বাইট

s=>{var r="";int m=0;foreach(var c in s)r+=char.IsLetter(c)?(char)(++m%2>0?c|32:c&~32):c;return r;};



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