Facey McFaceface


47

Czy ktoś pamięta Boaty ?

Możesz całkowicie wypowiedzieć stare słowo, prawda?

  • Napisz funkcję, aby zamienić ciąg znaków w Somethingy McSomethingface.
  • Powinien przyjmować jeden ciąg jako dane wejściowe. Zignoruj ​​przypadek wejścia.
  • Jeśli słowo kończy się na „y”, twoja funkcja nie powinna dodawać dodatkowego „y” do pierwszej instancji, ale powinna usunąć ją w drugiej instancji.
  • Jeśli słowo kończy się na „ey”, nie powinno mieć dodatkowego „y” dodanego w pierwszej instancji, ale powinno usunąć oba w drugiej instancji.
  • Dane wyjściowe powinny zawierać tylko wielkie litery pierwszego znaku, „M” „Mc” i pierwszy znak po „Mc”.
  • musi działać tylko z ciągami 3 lub więcej znaków.

Przykłady:

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

Co ze spacjami w ciągu, czy pozostawiamy je nietknięte? Przykłady: ' y'i' '
dotknij mojego ciała

2
Zamierzam zaimplementować sugestię z @Arnauld i sprawić, by zawierała minimum trzy znaki. Traktuj białe znaki jak kolejną literę.
AJFaraday


Czy możemy założyć, że dane wejściowe będą zawierać tylko wielkie i małe litery?
Kevin Cruijssen

@KevinCruijssen Nie umieściłem żadnych liter innych niż przypadki testowe, więc nie są one tym zainteresowane.
AJFaraday

Odpowiedzi:


7

Stax , 26 bajtów

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

Uruchom i debuguj

^           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

Uruchom ten


15

V , 27 28 30 bajtów

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

Wypróbuj online!

<Esc> reprezentuje 0x1b

  • Grał w golfa dwa bajty po tym, jak dowiedziałem się, że nie musieliśmy obsługiwać danych wejściowych zawierających mniej niż 3 znaki.

  • 1 bajt zapisany dzięki @DJMcMayhem, pracując na drugiej linii przed pierwszą, usuwając w ten sposób G

Dane wejściowe znajdują się w buforze. Program zaczyna się od konwersji wszystkiego na małe litery

Vwybiera linię i uopuszcza ją małymi literami

~ przełącza wielkość liter pierwszego znaku (konwertując go na wielkie litery)

i Ùpowiela tę linię powyżej, pozostawiając kursor w dolnej linii

ói zastępuje e¿y$skompresowaną formę e\?y$(opcjonalną ei yna końcu linii), nic (dzieje się w drugiej linii)

H idzie do pierwszej linii

ózastępuje y$( yna końcu wiersza) niczym w pierwszym wierszu

Ádołącza a yna końcu pierwszego wiersza

J i łączy ostatnią linię z pierwszą ze spacją na środku, a kursor jest przenoszony na to miejsce

adołącza Mc( <Esc>wraca do trybu normalnego)

Ana końcu dołącza facena końcu wiersza



13

Python, 144 bajty

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

Wypróbuj online tutaj


2
moja pierwsza próba golfa kodem ...
dotknij mojego ciała

3
Witamy w PPCG! czy mogę zasugerować dodanie linku do wypróbowania online! do weryfikacji poprawności?
Giuseppe

1
f("Face")nie jest zgodny z obecnymi przypadkami testowymi ( TIO ).
Jonathan Frech

Edytowany post pod kątem poprawności, dodał także Try It Online! link
dotknij mojego ciała


12

Excel, 204 144 137 165 bajtów

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

Od wewnątrz na zewnątrz:

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

Stara odpowiedź, tworząc wszystkie bity osobno, a następnie łącząc (176 bajtów). Nie obsługuje poprawnie rozdzielanych spacjami przypadków.

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

Niestety, z powodu wymogu obsługi spraw rozdzielonych spacjami, PROPER(A1)jest nieważny (patrz DJ Grand Master Flashprzypadek wejściowy), najlepszym zamiennikiem, jaki mogłem znaleźć podczas pracy nad moim rozwiązaniem VBA było LEFT(UPPER(A1))&MID(LOWER(A1),2,LEN(A1))- proszę dać mi znać, jeśli skończysz grać w golfa.
Taylor Scott

1
Dziękuję @TaylorScott. Znaleziono „REPLACE (LOWER (A1), 1,1, UPPER (LEFT (A1)))”, który jest o 2 bajty krótszy.
Wernisch


9

C # (.NET Core) , 122 108 139 175 180 179 154 bajtów

Wielkie dzięki, 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("$","");

Wypróbuj online!

C # (.NET Core, z LINQ), 152 bajty

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

Wypróbuj online!


3
Witamy na stronie! :)
DJMcMayhem


7

Rubin , 61 49 bajtów

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

Wypróbuj online!

Zaoszczędź 12 słodkich bajtów dzięki @MartinEnder:


1
Użycie wyrażenia regularnego z mojej odpowiedzi Retina i nieco większe wykorzystanie interpolacji ciągów sprowadza to do 49: tio.run/##DcxBCsIwEEDRqwxJBF3Y4lpSN0U3igcQwTQmGFptMVNkTOLVY3bvb/…
Martin Ender

@MartinEnder Wow, to całkiem spora różnica. Nie sądzę, że widziałem interpolację łańcuchów bez nawiasów. Wezmę to, jeśli nie chcesz użyć go do własnej odpowiedzi Ruby.
iamnotmaynard

Nie, w porządku, nie wymyśliłbym użycia =~i zbudowania całego łańcucha zamiast użycia sub. Interpolacji łańcuchów można używać bez nawiasów, jeśli zmienna jest zmienną globalną, instancją lub klasą.
Martin Ender

Możesz to zmniejszyć do 44 + 1 bajtów, używając -pflagi i używając sub: tio.run/…
Jordan

7

Python 3 , 80 bajtów

Dawno zapalony czytelnik, w końcu moje pierwsze zgłoszenie!

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

Wypróbuj online


1
Witamy w PPCG i bardzo fajny pierwszy post!
Zacharý



5

Java 8, 121 112 107 106 bajtów

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

-1 bajt dzięki @ OliverGrégoire .

Wyjaśnienie:

Wypróbuj online.

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"

Co jeśli pierwszy znak nie jest alfabetyczny? A może dodamy do tego regułę…
streetster

1
@streetster Właśnie zapytałem OP, i wydaje się, że dane wejściowe będą zawierać tylko wielkie i / lub małe litery.
Kevin Cruijssen

1
~32-> 95za 1 bajt zapisany
Olivier Grégoire

@ OlivierGrégoire Naprawdę muszę nauczyć się nieco więcej o operacjach bitowych ..>.>
Kevin Cruijssen

4

JavaScript, 103 96 94 bajty

Dość naiwne pierwsze podanie.

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

Wypróbuj online


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

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

Dzięki, @BenjaminGruenbaum, ale pierwszy kończy się niepowodzeniem, Donkeya drugi za Face.
Shaggy


@Shaggy udało mi się zmniejszyć funkcję g o kilka znaków :). możecie zajrzeć w moje rozwiązanie
DanielIndie

3

vim, 35 34 bajtów

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

<ESC> jest 0x1b

Bez golfa

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

Wypróbuj online!

Zaoszczędzono 1 bajt dzięki DJMcMayhem


1
Możesz zrobić Yzamiastyy
DJMcMayhem


3

C ++ 14 (g ++), 181 171 148 147 134 bajtów

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

Zauważ, że clang tego nie skompiluje.

Podziękowania dla Kevina Cruijssena i Oliviera Grégoire za tę &95sztuczkę.

Dzięki Chrisowi za grę w golfa 11 bajtów.

Wypróbuj online tutaj .

Wersja bez golfa:

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

Nie znam tak dobrze C ++, ale możesz zagrać w golfa 9 bajtów: Wypróbuj online 172 bajty. Podsumowanie zmian: s[0]=s[0]&~32;na s[0]&=~32;; s[i++]=s[i]|32;do s[i++]|=32; a int i=1,n=s.length()-1,b;więc trzeba tylko 1 int.
Kevin Cruijssen

I jeszcze jeden bajt, usuwając spację w#include<string>
Kevin Cruijssen

@KevinCruijssen dzięki za złapanie tego! Edytowałem.
OOBalance

Możesz zapisać 11 bajtów, nie definiując ni po prostu używając wartości ipo pętli while. Wypróbuj online!
Chris

@Chris Thanks! Udało mi się ogolić jeszcze 2 bajty.
OOBalance

2

V , 38 36 32 bajtów

-5 bajtów dzięki kwakowi @Cows

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

<esc>to dosłowny znak ucieczki i [^jest zakodowany jako\x84

Wypróbuj online!


gu$może zostaćVu
Kritixi Lithos

2
Ponieważ [^jest to skrót wyrażenia regularnego (patrz tutaj ), możesz użyć 0x84 zamiast [^zapisać bajt. Podobnie \?można uprościć, <M-?>aby zapisać kolejny bajt. I $a=>A
Kritixi Lithos


2

Python 3 , 117 114 bajtów

-3 bajty dzięki Dead Possum

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'

Wypróbuj online!


Trzeci element listy [s,s[:-1],'',s[:-2]można zmienić, 0aby zapisać 1 bajt.
Dead Possum

W 'y'*1 *1nie jest potrzebne. Jeszcze 2 bajty
Dead Possum

Przejście z Python 3 na Python 2 i zastąpienie returngo printjest o 1 bajt krótsze.
Kevin Cruijssen

2

JavaScript (Node.js) , 87 bajtów

  • dzięki @Shaggy za 5 redukcji 5 bajtów
s=>(g=r=>Buffer(s.replace(r,"")).map((x,i)=>i?x|32:x&~32))(/y$/)+`y Mc${g(/e?y$/)}face`

Wypróbuj online!


2
Nie musisz nazywać funkcji nierekurencyjnych.
Dennis

1
Ładnie wykonane. Nigdy nie myślę o użyciu Buffer, będę musiał spróbować zapamiętać to na przyszłe wyzwania. Sprowadziłem dla Ciebie do 87 bajtów .
Shaggy

2

K4 , 74 69 68 bajtów

Rozwiązanie:

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

Przykłady:

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"

Wyjaśnienie:

Sprawdź, czy ostatnie znaki są równe "ey", przekonwertuj wynik na base-2, abyśmy mogli zignorować słowa, które się kończą "e?". Indeksuj do listy liczb znaków do przycięcia.

Udało mi się zgolić 5 bajtów mojego kodu, aby ustalić, czy dwa ostatnie znaki, "ey"ale starają się go poprawić ...

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

Premia:

67 bajtowy port w K (oK) :

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

Wypróbuj online!


1
Jaki jest sens K4, jeśli Twój port ok pokonuje go?
Zacharý

Nie sądziłem, że tak się stanie, a port nie działa, jeśli pierwszy znak nie jest alfabetyczny, ponieważ ślepo odejmuję 32 od wartości ASCII - nie ma wbudowanego „górnego”.
streetster

2

Rubinowy , 69 bajtów

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

Wyjaśnienie:

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

Wypróbuj online!


Czy możesz dodać link do TIO? Nie znam Ruby, ale czy s.capitalizezastępuje poprzednie s? Jeśli nie, to czy /e?y$/uchwyt przypadek testowy kończy się Y, EYczy Eysłusznie?
Kevin Cruijssen

1
@KevinCruijssen s.capitalizevs s.capitalize!(różne funkcje). s.capitalize!usuwa starą wersję.
dkudriavtsev

@KevinCruijssen Dodałem link do TIO.
dkudriavtsev

@KevinCruijssen Dodano również wyjaśnienie
dkudriavtsev

Ach, ok, dzięki za wyjaśnienie i informacje o s.capitalize!. Nigdy nie programowane w Rubim, ale dodanie znaku objaśnienia w celu zastąpienia poprzedniej wartości jest całkiem fajne. +1 ode mnie
Kevin Cruijssen

2

Jstx , 27 bajtów

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

Wyjaśnienie

      # 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

Wypróbuj online!


Nie widziałem tego języka wcześniej. To wygląda interesująco. Czy jest dokumentacja?
rekurencyjny


Wow, to naprawdę imponujące. Zwłaszcza na tak krótki czas programowania. Jestem podekscytowany, aby zobaczyć, gdzie to idzie.
rekurencyjne

2

Czerwony , 143 142 bajtów

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

Wypróbuj online!

Nie golfowany:

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';}

Wyjaśnienie:

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

Galaretka , 77 75 74 73 bajtów

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

Wypróbuj online!

Wszelkie sugestie dotyczące gry w golfa są mile widziane (i potrzebne)!


2

Pyth 36 34 bajty

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

Wypróbuj online!

Wyjaśnienie:

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

Niestety to nie działa, ponieważ ostatni przypadek testowy kończy się niepowodzeniem.
Zacharý

Przełącz rz3na, rz4aby działało poprawnie dla ostatniego przypadku testowego.
hakr14

Ojej, naprawię to: P
RK.

2

Eliksir , 112 110 107 106 bajtów

teraz tak krótki jak java

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

Wypróbuj online!

Wyjaśnienie:

x=String.capitalize x

Pobiera xpierwszy znak wielkimi literami, a wszystkie pozostałe małe litery.

#{ code }

Oceń kod i wstaw go do ciągu.

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

Łączy x z, yjeśli się nie kończy y(tzn. Nie pasuje do wyrażenia regularnego y$).

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

Usuwa końcowe eyi końcowe y.



1

Pyth, 60 59 bajtów SBCS

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

Zestaw testowy

Nie tutaj wyświetlane, ale trzy bajty \x9c, \x82i \x8csą w zapakowanym łańcucha pomiędzy si ÷. Zapewniamy, że link je zawiera.

Tłumaczenie Python 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))
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.