Il existe deux formes de noms, singulier et pluriel. La conversion entre ces deux est assez facile.
Normalement, vous y mettez fin
s
. ex.car
=>cars
.Si elle se termine par
s
,x
,z
,ch
oush
, fin aveces
. ex.bus
=>buses
.S'il se termine par
y
une consonne juste avant, changez ley
paries
. ex.penny
=>pennies
.S'il se termine par
f
oufe
, remplacez-le parves
. ex.knife
=>knives
.S'il se termine par
o
une consonne juste avant, changez-la enoes
. ex.potato
=>potatoes
.
Tâche
Vous recevrez un nom singulier. Vous devez convertir le nom donné au pluriel et le sortir.
Règles
Vous ne recevrez pas de noms irréguliers, comme
mouse
etmoose
.Vous ne recevrez pas d'exceptions, telles que
safe
(safes
; violation # 4),piano
(pianos
; violation # 5) eto
(oes
, violation # 5).Vous ne recevrez pas de mots qui ont deux ou plusieurs formes plurielles possibles, telles que
mosquito
(mosquitos
oumosquitoes
) etroof
(roofs
ourooves
).On ne vous donnera pas de noms innombrables.
y
ne compte pas comme une voyelle.
Exemples
car => cars
bus => buses
potato => potatoes
knife => knives
penny => pennies
exception => exceptions
wolf => wolves
eye => eyes
decoy => decoys
radio => radios
la source
Réponses:
Mathematica, 9 octets
Oui, il y a une fonction intégrée pour cela!
Exemple de sortie
la source
Rétine ,
575356555857 octetsMerci à MartinEnder pour quelques suggestions de golf
Merci à BusinessCat pour avoir joué au golf 1 octet
Essayez-le en ligne!
Explication (obsolète)
Modifications apportées
{consonant}y
à{consonant}ie
Ajoute un
e
quand les extrémités de mots avec un{consonant}o
,f
,x
,z
,s
,sh
ouch
.Remplace une fin
fe
parve
Enfin, ajoutez un
s
au mot.Modifications
eye
comme exemplela source
y
utiliser$1
JavaScript (ES6),
10997 octetsEssayez-le en ligne!
la source
()
devantfe
?replace()
itérations incluent une référence au premier groupe correspondant (avec$1
). C'est pourquoi j'ai besoin d'un groupe correspondant vide ici.(?<![aeiou])y
?Lot, 325 octets
la source
@echo off
au début plutôt que@
partout? En outre,@set/ps=
semble un peu rouillé par un téléphone. Las
variable n'acceptera- t-elle pas les valeurs de découpage de toute façon?@echo off
est déjà 9 octets sans la nouvelle ligne, donc cela ne me sauve rien. En outre,@set/ps=
est nécessaire pour saisir la valeur en premier lieu.Haskell,
216207205 octetsMerci à @Lynn, @ user1472751 et @Laikoni pour l'aide!
Lisible
Explication
import Data.List
pour la fonctionisSuffixOf
.endsWithOneOf
(€
dans la version golfée) renvoie si l'un des éléments de la liste est une fin de la chaîne.consonants(c)
est juste une liste de toutes les consonnes.Enfin,
pluralize(p)
vérifie les terminaisons et renvoie la pluralisation appropriée.Exemple:
la source
€
plusieurs octets, ce qui fait de votre solution 226 octets. (Les défis de golf de code sont explicitement marqués en octets, car le comptage de caractères vous permet parfois de tricher.) Vous pouvez simplement le renommer!
, cependant! Enregistre égalementwords"s x z ch sh"
5 octets. Suppression des parens autour(map(:"o")c))
et(map(:"y")c))
économise 4 de plus.c=['b'..'z']\\"eiou"
car'a'
est toujours supprimé.0<1
est un octet plus court queTrue
. Les sauts de ligne ont également le même nombre d'octets,;
mais rendent le code joué un peu plus lisible.Perl, 66 + 2 (
-pl
indicateur) = 68 octetsEn utilisant:
Essayez-le sur Ideone.
la source
Röda , 80 octets
La fonction modifie son argument. Utilisation:
main word { f word; print word }
voici une version qui utilise une valeur de retour (83 octets):Et ci-dessous est une fonction qui lit une infinité de valeurs du flux d'entrée et pousse plusieurs formes vers le flux de sortie (
8783 octets):C'est une fonction anonyme, car elle est plus courte que la création d'une fonction nommée.
la source
f&s
)?f("word")
Ne semble tout simplement pas afficher quoi que ce soitPHP,
103100 octetsEssayez-le en ligne!
La
preg_replace
fonction prend dans un tableau de modèles et de remplacements.la source
-R
et$argn
. Et l'utilisation d'une assertion avecy
sauvegarde deux:(?<![aeiou])y$
permetie
comme remplacement: non\1
, pas de guillemets.([^aeiou]o|sh?|x|z|ch)$
-R
(mais pas-r
), ce qui ne modifie malheureusement pas le nombre d'octets. Mais la suggestion de lookbehind fonctionne très bien. Merci.Python 3,
271239199 octetsMerci à @ovs de l'avoir réduit de 72 octets!
Essayez-le en ligne!
la source
elif
. Les listes de caractères uniques peuvent être remplacées par des chaînes. Le passage à python permet d'économiser 3 octets supplémentaires. tioelif
s, car cela signifiepotato
devientpotaties
.print(s+"s")
et supprimez également le cas else tous les s que vous ajoutez au mot. Tioand/*
etor/+
et créez une fonction lambda sans nom, vous pouvez l'obtenir sous 200 octets (j'ai échangé un peu les cas)print(s+"s")
intelligent. Tout a changé; vous avez à peu près réécrit le tout lol. Merci! (Je ne savais même pas que tu pouvais faireTrue and "string"
comme ça)sed, 70
79octets69
78+ 1 pour le drapeau-E
(BSD) /-r
(GNU)Port direct de la réponse rétinienne .
la source
Pip ,
6361 octetsSi près d'attraper la rétine! Mais cela n'arrivera probablement pas. :(
Essayez-le en ligne!
Explication
Stratégie de base:
R
eplace effectue plusieurs remplacements les uns après les autres lorsque des listes de modèles et de remplacements sont fournies. Nous voulons effectuer les remplacements suivants:(sh?|x|z|ch)$
-> ajouter une
[^aeiou]y
-> changez ley
eni
et ajoutez une
fe?
-> modifierv
et ajouter une
[^aeiou]o
-> ajouter une
Ensuite, nous voulons aborder un
s
peu importe.Des trucs:
C
opérateur, étant donné une expression régulière, l'enveloppe dans un groupe de capture;C`xyz`
est un octet plus court que`(xyz)`
.s
(et d'avoir à traiter l'ordre de priorité deR
et.
), nous pouvons simplementO
émettre la partie principale du mot puis l'imprimers
séparément.Code espacé et commenté:
la source
C #,
73163 octets:Oui, une autre langue avec elle intégrée (bien que vous deviez ajouter une référence
System.Data.Entity.Design.dll
)Utiliser:
Sortie:
la source
Python
199187176 176 octetsla source
Rails runner, 18 octets
Exemple:
la source
Python, 296 octets
la source
Port direct de Retina:
Rubis , 111 octets
Essayez-le en ligne!
Appelez via
ruby -lpe
et fournissez un fichier commeinput.txt
pour le premier argument CLI.la source
C, 321 octets
tester:
résultats:
la source
wolves
pas être le caswolfves
.Java 7, 408 octets
Golfé:
Fondamentalement, tester la fin de la chaîne et ajouter / remplacer des lettres selon le cas. Le booléen et la chaîne au début sont juste pour supprimer la répétition dans les cas de test et rendre le code plus petit.
Version lisible:
la source