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.