Facey McFaceface


47

Boaty'yi hatırlayan var mı?

Tamamen eski bir kelime söyleyebilirsin, değil mi?

  • Bir dizgiyi Somethingy McSomethingface'e çevirmek için bir işlev yazın.
  • Giriş olarak bir dize kabul etmelidir. Girişin durumunu dikkate almayın.
  • Sözcük 'y' ile bitiyorsa, işleviniz ilk örneğe ek bir 'y' eklememeli, ancak ikinci örnekte kaldırmalıdır.
  • Eğer kelime 'ey' ile bitiyorsa, ilk etapta ek bir 'y' eklenmemeli, ikinci durumda da her ikisini de kaldırmalı.
  • Çıktıda yalnızca ilk karakterde büyük harf, "Mc" nin "M" si ve "Mc" den sonraki ilk karakter bulunmalıdır.
  • yalnızca 3 veya daha fazla karakter içeren dizelerle çalışması gerekir.

Örnekler:

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

İpteki boşluklar ne olacak, onları sağlam mı bırakacağız? Örnekler: ' y've' '
vücuduma dokun

2
@Arnauld'dan bir öneride bulunacağım ve en az üç karakter yapacağım. Boşluğa başka bir harf gibi davran.
AJFaraday


Girişin yalnızca büyük ve küçük harfler içereceğini varsayabilir miyiz?
Kevin Cruijssen

@KevinCruijssen Test senaryolarına mektup yazmadım, bu yüzden etkili bir şekilde ilgilenmiyorlar.
AJFaraday

Yanıtlar:


7

Stax , 26 bayt

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

Koş ve hata ayıkla

^           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

Bunu çalıştır


15

V , 27 28 30 bayt

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

Çevrimiçi deneyin!

<Esc> Temsil 0x1b

  • Öğrendikten sonra iki karakterden az olan girdileri desteklememiz gerekmediğini öğrendikten sonra iki byte golf oynadı.

  • @DJMcMayhem sayesinde 1 bayt, birinciden önce ikinci satırda çalışarak kurtarıldı, G

Giriş tamponda. Program her şeyi küçük harfe dönüştürerek başlar.

Vçizgiyi seçer ve uonu küçük harflerle

~ İlk karakterin büyük / küçük harfini değiştirir (büyük harfe dönüştürür)

ve Ùimleci alt satırda bırakarak yukarıdaki bu satırı çoğaltır

óve e¿y$sıkıştırılmış biçimini e\?y$(isteğe bağlı eve ysatırın sonunda) hiçbir şey olmadan (ikinci satırda gerçekleşir) değiştirir

H ilk satıra gider

óyerini y$( yilk satırda hiçbir şey satırın sonunda)

Áyilk satırın sonuna bir a ekler

J ve son çizgiyi ilkinde ortada bir boşluk olacak şekilde birleştirir ve imleç bu alana taşınır.

aekler Mc( <Esc>normal moda döner)

ASonunda, facesatırın sonuna eklenir .



13

Python, 144 bayt

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

Burada çevrimiçi deneyin


2
Benim ilk kod golf girişimi ...
vücuduma dokunma

3
PPCG'ye hoş geldiniz! Çevrimiçi Deneyin için bir bağlantı eklemenizi önerebilirim ! doğruluğunun doğrulanması için mi?
Giuseppe

1
f("Face")mevcut test durumlarına ( TIO ) uymuyor .
Jonathan Frech

Doğruluk için düzenlenmiş yayın, ayrıca Çevrimiçi Deneyin! bağlantı
vücuduma dokun


12

Excel, 204 144 137 165 bayt

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

İçeriden dışarıya:

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

Eski cevap, tüm bitleri ayrı ayrı yaratma ve birleştirme (176 bayt). Yerden ayrılmış durumları doğru işlemez.

=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"

Ne yazık ki, alanla ayrılmış davaların ele alınması gerekliliği nedeniyle PROPER(A1), geçersiz ( DJ Grand Master Flashgiriş vakasına bakınız ), VBA çözümüm üzerinde çalışırken bulabileceğim en iyi yer değiştirdi LEFT(UPPER(A1))&MID(LOWER(A1),2,LEN(A1))- lütfen golf oynamaktan vazgeçerseniz haberim olsun.
Taylor Scott

1
@TaylorScott'a teşekkür ederiz. Bulunan 'REPLACE (LOWER (A1), 1,1, UPPER (LEFT (A1)))', 2 bayt daha kısa.
Wernisch


9

C # (.NET Core) , 122 108 139 175 180 1717 154 bayt

Çok teşekkürler Lee!

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

Çevrimiçi deneyin!

C # (LINQ ile .NET Core), 152 bayt

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

Çevrimiçi deneyin!


3
Siteye Hoşgeldiniz! :)
DJMcMayhem


7

Ruby , 61 49 bayt

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

Çevrimiçi deneyin!

@ Martininder sayesinde 12 tatlı byte kaydedildi:


1
Benim Retina cevabını regex kullanarak ve dize enterpolasyon biraz daha yararlanarak ila 49 bu aşağı alır: tio.run/##DcxBCsIwEEDRqwxJBF3Y4lpSN0U3igcQwTQmGFptMVNkTOLVY3bvb/...
Martin Ender

@MartinEnder Wow, bu oldukça bir fark. İplik enterpolasyonunu parantez olmadan gördüğümü sanmıyorum. Kendi Ruby cevabınız için kullanmak istemiyorsanız alırım.
iamnotmaynard

Hayır, sorun değil, kullanmak =~yerine tüm dizeyi kullanmak ve kurmakla gelmezdim sub. Değişken bir genel, örnek veya sınıf değişkeni ise dize enterpolasyonu parantez olmadan kullanılabilir.
Martin Ender

Sen kullanarak 44 + 1 bayt bu hakkı elde edebilir -pbayrağı ve kullanma sub: tio.run/...
Ürdün

7

Python 3 , 80 bayt

Uzun zamandır hevesli bir okuyucu, sonunda ilk gönderim!

lambda y:re.sub("([\w ]+?)((e)?y)?$",r"\1\3y Mc\1face",y.capitalize())
import re

Çevrimiçi deneyin


1
PPCG'ye hoş geldiniz ve çok güzel bir ilk yazı!
Zacharı



5

Java 8, 121 112 107 106 bayt

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

@ OliverGrégoire sayesinde -1 bayt .

Açıklama:

Çevrimiçi deneyin.

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"

Ya ilk karakter alfabetik değilse? Ya da belki bunun hakkında bir kural ekleyebiliriz ..
streetster

1
@streetster Sadece OP sordu ve girdi sadece büyük ve / veya küçük harf içerecek gibi görünüyor.
Kevin Cruijssen

1
~32-> 951 bayt için kaydedildi
Olivier Grégoire

@ OlivierGrégoire Bitsel işlemler hakkında biraz daha fazla şey öğrenmeye gerçekten ihtiyacım var ..>.>
Kevin Cruijssen 29:18

4

JavaScript, 103 96 94 bayt

Bu işte ilk defa çok saf.

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

Çevrimiçi deneyin


s =>${s=s[0].toUpperCase()+s.slice(1).toLowerCase().replace(/y$/,``)}y Mc${s.replace(/e?y$/,``)}face
Benjamin Gruenbaum

Bir az: s =>${s=s[0].toUpperCase()+s.slice(1).toLowerCase().replace(/y$/,'')}y Mc${s.replace(/e$/,``)}face
Benjamin Gruenbaum

Teşekkürler, @BenjaminGruenbaum, ancak birincisi için başarısız Donkeyve ikincisi için Face.
Shaggy


@Shaggy, g işlevini bazı karakterlerle azaltmayı başardı :). benim
çözümümde

3

vim, 35 34 bayt

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

<ESC> dır-dir 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

Çevrimiçi deneyin!

DJMcMayhem sayesinde 1 bayt kaydedildi


1
Sen yapabilirsin Yyerineyy
DJMcMayhem


3

C ++ 14 (g ++), 181 171 148 147 134 bayt

[](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";}

Klanın bunu derlemeyeceğini unutmayın.

Kredi , numara için Kevin Cruijssen ve Olivier Grégoire'e gidiyor &95.

11 bayt golf oynadığı için teşekkürler Chris .

Burada çevrimiçi deneyin .

Ungolfed versiyonu:

[] (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";
}

C ++ 'ı o kadar iyi tanımıyorum, ancak 9 bayt golf oynayabilirsiniz: Çevrimiçi 172 bayt deneyin . Değişikliklerin özeti: s[0]=s[0]&~32;için s[0]&=~32;; s[i++]=s[i]|32;için s[i++]|=32; ve int i=1,n=s.length()-1,b;böylece sadece 1'e ihtiyacınız var int.
Kevin Cruijssen

Oh, ve boşluğu kaldırarak bir bayt daha#include<string>
Kevin Cruijssen

@KevinCruijssen bunu yakaladığın için teşekkürler! Düzenledim.
OOBalance

11 bayt'ı tanımlayarak nve sadece iwhile döngüsünün değerini kullanarak kaydedebilirsiniz . Çevrimiçi deneyin!
Chris

@Chris Teşekkürler! 2 bayt daha tıraş etmeyi başardım.
OOBalance

2

V , 38 36 32 bayt

@Cows quack sayesinde -5 bayt

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

<esc>bir hazır kaçış karakteridir ve [^olarak kodlanan\x84

Çevrimiçi deneyin!


gu$olabilirVu
Kritixi Lithos 27:18

2
Yana [^regex kısayolu (bkz olduğunu burada ) kullanarak, 0x84 kullanabilirsiniz yerine [^bir bayt kaydedin. Benzer şekilde, başka bir bayttan tasarruf etmek \?için basitleştirilebilir <M-?>. Ve $a=>A
Kritixi Lithos 27:18


2

Python 3 , 117 114 bayt

Dead Possum sayesinde -3 bayt

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'

Çevrimiçi deneyin!


Listenin 3. elemanı 1 byte tasarruf [s,s[:-1],'',s[:-2]etmek 0için değiştirilebilir .
Ölü Possum

İçinde 'y'*1 *1gerekli değildir. 2 bayt daha
Dead Possum

Python 3'ten Python 2 geçiş ve değiştirilmesi returnile print1 bayt kısadır.
Kevin Cruijssen

2

JavaScript (Node.js) , 87 bayt

  • @ 5Shaggy için 5 bayt azaltan teşekkürler
s=>(g=r=>Buffer(s.replace(r,"")).map((x,i)=>i?x|32:x&~32))(/y$/)+`y Mc${g(/e?y$/)}face`

Çevrimiçi deneyin!


2
Özyinelemeli olmayan işlevleri adlandırmanız gerekmez.
Dennis,

1
Güzel bitti. Kullanmayı hiç düşünmedim Buffer, gelecekteki zorluklar için hatırlamaya çalışmak zorunda kalacağım. Senin için 87 bayta indirdim .
Shaggy

2

K4 , 74 69 68 bayt

Çözüm:

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

Örnekler:

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"

Açıklama:

Son karakterlerin eşit olup olmadığını anlayın "ey", sonucu base-2'ye dönüştürün, böylece biten kelimeleri görmezden gelelim "e?". Kırpılacak karakter sayıları listesine endeksleyin.

Son iki karakterin atıp atmayacağına karar vermek için kodumu 5 byte'lık tıraş "ey"etmeyi başardı ...

{$[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)

Bonus:

67 baytlık bağlantı noktası K (OK) :

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

Çevrimiçi deneyin!


1
OK portunuz bunu yenerse K4'teki nokta nedir?
Zacharý

Öyle olacağını düşünmedim ve eğer ASCII değerinden kör bir şekilde 32 çıkardığım gibi ilk karakter alfabetik değilse, port çalışmaz - yerleşik bir "üst" yoktur.
streetster,

2

Ruby , 69 bayt

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

Açıklama:

->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

Çevrimiçi deneyin!


Bir TIO bağlantısı ekler misiniz? Ruby'yi tanımıyorum ama s.capitalizeöncekileri değiştiriyor smu? Değilse, does /e?y$/bir test durumu biten işlemek Y, EYya Eydoğru?
Kevin Cruijssen

1
@KevinCruijssen s.capitalizevs s.capitalize!(farklı fonksiyonlar). s.capitalize!eski sürümü clobbers.
dkudriavtsev

@KevinCruijssen Bir TIO bağlantısı ekledim.
dkudriavtsev

@KevinCruijssen Ayrıca bir açıklama ekledi
dkudriavtsev

Ah tamam, açıklama ve bilgi için teşekkürler s.capitalize!. Ruby'de asla programlanmadı, ancak önceki değeri değiştirmek için bir açıklama işareti eklemek oldukça iyi. Benden +1.
Kevin Cruijssen

2

Jstx , 27 bayt

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

açıklama

      # 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

Çevrimiçi deneyin!


Bu dili daha önce görmedim. İlginç görünüyor. Belgeler var mı?
özyinelemeli


Vay, bu gerçekten etkileyici. Özellikle çok az geliştirme zamanı için. Bunun nereye gittiğini görmek için heyecanlıyım.
özyinelemeli

2

Kırmızı , 143 142 bayt

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"]]

Çevrimiçi deneyin!

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

PHP: 132

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

Açıklama:

<?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

Jelly , 77 75 74 73 bayt

2ḶNṫ@€⁼"“y“ey”S
ØA;"ØaF
¢y⁸µ¢Uyµ1¦
Çṫ0n”yẋ@”y;@Ç;“ Mc”
⁸JU>ÑTị3Ŀ;@Ç;“face

Çevrimiçi deneyin!

Herhangi bir golf önerileri bekliyoruz (ve aranıyor)!


2

Pyth, 36 34 bayt

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

Çevrimiçi deneyin!

Açıklama:

++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

Maalesef bu son test davası başarısız olduğu için işe yaramıyor.
Zacharı

Geçiş rz3için rz4son test durumu için düzgün çalışması için bu olsun.
hakr14

Aman Tanrım, bunu düzelteceğim: P
RK.

2

İksir , 112 110 107 106 bayt

şimdi java kadar kısa

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

Çevrimiçi deneyin!

Açıklama:

x=String.capitalize x

Alır xbüyük harfle ilk karakteri ve tüm diğerleri küçük harf ile.

#{ code }

Kodu değerlendirin ve dizeye yerleştirin.

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

Eğer bitmezse x ile birleşir (yani, regex ile eşleşmiyor ).yyy$

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

İzlemeyi eyve izlemeyi kaldırır y.



1

Pyth, 60 59 bayt SBCS

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

Test odası

Burada gösterilecek yok, ama üç bayt, \x9c, \x82ve \x8caralarında paketlenmiş dizesinde vardırs ve ÷. Emin olun, link onları içerir.

Python 3 çeviri:
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))
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.