Existem duas formas de substantivos, singular e plural. A conversão entre esses dois é bastante fácil.
Normalmente, você termina com
s
. ex.car
=>cars
.Se ele termina com
s
,x
,z
,ch
oush
, terminá-la comes
. ex.bus
=>buses
.Se terminar com
y
uma consoante logo antes, alterey
paraies
. ex.penny
=>pennies
.Se terminar com
f
oufe
, mude paraves
. ex.knife
=>knives
.Se terminar com
o
uma consoante logo antes, mude paraoes
. ex.potato
=>potatoes
.
Tarefa
Você receberá um substantivo singular. Você precisa converter o substantivo fornecido para o plural e produzi-lo.
Regras
Você não receberá substantivos irregulares, como
mouse
emoose
.Você não receberá exceções, como
safe
(safes
; violar # 4),piano
(pianos
; violar # 5) eo
(oes
, violar # 5).Você não receberá palavras com duas ou mais formas plurais possíveis, como
mosquito
(mosquitos
oumosquitoes
) eroof
(roofs
ourooves
).Você não receberá substantivos incontáveis.
y
não conta como vogal.
Exemplos
car => cars
bus => buses
potato => potatoes
knife => knives
penny => pennies
exception => exceptions
wolf => wolves
eye => eyes
decoy => decoys
radio => radios
fonte
Respostas:
Mathematica, 9 bytes
Sim, há um built-in para isso!
Saída de amostra
fonte
Retina ,
575356555857 bytesObrigado a MartinEnder por algumas sugestões de golfe
Graças ao BusinessCat por jogar golfe com 1 byte
Experimente online!
Explicação (desatualizada)
Alterações
{consonant}y
em{consonant}ie
Acrescenta um
e
para quando as extremidades da palavra com um{consonant}o
,f
,x
,z
,s
,sh
ouch
.Muda um final
fe
parave
Por fim, acrescente um
s
à palavra.Edições
eye
como um exemplofonte
y
uso$1
JavaScript (ES6),
10997 bytesExperimente online!
fonte
()
na frentefe
?replace()
iterações incluem uma referência ao primeiro grupo correspondente (com$1
). É por isso que preciso de um grupo de correspondência vazio aqui.(?<![aeiou])y
?Lote, 325 bytes
fonte
@echo off
no começo e não em@
todo lugar? Além disso,@set/ps=
parece um pouco enferrujado de um telefone. As
variável não aceitará os valores de fatia de qualquer maneira?@echo off
já tem 9 bytes sem a nova linha, portanto, não me salva nada. Além disso,@set/ps=
é necessário inserir o valor em primeiro lugar.Haskell,
216207205 bytesObrigado a @Lynn, @ user1472751 e @Laikoni pela ajuda!
Legível
Explicação
import Data.List
para a funçãoisSuffixOf
.endsWithOneOf
(€
na versão golfed) retorna se um dos elementos da lista é um final da string.consonants(c)
é apenas uma lista de todas as consoantes.Finalmente,
pluralize(p)
verifica as terminações e retorna a pluralização adequada.Exemplo:
fonte
€
têm vários bytes, tornando sua solução 226 bytes. (Os desafios de código de golfe são pontuados explicitamente em bytes, porque a contagem de caracteres permite trapacear algumas vezes.)!
Porém, você pode renomeá-lo ! Além disso,words"s x z ch sh"
salva 5 bytes. Remover parens ao redor(map(:"o")c))
e(map(:"y")c))
economiza mais 4.c=['b'..'z']\\"eiou"
uma vez que'a'
é sempre removido.0<1
é um byte menor queTrue
. As novas linhas também têm a mesma contagem de bytes,;
mas tornam o código golfado um pouco mais legível.Perl, 66 + 2 (
-pl
sinalizador) = 68 bytesUsando:
Experimente em Ideone.
fonte
Röda , 80 bytes
A função modifica seu argumento. Uso:
main word { f word; print word }
Aqui está uma versão que usa um valor de retorno (83 bytes):E abaixo está uma função que lê infinitamente muitos valores do fluxo de entrada e empurra formas plurais para o fluxo de saída (
8783 bytes):É uma função anônima, pois é mais curta que a criação de uma função nomeada.
fonte
f&s
)? Simplesmentef("word")
não parece exibir qualquer coisaPHP,
103100 bytesExperimente online!
A
preg_replace
função recebe uma matriz de padrões e substituições.fonte
-R
e$argn
. E usar uma asserção comy
salva dois:(?<![aeiou])y$
permiteie
como substituição: não\1
, sem aspas.([^aeiou]o|sh?|x|z|ch)$
-R
(mas não-r
), para que isso não mude a contagem de bytes, infelizmente. Mas a sugestão lookbehind funciona muito bem. Obrigado.Python 3,
271239199 bytesObrigado ao @ovs por reduzi-lo em 72 bytes!
Experimente online!
fonte
elif
. As listas de caracteres únicos podem ser substituídas por seqüências de caracteres. Mudar para python economiza 3 bytes adicionais. tioelif
s no entanto, porque isso significa quepotato
se tornapotaties
.print(s+"s")
e remova o caso else, todos os s que você está anexando à palavra. Tioand/*
eor/+
e fazer uma função lambda sem nome você pode obtê-lo menos de 200 bytes (eu troquei os casos um pouco)print(s+"s")
é inteligente. Tudo mudou; você praticamente reescreveu a coisa toda, lol. Obrigado! (Eu nem sabia que você poderia fazerTrue and "string"
assim)sed, 70
79bytes69
78+ 1 para o sinalizador-E
(BSD) /-r
(GNU)Porta direta da resposta da retina .
fonte
Pip ,
6361 bytesTão perto de pegar Retina! Mas provavelmente não vai acontecer. :(
Experimente online!
Explicação
Estratégia básica: o
R
eplace executa várias substituições, uma após a outra, quando são fornecidas listas de padrões e substituições. Queremos fazer as seguintes substituições:(sh?|x|z|ch)$
-> adicione ume
[^aeiou]y
-> mudey
parai
e adicione ume
fe?
-> mude parav
e adicione ume
[^aeiou]o
-> adicione ume
Então queremos abordar de forma
s
independente.Truques:
C
operador, dado um regex, agrupa-o em um grupo de captura;C`xyz`
é um byte menor que`(xyz)`
.s
(e ter que lidar com a ordem de precedência deR
e.
), podemos simplesmenteO
utilizar a parte principal da palavra e depois imprimir as
separadamente.Código espaçado e comentado:
fonte
C #,
73163 bytes:Sim, outro idioma com ele embutido (embora você precise adicionar uma referência a
System.Data.Entity.Design.dll
)Usar:
Saída:
fonte
Python
199187176 Bytesfonte
Corredor de trilhos, 18 bytes
Exemplo:
fonte
Python, 296 bytes
fonte
Porto direto da Retina:
Ruby , 111 bytes
Experimente online!
Chame
ruby -lpe
e forneça um arquivo comoinput.txt
no primeiro argumento da CLI.fonte
C, 321 bytes
teste:
resultados:
fonte
wolves
nãowolfves
.Java 7, 408 bytes
Golfe:
Testando basicamente qual é o final da String e adicionando / substituindo letras, dependendo do caso. O booleano e String no início são apenas para remover a repetição nos casos de teste e diminuir o código.
Versão legível:
fonte