ফেসি ম্যাকফেসফেস


47

কেউ কি বোটির কথা মনে আছে ?

আপনি পুরোপুরি কোনও পুরানো শব্দ তৈরি করতে পারেন, তাই না?

  • কিছুটা ম্যাকসোমথিংফেসে স্ট্রিংটি পরিবর্তন করতে একটি ফাংশন লিখুন।
  • এটি একটি স্ট্রিং ইনপুট হিসাবে গ্রহণ করা উচিত। ইনপুট ক্ষেত্রে উপেক্ষা করুন।
  • যদি শব্দটি 'y' এ শেষ হয় তবে আপনার ফাংশনটি প্রথম বারে অতিরিক্ত 'y' যুক্ত করা উচিত নয়, তবে এটি দ্বিতীয় বারে সরিয়ে ফেলা উচিত।
  • যদি শব্দটি 'ey' এ শেষ হয়, তবে এটির প্রথম দৃষ্টিতে অতিরিক্ত 'y' যুক্ত হওয়া উচিত নয়, তবে দ্বিতীয় দফায় উভয়ই সরিয়ে ফেলা উচিত।
  • আউটপুটটিতে কেবলমাত্র প্রথম অক্ষর, 'ম্যাক' এর 'এম' এবং 'ম্যাক' এর পরে প্রথম অক্ষর থাকা উচিত।
  • এর জন্য কেবল 3 বা ততোধিক অক্ষরের স্ট্রিং দিয়ে কাজ করা দরকার।

উদাহরণ:

boat                  =>  Boaty McBoatface
Face                  =>  Facey McFaceface
DOG                   =>  Dogy McDogface
Family                =>  Family McFamilface
Lady                  =>  Lady McLadface
Donkey                =>  Donkey McDonkface
Player                =>  Playery McPlayerface
yyy                   =>  Yyy McYyface
DJ Grand Master Flash =>  Dj grand master flashy McDj grand master flashface

স্ট্রিংয়ের ফাঁকা জায়গাগুলির কী, আমরা কী তাদের অক্ষত রেখে দেব? উদাহরণস্বরূপ: ' y'এবং' '
আমার

2
আমি @ আরনাউল্ডের একটি পরামর্শ বাস্তবায়ন করতে যাচ্ছি এবং এটিকে সর্বনিম্ন তিনটি অক্ষর তৈরি করব। অন্য চিঠির মতোই হোয়াইটস্পেসের ব্যবহার করুন।
এজেফারাডে


আমরা কি ধরে নিতে পারি ইনপুটটিতে কেবল উচ্চ এবং ছোট হাতের অক্ষর থাকবে?
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন আমি পরীক্ষার ক্ষেত্রে কোনও নন-চিঠি রাখিনি, সুতরাং তারা কার্যকরভাবে উদ্বিগ্ন নয়।
এজেফারাডে

উত্তর:


7

স্ট্যাক্স , 26 বাইট

ëO╛εh╕⌠î&!}∞┌C^U╟«äδ◙Bg⌠└¿

এটি চালান এবং এটি ডিবাগ করুন

^           convert input to upper case                     "FACE"
B~          chop first character and push it back to input  70 "ACE"
v+          lowercase and concatenate                       "Face"
c'yb        copy, push "y", then copy both                  "Face" "Face" "y" "Face" "y"
:]          string ends with?                               "Face" "Face" "y" 0
T           trim this many character                        "Face" "Face" "y"
+           concatenate                                     "Face" "Facey"
p           output with no newline                          "Face"
"e?y$"z     push some strings                               "Face" "e?y$" ""
" Mc`Rface  execute string template; `R means regex replace " Mc Faceface"
            result is printed because string is unterminated

এটি চালান


15

ভি , 27 28 30 বাইট

Vu~Ùóe¿y$
Hóy$
ÁyJaMc<Esc>Aface

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

<Esc> উপস্থাপিত 0x1b

  • দুটি বাইট গল্ফ করে জানার পরে যে আমাদের 3 টিরও কম অক্ষরের সাথে ইনপুটগুলি সমর্থন করার দরকার নেই।

  • 1 ডি বাইটটি প্রথম লাইনের আগে দ্বিতীয় লাইনে কাজ করে @ ডিজেএমসিমেহেমকে ধন্যবাদ বাঁচিয়েছে, এভাবে অপসারণ করে G

ইনপুটটি বাফারে রয়েছে। প্রোগ্রামটি শুরু হয় সবকিছুকে ছোট হাতের মধ্যে রূপান্তর করে

Vলাইনটি নির্বাচন করে এবং uএটি ছোট করে

~ প্রথম চরিত্রের কেস টগল করে (এটিকে বড় হাতের কাছে রূপান্তর করে)

এবং Ùনীচের লাইনে কার্সার রেখে উপরের এই লাইনটি সদৃশ করুন

óএবং পরিবর্তিত e¿y$, সংকুচিত ফর্ম e\?y$(optionচ্ছিক eএবং yলাইনের শেষে একটি ), কিছুই না দিয়ে (দ্বিতীয় লাইনে ঘটে)

H প্রথম লাইনে যায়

óপ্রথম লাইনে কিছুই না রেখে y$( yলাইনের শেষে) প্রতিস্থাপন করে

Áyপ্রথম লাইনের শেষে একটি যুক্ত করে

J এবং মাঝের জায়গার সাথে প্রথমটির সাথে শেষ লাইনে যোগ দেয় এবং কার্সারটি এই স্পেসে স্থানান্তরিত হয়

aসংযোজন Mc( <Esc>স্বাভাবিক মোডে ফিরে আসে)

Aঅবশেষে, faceলাইনের শেষে সংযোজন



13

পাইথন, 144 বাইট

def f(s):
 s=s[0].upper()+s[1:].lower()
 y=lambda s:s[:-1]if s[-1]=='y'else s
 t=y(s)
 u=s[:-2]if s[-2:]=='ey'else y(s)
 return t+'y Mc%sface'%u

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


2
আমার প্রথম কোড গল্ফের প্রচেষ্টা ...
আমার শরীরে স্পর্শ করুন

3
পিপিসিজিতে আপনাকে স্বাগতম! আমি এটি অনলাইনে চেষ্টা করার জন্য একটি লিঙ্ক যুক্ত করার পরামর্শ দিতে পারি ! সঠিকতা যাচাইয়ের জন্য?
জিউসেপে

1
f("Face")বর্তমান পরীক্ষার কেস ( টিআইও ) মেনে চলে না ।
জোনাথন ফ্রেচ

নির্ভুলতার জন্য সম্পাদিত পোস্ট, এটিও চেষ্টা করুন অনলাইনে! লিঙ্ক
আমার শরীর টাচ করুন


12

এক্সেল, 204 144 137 165 বাইট

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(REPT(REPLACE(LOWER(A1),1,1,UPPER(LEFT(A1)))&"~",2),"~","y Mc",1),"yy ","y "),"ey~","~"),"y~","~"),"~","face")

ভিতর থেকে বাইরের দিকে:

REPLACE(LOWER(A1),1,1,UPPER(LEFT(A1)))      Replaces PROPER to handle space-delimited cases
REPT(%&"~",2)                   Duplicate.                    Donkey~Donkey~
SUBSTITUTE(%,"~","y Mc",1)      Replace first ~.              Donkeyy McDonkey~
SUBSTITUTE(%,"yy ","y ")        Handle words ending in 'y'.   Donkey McDonkey~
SUBSTITUTE(%,"ey~","~")         Handle words ending in 'ey'   Donkey McDonk~
SUBSTITUTE(%,"y~","~")          Handle words ending in 'y'    Donkey McDonk~
SUBSTITUTE(%,"~","face")        Adding face.                  Donkey McDonkface

পুরানো উত্তর, পৃথকভাবে সমস্ত বিট তৈরি করা, এবং তারপরে সংক্ষিপ্তকরণ (176 বাইট)। স্থান-সীমাবদ্ধ কেসগুলি সঠিকভাবে পরিচালনা করে না।

=PROPER(A1)&IF(LOWER(RIGHT(A1,1))="y",,"y")&" Mc"&IF(LOWER(RIGHT(A1,2))="ey",LEFT(PROPER(A1),LEN(A1)-2),IF(LOWER(RIGHT(A1,1))="y",LEFT(PROPER(A1),LEN(A1)-1),PROPER(A1)))&"face"

দুর্ভাগ্যক্রমে, স্থান-সীমাবদ্ধ কেসগুলি পরিচালনা করার প্রয়োজনীয়তার কারণে, PROPER(A1)অবৈধ ( DJ Grand Master Flashইনপুট কেসটি দেখুন ), আমার ভিবিএ সমাধানে কাজ করার সময় আমি যে সেরা প্রতিস্থাপনটি খুঁজে পেতে পারি তা হ'ল LEFT(UPPER(A1))&MID(LOWER(A1),2,LEN(A1))- দয়া করে আমাকে অবহিত করুন যে আপনি যদি এটিকে গল্ফ করে শেষ করেন তবে।
টেলর স্কট

1
আপনাকে ধন্যবাদ টেলরস্কট। 'রিপ্লেস (লোয়ার (এ 1), 1,1, UPPER (বাম (A1)) পাওয়া গেছে - যা 2 বাইট সংক্ষিপ্ত।
ওয়ার্নিশ


9

সি # (.নেট কোর) , 122 108 139 175 180 179 154 বাইট

অনেক অনেক ধন্যবাদ, লি!

s=>((s.EndsWith("y")?s:s+"y")+" Mc"+(s+"$").Replace("ey$","")+"face").Replace(s,s.ToUpper()[0]+s.Substring(1).ToLower()).Replace("y$","").Replace("$","");

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

সি # (.নেট কোর, লিনকিউ সহ), 152 বাইট

s=>((s.Last()=='y'?s:s+"y")+" Mc"+(s+"$").Replace("ey$","")+"face").Replace(s,s.ToUpper()[0]+s.Substring(1).ToLower()).Replace("y$","").Replace("$","");

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


3
সাইটে স্বাগতম! :)
ডিজেএমসিএমহেম


7

রুবি , 61 49 বাইট

->s{s.capitalize=~/(e)?y$|$/;"#$`#$1y Mc#$`face"}

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

@ মার্টিনইেন্ডারে 12 টি মিষ্টি বাইট সংরক্ষণ করা হয়েছে:


1
আমার রেটিনা উত্তর থেকে রেজেক্স ব্যবহার করা এবং স্ট্রিং ইন্টারপোলেশনটির আরও কিছুটা ব্যবহার করা এটি 49-এ নেমে আসে: tio.run/##DcxBCsIwEEDRqwxJBF3Y4lpSN0U3igcQwTQmGFptMVNkTOLVY3bvb/…
মার্টিন এন্ডার

@ মার্টিনএেন্ডার বাহ, এটি বেশ পার্থক্য। আমি মনে করি না আমি বন্ধনী ছাড়া স্ট্রিং ইন্টারপোলেশন দেখেছি। আপনি নিজের রুবি উত্তরের জন্য এটি ব্যবহার না করতে চাইলে আমি এটি নেব।
iamnotmaynard

নাহ, এটি ঠিক আছে, আমি ব্যবহারের =~পরিবর্তে পুরো স্ট্রিংটি ব্যবহার এবং নির্মাণের সাথে আসতে পারতাম না sub। স্ট্রিং ইন্টারপোলেশন বন্ধনী ছাড়াই ব্যবহার করা যেতে পারে যদি ভেরিয়েবলটি বিশ্বব্যাপী, উদাহরণস্বরূপ বা বর্গ পরিবর্তনীয় হয়।
মার্টিন ইন্ডার

-pপতাকাটি ব্যবহার করে এবং এটি ব্যবহার করে আপনি এটি 44 + 1 বাইটে নামাতে পারবেন sub: tio.run/…
জর্ডান




5

জাভা 8, 121 112 107 106 বাইট

s->(s=(char)(s.charAt(0)&95)+s.toLowerCase().substring(1)).split("y$")[0]+"y Mc"+s.split("e?y$")[0]+"face"

-1 বাইট @ অলিভারগ্রাগোয়ারকে ধন্যবাদ ।

ব্যাখ্যা:

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

s->                         // Method with String as both parameter and return-type
  (s=                       //  Replace and return the input with:
     (char)(s.charAt(0)&95) //   The first character of the input as Uppercase
     +s.toLowerCase().substring(1))
                            //   + the rest as lowercase
  .split("y$")[0]           //  Remove single trailing "y" (if present)
  +"y Mc"                   //  Appended with "y Mc"
  +s.split("e?y$")[0]       //  Appended with the modified input, with "y" or "ey" removed
  +"face"                   //  Appended with "face"

প্রথম চরটি বর্ণানুক্রমিক না হলে কী হবে? অথবা হয়ত আমরা .. একটি নিয়ম যে সম্পর্কে যোগ পেতে পারেন
streetster

1
@ স্ট্রিস্টস্টার সবেমাত্র ওপিকে জিজ্ঞাসা করেছেন, এবং মনে হচ্ছে ইনপুটটিতে কেবল বড় হাতের অক্ষর এবং / অথবা ছোট হাতের অক্ষর থাকবে।
কেভিন ক্রুজসসেন

1
~32-> 951 বাইট সংরক্ষণের জন্য
অলিভিয়ার গ্রাগোয়ার

@ অলিভিয়ের গ্রাগোয়ারে আমাকে বিটওয়াইজ অপারেশন সম্পর্কে আরও কিছুটা শিখতে হবে ..>।>
কেভিন ক্রুইজসেন ২৯'১৮

4

জাভাস্ক্রিপ্ট, 103 96 94 বাইট

এই খুব সুন্দর প্রথম পাস।

s=>(g=r=>s[0].toUpperCase()+s.slice(1).toLowerCase().split(r)[0])(/y$/)+`y Mc${g(/e?y$/)}face`

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


s =>${s=s[0].toUpperCase()+s.slice(1).toLowerCase().replace(/y$/,``)}y Mc${s.replace(/e?y$/,``)}face
বেনিয়ামিন গ্রুইনবাউম

${s=s[0].toUpperCase()+s.slice(1).toLowerCase().replace(/y$/,'')}y Mc${s.replace(/e$/,``)}face
বেনজামিন গ্রুয়েনবাউম

ধন্যবাদ, @ বেঞ্জামিন গ্রুয়েনবাউম, তবে প্রথম ব্যর্থ হয়েছে Donkeyএবং দ্বিতীয়টি এর জন্য ব্যর্থ Face
শেগি


@ শেগি আমি কিছু চর দ্বারা জি ফাংশন হ্রাস করতে পরিচালিত :)। আপনি আমার সমাধানটি দেখতে পারেন
ড্যানিয়েলইন্ডি

3

vim, 35 34 বাইট

Vu~Yp:s/ey$
:%s/y$
kgJiy Mc<ESC>Aface<ESC>

<ESC> হয় 0x1b

Ungolfed

Vu~                      # Caseify McCaseface
Yp                       # dup line
:s/ey$ 
:%s/y$                   # Get the suffixes right
kgJiy Mc<ESC>Aface<ESC>  # Join lines and add the extra chars

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

ডিজেএমসিমেহেমকে 1 বাইট সংরক্ষণ করা হয়েছে


1
আপনি কি করতে পারেন Yপরিবর্তেyy
DJMcMayhem

3

পার্ল 5 -p , 47 39 বাইট

@ ওলেগভি.ভোলকভের পরামর্শ সহ 6 বাইট সংরক্ষণ করা হয়েছে, @ মওয়েলহোফের সাথে 1 এবং আমার নিজের 1 টি

$_=lc^$";$_=s/y?$/y Mc/r.s/e?y$//r.face

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


আপনি পরিত্রাণ পেতে পারেন ucfirst:$_=lc^$";
ওলেগ ভি। ভলকভ

$_=s/y$//r."y Mc".s/e?y$//r.faceএক বাইট খাটো।
নওহ্নহোফ


Duh। আমার এটা বুঝতে হবে।
এক্সকালি

3

সি ++ 14 (জি ++), 181 171 148 147 134 বাইট

[](auto s){s[0]&=95;int i=1,b;for(;s[i];)s[i++]|=32;b=s[--i]-'y';return s+(b?"y":"")+" Mc"+(b?s:s.substr(0,s[i-1]-'e'?i:i-1))+"face";}

নোট করুন যে ঝনঝন এটি সংকলন করবে না।

কৃতিত্বের জন্য কৃতিত্ব কেভিন ক্রুইজসেন এবং অলিভিয়ার গ্রাগোয়ারের কাছে &95

11 বাইট গল্ফ করার জন্য ক্রিসকে ধন্যবাদ ।

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

অবরুদ্ধ সংস্করণ:

[] (auto s) { // lambda taking an std::string as argument and returning an std::string
    s[0] &= 95; // convert the first character to upper case
    int i = 1, // for iterating over the string
    b; // we'll need this later
    for(; s[i] ;) // iterate over the rest of the string
        s[i++] |= 32; // converting it to lower case
    // i is now s.length()
    b = s[--i] - 'y'; // whether the last character is not a 'y'
    // i is now s.length()-1
    return s + (b ? "y" : "") // append 'y' if not already present
    + " Mc"
    + (b ? s : s.substr(0, s[i-1] - 'e' ? i : i-1)) // remove one, two, or zero chars from the end depending on b and whether the second to last character is 'e'
    + "face";
}

আমি সি ++ তেমন জানি না তবে আপনি 9 বাইট গল্ফ করতে পারেন: অনলাইনে 172 বাইট ব্যবহার করে দেখুন। পরিবর্তনের সংক্ষিপ্তসার: s[0]=s[0]&~32;থেকে s[0]&=~32;; s[i++]=s[i]|32;to s[i++]|=32; এবং int i=1,n=s.length()-1,b;সুতরাং আপনার কেবল 1 প্রয়োজন int
কেভিন ক্রুইজসেন

ওহ, এবং আরও একটি বাইটে স্থানটি সরিয়ে#include<string>
কেভিন ক্রুইজসেন

কেভিন ক্রুজসেন এটি ধরার জন্য ধন্যবাদ! আমি সম্পাদনা করেছি।
ওবালান্স

আপনি 11 বাইট সংরক্ষণ করতে পারবেন না সংজ্ঞায়িত করে nএবং কেবলমাত্র iলুপের পরে মানটি ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!
ক্রিস

@ ক্রিস ধন্যবাদ! আমি আরও 2 টি বাইট শেভ করতে পেরেছি।
ওবালেন্স

2

ভি , 38 36 32 বাইট

-5 বাইট @ কউজ কোয়াকে ধন্যবাদ

Vu~hy$ó[^y]$/&y
A Mc<esc>póe¿y$
Aface

<esc>একটি আক্ষরিক অব্যাহতি অক্ষর এবং [^হিসাবে এনকোড করা হয়\x84

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


gu$হয়ে উঠতে পারেVu
ক্রিটিক্সী লিথোস

2
যেহেতু [^একটি রেজেক্স শর্টকাট ( এখানে দেখুন ), আপনি [^বাইট সংরক্ষণ করার পরিবর্তে 0x84 ব্যবহার করতে পারেন । একইভাবে, অন্য বাইট সংরক্ষণ \?করতে সরল করা <M-?>যেতে পারে। এবং $a=>A
ক্রিটসি লিথোস


2

পাইথন 3 , 117 114 বাইট

-3 বাইটস ডেড পসামকে ধন্যবাদ

def f(s):s=s.title();return s+'y'*(s[-1]!='y')+' Mc'+([s,s[:-1],0,s[:-2]][(s[-1]=='y')+((s[-2:]=='ey')*2)])+'face'

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


তালিকার তৃতীয় উপাদানটি 1 বাইট সংরক্ষণে [s,s[:-1],'',s[:-2]পরিবর্তন করা 0যেতে পারে।
ডেড পসসাম

ইন 'y'*1 *1প্রয়োজন হয় না। আরও 2 বাইট
ডেড পসসাম

পাইথন 3 থেকে পাইথন 2 তে স্যুইচিং করা এবং এর সাথে প্রতিস্থাপন returnকরা printহচ্ছে 1 বাইট সংক্ষিপ্ত।
কেভিন ক্রুইজসেন

2

জাভাস্ক্রিপ্ট (নোড.জেএস) , 87 বাইট

  • 5 বাইট 5 হ্রাস করার জন্য @ শাগগিকে ধন্যবাদ
s=>(g=r=>Buffer(s.replace(r,"")).map((x,i)=>i?x|32:x&~32))(/y$/)+`y Mc${g(/e?y$/)}face`

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


2
আপনার পুনরাবৃত্ত ফাংশনগুলির নাম রাখতে হবে না।
ডেনিস

1
সুন্দরভাবে সম্পন্ন. আমি কখনই ব্যবহার Bufferকরার কথা ভাবি না, ভবিষ্যতের চ্যালেঞ্জগুলির জন্য এটি মনে রাখার চেষ্টা করতে হবে। এটি আপনার জন্য 87 বাইটে নামা হয়েছে।
শেগি

2

K4 , 74 69 68 বাইট

সমাধান:

{$[r;x;x,"y"]," Mc",_[r:0&1-2/:"ye"=2#|x;x:@[_x;0;.q.upper]],"face"}

উদাহরণ:

q)k)f:{$[r;x;x,"y"]," Mc",_[r:0&1-2/:"ye"=2#|x;x:@[_x;0;.q.upper]],"face"}
q)f each ("boat";"Face";"DOG";"Family";"Lady";"Donkey";"Player")
"Boaty McBoatface"
"Facey McFaceface"
"Dogy McDogface"
"Family McFamilface"
"Lady McLadface"
"Donkey McDonkface"
"Playery McPlayerface"

ব্যাখ্যা:

শেষ অক্ষরগুলির সমান কিনা তা নির্ধারণ করুন "ey", ফলাফলকে বেস -২ এ রূপান্তর করুন যাতে আমরা শেষ হওয়া শব্দগুলিকে উপেক্ষা করতে পারি "e?"। ছাঁটাই করতে অক্ষরের সংখ্যার তালিকায় সূচক ex

শেষ দুটি অক্ষর "ey"এটিকে আরও ভাল করার জন্য লড়াই করছে কিনা তা নির্ধারণ করার জন্য আমার কোড থেকে 5 বাইট শেভ করার ব্যবস্থা করা ...

{$[r;x;x,"y"]," Mc",_[r:0&1-2/:"ye"=2#|x;x:@[_x;0;.q.upper]],"face"} / the solution
{                                                                  } / lambda function
                                                            ,"face"  / join with "face"
                    _[                  ;                  ]         / cut function
                                           @[_x; ;        ]          / apply (@) to lowercased input
                                                0                    / at index 0
                                                  .q.upper           / uppercase function
                                         x:                          / save back into x
                                      |x                             / reverse x
                                    2#                               / take first two chars of x
                               "ye"=                                 / equal to "ye"?
                             2/:                                     / convert to base 2
                           1-                                        / subtract from 1
                         0&                                          / and with 0 (take min)
                       r:                                            / save as r
             ," Mc",                                                 / join with " Mc"
 $[r;x;x,"y"]                                                        / join with x (add "y" if required)

বোনাস:

কে (ওকে)67 বাইট বন্দর :

{$[r;x;x,"y"]," Mc",((r:0&1-2/"ye"=2#|x)_x:@[_x;0;`c$-32+]),"face"}

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


1
আপনার ওকে বন্দরটি যদি হেরে যায় তবে কে 4 এর কী লাভ?
জ্যাকারি

আমি ভাবিনি এটি হবে, এবং বন্দরটি যদি প্রথম অক্ষর বর্ণানুক্রমিক না হয় তবে ASCII মান থেকে অন্ধভাবে 32 বিয়োগ করবো - কোনও "উচ্চ" বিল্ট-ইন নেই।
স্ট্রিস্টার

2

রুবি , 69 বাইট

->s{"#{(s.capitalize!||s)[-1]==?y?s:s+?y} Mc#{s.gsub /e?y$/,""}face"}

ব্যাখ্যা:

->s{                                                                } # lambda 
    "#{                                 } Mc#{                }face" # string interpolation
       (s.capitalize!||s) # returns string capitalized or nil, in that case just use the original string
                         [-1]==?y # if the last character == character literal for y
                                 ?s:s+?y # then s, else s + "y"
                                              s.gsub /e?y$/,"" # global substitute
                                                               # remove "ey" from end

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


আপনি একটি টিআইও লিঙ্ক যোগ করতে পারেন? আমি রুবিকে চিনি না, তবে s.capitalizeআগেরটি কি প্রতিস্থাপন করবে s? যদি না হয়, না /e?y$/হ্যান্ডেল একটি পরীক্ষা ক্ষেত্রে বিভক্তি Y, EYঅথবা Eyসঠিকভাবে?
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুজজেন s.capitalizeবনাম s.capitalize!(বিভিন্ন ফাংশন) s.capitalize!পুরাতন সংস্করণ ক্লোবার্স।
dkudriavtsev

@ কেভিন ক্রুজসেন আমি একটি টিআইও লিঙ্ক যুক্ত করেছি।
dkudriavtsev

@ কেভিন ক্রুজসেন এছাড়াও একটি ব্যাখ্যা যুক্ত করেছেন
ডকুড্রিয়াভটসেভ

আহ ঠিক আছে, ব্যাখ্যা এবং সম্পর্কে তথ্যের জন্য ধন্যবাদ s.capitalize!। রুবিতে কখনও প্রোগ্রাম করা হয়নি, তবে আগের মানটি প্রতিস্থাপনের জন্য একটি ব্যাখ্যা চিহ্ন যুক্ত করা দুর্দান্ত cool আমার কাছ থেকে +1
কেভিন ক্রুইজসেন

2

Jstx , 27 বাইট

h</►yT↓►y/◙♂ Mc♀/◄eyg►yg/íå

ব্যাখ্যা

      # Command line args are automatically loaded onto the stack
h     # Title case the top of the stack
<     # Duplicate the top value on the stack twice
/     # Print the top value on the stack
►y    # Load 'y' onto the stack
T     # Returns true if the 2nd element on the stack ends with the top
↓     # Execute block if the top of the stack is false
  ►y  # Load 'y' onto the stack
  /   # Print the top value on the stack
◙     # End the conditional block
♂ Mc♀ # Load ' Mc' onto the stack
/     # Print the top value on the stack
◄ey   # Load 'ey' onto the stack
g     # Delete the top of the stack from the end of the 2nd element on the stack if it exists
►y    # Load 'y' onto the stack
g     # Delete the top of the stack from the end of the 2nd element on the stack if it exists
/     # Print the top of the stack
íå    # Load 'face' onto the stack
      # Print with newline is implied as the program exits

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


আমি এই ভাষা আগে দেখিনি। এটি আকর্ষণীয় দেখাচ্ছে। দলিল আছে?
পুনরাবৃত্তির


বাহ, এটি সত্যিই চিত্তাকর্ষক। বিশেষত এত কম সময়ের জন্য। এটি কোথায় যায় তা দেখে আমি উত্তেজিত।
পুনরাবৃত্তির

2

লাল , 143 142 বাইট

func[s][s: lowercase s s/1: uppercase s/1
w: copy s if"y"<> last s[append w"y"]rejoin[w" Mc"parse s[collect keep to[opt["y"|"ey"]end]]"face"]]

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

Ungolfed:

f: func[s][
   s: lowercase s                      ; make the entire string lowercase
   s/1: uppercase s/1                  ; raise only its first symbol to uppercase 
   w: copy s                           ; save a copy of it to w
   if "y" <> last s[append w "y"]     ; append 'y' to w if it doesn't have one at its end
   rejoin[w                            ; assemble the result by joining:
          " Mc"
          ; keep the string until "y", "ey" or its end
          parse s[collect keep to [opt ["y" | "ey"] end]]
          "face"
    ]
]

2

পিএইচপি: 132

<?php function f($s){$s=ucfirst(strtolower($s));return $s.(substr($s,-1)=='y'?'':'y').' Mc'.preg_replace('/(ey|y)$/','',$s).'face';}

ব্যাখ্যা:

<?php

function f($s)
{
    // Take the string, make it all lowercase, then make the first character uppercase
    $s = ucfirst(strtolower($s));

    // Return the string, followed by a 'y' if not already at the end, then ' Mc'
    // and the string again (this time, removing 'y' or 'ey' at the end), then
    // finally tacking on 'face'.
    return $s
        . (substr($s, -1) == 'y' ? '' : 'y')
        . ' Mc'
        . preg_replace('/(ey|y)$/', '', $s)
        . 'face';
}


2

Pyth, 36 34 বাইট

++Jrz4*\yqJK:J"e?y$"k+" Mc"+K"face

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

ব্যাখ্যা:

++Jrz4*\yqJK:J"(e)?y$"k+" Mc"+K"face

  Jrz4                                  Set J to the titlecase of z (input)
           K:J"e?y$"k                   Set K to (replace all matches of the regex e?y$ in J with k (empty string))
         qJ                             Compare if equal to J
      *\y                               Multiply by "y" (if True, aka if no matches, this gives "y", else it gives "")
 +                                      Concatenate (with J)
                             +K"face    Concatenate K with "face"
                       +" Mc"           Concatenate " Mc" with that
+                                       Concatenate

দুর্ভাগ্যক্রমে এটি কাজ করে না, কারণ শেষ পরীক্ষার কেস ব্যর্থ হয়।
জাকারি

সুইচ rz3করার rz4শেষ টেস্ট ক্ষেত্রে জন্য সঠিকভাবে কাজ করার জন্য এই জন্য।
hakr14

ওফফফ, আমি এটি ঠিক করব: পি
আরকে।

2

এলিক্সির , 112 110 107 106 বাইট

এখন জাভা হিসাবে সংক্ষিপ্ত

fn x->x=String.capitalize x;"#{x<>if x=~~r/y$/,do: "",else: "y"} Mc#{String.replace x,~r/e?y$/,""}face"end

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

ব্যাখ্যা:

x=String.capitalize x

xবড় হাতের অক্ষরে এবং অন্যান্য সমস্ত ছোট হাতের অক্ষরে প্রথম অক্ষর পায় ।

#{ code }

কোডটি মূল্যায়ন করুন এবং স্ট্রিংয়ে এটি sertোকান।

#{x<>if x=~ ~r/y$/, do: "", else: "y"}

X এর সাথে yশেষ না হলে এটি প্রতিযোগিতা করে y(যেমন এটি রেজেক্সের সাথে মেলে না y$)।

#{String.replace x, ~r/e?y$/, "")}

ট্রেলিং eyএবং পেছন সরিয়ে দেয় y



1

পাইথ, 60 59 বাইট এসবিসিএস

K"ey"Jrz4Iq>2JK=<2J=kK.?=k\yIqeJk=<1J))%." s÷   WZÞàQ"[JkJ

পরীক্ষা স্যুট

তারা এখানে প্রদর্শন না, কিন্তু তিন বাইট, \x9c, \x82, এবং \x8cমধ্যে বস্তাবন্দী স্ট্রিং হয় sএবং ÷। নিশ্চিত আশ্বাস, লিঙ্কটি তাদের অন্তর্ভুক্ত করে।

পাইথন 3 অনুবাদ:
K="ey"
J=input().capitalize()
if J[-2:]==K:
    J=J[:-2]
    k=K
else:
    k="y"
    if J[-1]==k:
        J=J[:-1]
print("{}{} Mc{}face".format(J,k,J))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.