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
' y'
i' '
Odpowiedzi:
Stax , 26 bajtów
Uruchom i debuguj
Uruchom ten
źródło
V , 27
2830bajtówWypróbuj online!
<Esc>
reprezentuje0x1b
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
V
wybiera linię iu
opuszcza 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ępujee¿y$
skompresowaną formęe\?y$
(opcjonalnąe
iy
na końcu linii), nic (dzieje się w drugiej linii)H
idzie do pierwszej liniió
zastępujey$
(y
na końcu wiersza) niczym w pierwszym wierszuÁ
dołącza ay
na końcu pierwszego wierszaJ
i łączy ostatnią linię z pierwszą ze spacją na środku, a kursor jest przenoszony na to miejscea
dołączaMc
(<Esc>
wraca do trybu normalnego)A
na końcu dołączaface
na końcu wierszaźródło
Python, 144 bajty
Wypróbuj online tutaj
źródło
f("Face")
nie jest zgodny z obecnymi przypadkami testowymi ( TIO ).Excel,
204144137165 bajtówOd wewnątrz na zewnątrz:
Stara odpowiedź, tworząc wszystkie bity osobno, a następnie łącząc (176 bajtów). Nie obsługuje poprawnie rozdzielanych spacjami przypadków.
źródło
PROPER(A1)
jest nieważny (patrzDJ Grand Master Flash
przypadek wejściowy), najlepszym zamiennikiem, jaki mogłem znaleźć podczas pracy nad moim rozwiązaniem VBA byłoLEFT(UPPER(A1))&MID(LOWER(A1),2,LEN(A1))
- proszę dać mi znać, jeśli skończysz grać w golfa.Perl 6 ,
423735 bajtówWypróbuj online!
źródło
C # (.NET Core) ,
122108139175180179154 bajtówWielkie dzięki, Lee!
Wypróbuj online!
C # (.NET Core, z LINQ), 152 bajty
Wypróbuj online!
źródło
SOGL V0.12 , 38 bajtów
Wypróbuj tutaj!
źródło
Rubin ,
6149 bajtówWypróbuj online!
Zaoszczędź 12 słodkich bajtów dzięki @MartinEnder:
źródło
=~
i zbudowania całego łańcucha zamiast użyciasub
. Interpolacji łańcuchów można używać bez nawiasów, jeśli zmienna jest zmienną globalną, instancją lub klasą.-p
flagi i używającsub
: tio.run/…Python 3 , 80 bajtów
Dawno zapalony czytelnik, w końcu moje pierwsze zgłoszenie!
Wypróbuj online
źródło
Siatkówka , 29 bajtów
Wypróbuj online!
źródło
Python 2 ,
8892 bajtówWypróbuj online!
źródło
Java 8,
121112107106 bajtów-1 bajt dzięki @ OliverGrégoire .
Wyjaśnienie:
Wypróbuj online.
źródło
~32
->95
za 1 bajt zapisanyJavaScript,
1039694 bajtyDość naiwne pierwsze podanie.
Wypróbuj online
źródło
${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
a drugi zaFace
.vim,
3534 bajtów<ESC>
jest0x1b
Bez golfa
Wypróbuj online!
Zaoszczędzono 1 bajt dzięki DJMcMayhem
źródło
Y
zamiastyy
Perl 5
-p
,4739 bajtówZapisałem 6 bajtów z sugestiami @ OlegV.Volkov, 1 z @ mwellnhof i 1 samodzielnie
Wypróbuj online!
źródło
ucfirst
:$_=lc^$";
$_=s/y$//r."y Mc".s/e?y$//r.face
jest o jeden bajt krótszy./y$|$/
->/y?$/
C ++ 14 (g ++),
181171148147134 bajtówZauważ, że clang tego nie skompiluje.
Podziękowania dla Kevina Cruijssena i Oliviera Grégoire za tę
&95
sztuczkę.Dzięki Chrisowi za grę w golfa 11 bajtów.
Wypróbuj online tutaj .
Wersja bez golfa:
źródło
s[0]=s[0]&~32;
nas[0]&=~32;
;s[i++]=s[i]|32;
dos[i++]|=32
; aint i=1,n=s.length()-1,b;
więc trzeba tylko 1int
.#include<string>
n
i po prostu używając wartościi
po pętli while. Wypróbuj online!V ,
383632 bajtów-5 bajtów dzięki kwakowi @Cows
<esc>
to dosłowny znak ucieczki i[^
jest zakodowany jako\x84
Wypróbuj online!
źródło
gu$
może zostaćVu
[^
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
05AB1E , 30 bajtów
Wypróbuj online! lub jako pakiet testowy
źródło
Python 3 ,
117114 bajtów-3 bajty dzięki Dead Possum
Wypróbuj online!
źródło
[s,s[:-1],'',s[:-2]
można zmienić,0
aby zapisać 1 bajt.'y'*1
*1
nie jest potrzebne. Jeszcze 2 bajtyreturn
goprint
jest o 1 bajt krótsze.JavaScript (Node.js) , 87 bajtów
Wypróbuj online!
źródło
Buffer
, będę musiał spróbować zapamiętać to na przyszłe wyzwania. Sprowadziłem dla Ciebie do 87 bajtów .K4 ,
746968 bajtówRozwiązanie:
Przykłady:
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ć ...Premia:
67 bajtowy port w K (oK) :
Wypróbuj online!
źródło
Rubinowy , 69 bajtów
Wyjaśnienie:
Wypróbuj online!
źródło
s.capitalize
zastępuje poprzednies
? Jeśli nie, to czy/e?y$/
uchwyt przypadek testowy kończy sięY
,EY
czyEy
słusznie?s.capitalize
vss.capitalize!
(różne funkcje).s.capitalize!
usuwa starą wersję.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 mnieJstx , 27 bajtów
Wyjaśnienie
Wypróbuj online!
źródło
Czerwony ,
143142 bajtówWypróbuj online!
Nie golfowany:
źródło
PHP: 132
Wyjaśnienie:
źródło
Galaretka ,
77757473 bajtówWypróbuj online!
Wszelkie sugestie dotyczące gry w golfa są mile widziane (i potrzebne)!
źródło
Pyth
3634 bajtyWypróbuj online!
Wyjaśnienie:
źródło
rz3
na,rz4
aby działało poprawnie dla ostatniego przypadku testowego.Eliksir ,
112110107106 bajtówteraz tak krótki jak java
Wypróbuj online!
Wyjaśnienie:
Pobiera
x
pierwszy znak wielkimi literami, a wszystkie pozostałe małe litery.Oceń kod i wstaw go do ciągu.
Łączy x z,
y
jeśli się nie kończyy
(tzn. Nie pasuje do wyrażenia regularnegoy$
).Usuwa końcowe
ey
i końcowey
.źródło
PHP , 45
46bajtówWypróbuj online!
źródło
boAty
. (Niewłaściwe czapki, „y” nie został usunięty)Pyth,
6059 bajtów SBCSZestaw testowy
Nie tutaj wyświetlane, ale trzy bajty
Tłumaczenie Python 3:\x9c
,\x82
i\x8c
są w zapakowanym łańcucha pomiędzys
i÷
. Zapewniamy, że link je zawiera.źródło