Istnieją dwie formy rzeczowników: pojedyncza i mnoga. Konwersja między tymi dwoma jest dość łatwa.
Zwykle kończysz to
s
. dawny.car
=>cars
.Jeśli kończy się
s
,x
,z
,ch
lubsh
, zakończ goes
. dawny.bus
=>buses
.Jeśli kończy
y
się spółgłoską tuż przed nim, zmieńy
sięies
. dawny.penny
=>pennies
.Jeśli kończy się na
f
lubfe
, zmień naves
. dawny.knife
=>knives
.Jeśli kończy
o
się tuż przed nim spółgłoską, zmień ją naoes
. dawny.potato
=>potatoes
.
Zadanie
Otrzymasz rzeczownik w liczbie pojedynczej. Musisz przekonwertować rzeczownik na liczbę mnogą i wyprowadzić go.
Zasady
Nie otrzymasz rzeczowników nieregularnych, takich jak
mouse
imoose
.Nie otrzymasz wyjątków, takich jak
safe
(safes
; naruszenie # 4),piano
(pianos
; naruszenie # 5) io
(oes
, naruszenie # 5).Nie otrzymasz słów, które mają dwie lub więcej możliwych form liczby mnogiej, takich jak
mosquito
(mosquitos
lubmosquitoes
) iroof
(roofs
lubrooves
).Nie otrzymasz rzeczowników niepoliczalnych.
y
nie liczy się jako samogłoska.
Przykłady
car => cars
bus => buses
potato => potatoes
knife => knives
penny => pennies
exception => exceptions
wolf => wolves
eye => eyes
decoy => decoys
radio => radios
źródło
Odpowiedzi:
Mathematica, 9 bajtów
Tak, jest do tego wbudowany!
Próbka wyjściowa
źródło
Retina ,
575356555857 bajtówDzięki MartinEnder za sugestie dotyczące gry w golfa
Dzięki BusinessCat za grę w golfa 1 bajt
Wypróbuj online!
Wyjaśnienie (nieaktualne)
Zmiany
{consonant}y
na{consonant}ie
Dołącza
e
do tego, kiedy kończy się słowo z{consonant}o
,f
,x
,z
,s
,sh
lubch
.Zmienia zakończenie
fe
nave
Na koniec dodaj
s
do słowa.Edycje
eye
jako przykładźródło
y
użyciem$1
JavaScript (ES6),
10997 bajtówWypróbuj online!
źródło
()
przed sobąfe
?replace()
iteracje zawierają odniesienie do pierwszej pasującej grupy (z$1
). Dlatego potrzebuję tutaj pustej pasującej grupy.(?<![aeiou])y
?Partia, 325 bajtów
źródło
@echo off
na początku, a nie@
wszędzie? Poza tym@set/ps=
wydaje się trochę zardzewiały z telefonu. Czys
zmienna i tak nie zaakceptuje wartości krojenia?@echo off
ma już 9 bajtów bez nowej linii, więc nic mnie nie oszczędza. Ponadto@set/ps=
konieczne jest, aby wprowadzić wartość w pierwszej kolejności.Haskell,
216207205 bajtówDzięki @Lynn, @ user1472751 i @Laikoni za pomoc!
Czytelny
Wyjaśnienie
import Data.List
dla funkcjiisSuffixOf
.endsWithOneOf
(€
w wersji golfowej) zwraca informację, czy jeden z elementów listy jest końcem ciągu.consonants(c)
to tylko lista wszystkich spółgłosek.Na koniec
pluralize(p)
sprawdza zakończenia i zwraca odpowiednią liczbę mnogą.Przykład:
źródło
€
ma wiele bajtów, co czyni rozwiązanie 226 bajtami. (Wyzwania związane z golfem kodowym są jednoznacznie punktowane w bajtach, ponieważ zliczanie znaków pozwala czasem oszukiwać.) Możesz jednak zmienić jego nazwę!
! Ponadtowords"s x z ch sh"
oszczędza 5 bajtów. Usuwając parens(map(:"o")c))
i(map(:"y")c))
oszczędzasz 4 kolejne.c=['b'..'z']\\"eiou"
ponieważ'a'
jest zawsze usuwany.0<1
jest o jeden bajt krótszy niżTrue
. Również nowe wiersze mają tę samą liczbę bajtów,;
ale sprawiają, że kod w golfa jest nieco lepiej czytelny.Perl, 66 + 2 (
-pl
flaga) = 68 bajtówZa pomocą:
Wypróbuj na Ideone.
źródło
Röda , 80 bajtów
Funkcja modyfikuje swój argument. Użycie:
main word { f word; print word }
Oto wersja, która używa wartości zwracanej (83 bajty):Poniżej znajduje się funkcja, która odczytuje nieskończenie wiele wartości ze strumienia wejściowego i wypycha liczbę mnogą do strumienia wyjściowego (
8783 bajtów):Jest to funkcja anonimowa, ponieważ jest krótsza niż tworzenie funkcji nazwanej.
źródło
f&s
)? Po prostuf("word")
nic nie wyświetlaPHP,
103100 bajtówWypróbuj online!
preg_replace
Funkcja wykonuje się w szeregu wzorów i wymiany.źródło
-R
i$argn
. A użycie twierdzenia zy
zapisem dwa:(?<![aeiou])y$
pozwalaie
na zastąpienie: nie\1
, bez cudzysłowów.([^aeiou]o|sh?|x|z|ch)$
-R
(ale nie-r
), więc nie zmienia to liczby bajtów, niestety. Ale sugestia wyglądu działa świetnie. Dzięki.Python 3,
271239199 bajtówDzięki @ovs za zmniejszenie go o 72 bajty!
Wypróbuj online!
źródło
elif
. Listy pojedynczych znaków można zastąpić ciągami. Przejście na Python oszczędza dodatkowe 3 bajty. tioelif
jednak s, ponieważ to oznacza, żepotato
staje siępotaties
.print(s+"s")
i usuń także literę else oraz każdą dołączaną do słowa. Tioand/*
ior/+
wykonasz nienazwaną funkcję lambda, możesz uzyskać ją poniżej 200 bajtów (nieco zamieniłem skrzynki)print(s+"s")
to sprytne. Wszystko zmienione; napisałeś prawie wszystko, lol. Dzięki! (Nawet nie wiedziałem, że możesz to zrobićTrue and "string"
)sed, 70
79bajtów69
78+ 1 dla flagi-E
(BSD) /-r
(GNU)Bezpośredni port odpowiedzi siatkówki .
źródło
Pip ,
6361 bajtówTak blisko złapania siatkówki! Ale prawdopodobnie tak się nie stanie. :(
Wypróbuj online!
Wyjaśnienie
Podstawowa strategia:
R
eplace wykonuje kilka zamian jedna po drugiej, gdy podane są listy wzorców i zamienników. Chcemy dokonać następujących zamienników:(sh?|x|z|ch)$
-> dodaje
[^aeiou]y
-> zmienićy
sięi
i dodaje
fe?
-> zmieńv
i dodaje
[^aeiou]o
-> dodaje
Następnie chcemy zająć się
s
niezależnie.Wydziwianie:
C
Operatora, ponieważ wyrażenie regularne, zawija się w grupie chwytu;C`xyz`
jest o jeden bajt krótszy niż`(xyz)`
.s
(i zajmować się kolejnością pierwszeństwaR
i.
), możemy po prostuO
wypowiedzieć główną część słowa, a następnie wydrukowaćs
osobno.Kod z odstępami i komentarzami:
źródło
C #,
73163 bajty:Tak, inny język z wbudowanym (choć musisz dodać odniesienie
System.Data.Entity.Design.dll
)Używać:
Wydajność:
źródło
Python
199187176 bajtówźródło
Runner Rails, 18 bajtów
Przykład:
źródło
Python, 296 bajtów
źródło
Bezpośredni port Retina:
Rubin , 111 bajtów
Wypróbuj online!
Wywołaj przez
ruby -lpe
i podaj plik jakinput.txt
dla pierwszego argumentu CLI.źródło
C, 321 bajtów
test:
wyniki:
źródło
wolves
niewolfves
.Java 7, 408 bajtów
Gra w golfa:
Zasadniczo testowanie końca łańcucha i dodawanie / zastępowanie liter w zależności od przypadku. Wartości boolean i String na początku służą do usuwania powtórzeń w przypadkach testowych i zmniejszania kodu.
Wersja do odczytu:
źródło