Hay dos formas de sustantivos, singular y plural. La conversión entre estos dos es bastante fácil.
Normalmente, lo terminas con
s
. ex.car
=>cars
.Si termina con
s
,x
,z
,ch
osh
, al final cones
. ex.bus
=>buses
.Si termina con
y
una consonante justo antes, cambiey
aies
. ex.penny
=>pennies
.Si termina con
f
ofe
, cámbielo aves
. ex.knife
=>knives
.Si termina con
o
una consonante justo antes, cámbiela aoes
. ex.potato
=>potatoes
.
Tarea
Se le dará un sustantivo singular. Tienes que convertir el sustantivo dado a plural y generarlo.
Reglas
No se le darán sustantivos irregulares, como
mouse
ymoose
.No se le darán excepciones, como
safe
(safes
; violar # 4),piano
(pianos
; violar # 5) yo
(oes
, violar # 5).No se le darán palabras que tengan dos o más formas plurales posibles, como
mosquito
(mosquitos
omosquitoes
) yroof
(roofs
orooves
).No se le darán sustantivos incontables.
y
no cuenta como vocal.
Ejemplos
car => cars
bus => buses
potato => potatoes
knife => knives
penny => pennies
exception => exceptions
wolf => wolves
eye => eyes
decoy => decoys
radio => radios
fuente
Respuestas:
Mathematica, 9 bytes
Sí, hay una función incorporada para esto.
Salida de muestra
fuente
Retina ,
575356555857 bytesGracias a MartinEnder por algunas sugerencias de golf.
Gracias a BusinessCat por jugar al golf 1 byte
Pruébalo en línea!
Explicación (obsoleta)
Cambios
{consonant}y
a{consonant}ie
Añade un nuevo
e
cuando la palabra termina con una{consonant}o
,f
,x
,z
,s
,sh
och
.Cambia un final
fe
ave
Finalmente agregue un
s
a la palabra.Ediciones
eye
como ejemplofuente
y
usarlo$1
JavaScript (ES6),
10997 bytesPruébalo en línea!
fuente
()
frentefe
?replace()
iteraciones incluyen una referencia al primer grupo coincidente (con$1
). Por eso necesito un grupo coincidente vacío aquí.(?<![aeiou])y
?Lote, 325 bytes
fuente
@echo off
al principio en lugar de en@
todas partes? Además,@set/ps=
parece un poco oxidado de un teléfono. ¿Las
variable no aceptará los valores de corte de todos modos?@echo off
ya tiene 9 bytes sin la nueva línea, por lo que no me ahorra nada. Además,@set/ps=
es necesario ingresar el valor en primer lugar.Haskell,
216207205 bytes¡Gracias a @Lynn, @ user1472751 y @Laikoni por la ayuda!
Legible
Explicación
import Data.List
para la funciónisSuffixOf
.endsWithOneOf
(€
en la versión golfizada) devuelve si uno de los elementos de la lista es un final de la cadena.consonants(c)
es solo una lista de todas las consonantes.Finalmente,
pluralize(p)
verifica las terminaciones y devuelve la pluralización adecuada.Ejemplo:
fuente
€
tiene varios bytes, lo que hace que su solución sea de 226 bytes. (Los desafíos de golf de código se puntúan explícitamente en bytes, porque contar caracteres te permite hacer trampas a veces).!
¡Sin embargo, puedes cambiarle el nombre ! Además,words"s x z ch sh"
ahorra 5 bytes. Eliminando parens(map(:"o")c))
y(map(:"y")c))
ahorra 4 más.c=['b'..'z']\\"eiou"
ya'a'
que siempre se elimina.0<1
es un byte más corto queTrue
. Además, las nuevas líneas tienen el mismo número de bytes;
pero hacen que el código de golf sea un poco mejor legible.Perl, 66 + 2 (
-pl
bandera) = 68 bytesUtilizando:
Pruébalo en Ideone.
fuente
Röda , 80 bytes
La función modifica su argumento. Uso:
main word { f word; print word }
Aquí hay una versión que usa un valor de retorno (83 bytes):Y a continuación hay una función que lee infinitos valores del flujo de entrada y empuja formas plurales al flujo de salida (
8783 bytes):Es una función anónima, ya que es más corta que crear una función con nombre.
fuente
f&s
)? Simplementef("word")
no parece mostrar nadaPHP,
103100 bytesPruébalo en línea!
La
preg_replace
función incluye una variedad de patrones y reemplazos.fuente
-R
y$argn
. Y usar una aserción cony
guardar dos:(?<![aeiou])y$
permiteie
como reemplazo: no\1
, sin comillas.([^aeiou]o|sh?|x|z|ch)$
-R
(pero no-r
) para que eso no cambie el conteo de bytes, desafortunadamente. Pero la sugerencia retrospectiva funciona muy bien. Gracias.Pitón 3,
271239199 bytes¡Gracias a @ovs por reducirlo en 72 bytes!
Pruébalo en línea!
fuente
elif
. Las listas de caracteres individuales se pueden reemplazar por cadenas. Cambiar a python ahorra 3 bytes adicionales. tioelif
Sin embargo, no combiné el s, porque ese medio sepotato
convierte enpotaties
.print(s+"s")
y elimine el caso else también cada s que esté agregando a la palabra. Tioand/*
yor/+
y realiza una función lambda sin nombre, puede obtenerla en menos de 200 bytes (print(s+"s")
es inteligente. Todo ha cambiado; prácticamente reescribiste todo el asunto jajaja. ¡Gracias! (Ni siquiera sabía que podías hacerTrue and "string"
eso)sed, 70
79bytes69
78+ 1 para bandera-E
(BSD) /-r
(GNU)Puerto directo de la respuesta de retina .
fuente
Pip ,
6361 bytesTan cerca de atrapar Retina! Pero probablemente no va a suceder. :(
Pruébalo en línea!
Explicación
Estrategia básica:
R
eplace realiza varios reemplazos uno tras otro cuando se le dan listas de patrones y reemplazos. Queremos hacer los siguientes reemplazos:(sh?|x|z|ch)$
-> agregar une
[^aeiou]y
-> cambie ely
ai
y agregue une
fe?
-> cambiarv
y agregar une
[^aeiou]o
-> agregar une
Entonces queremos abordar un
s
independientemente.Trucos:
C
operador, dado un regex, lo envuelve en un grupo de captura;C`xyz`
es un byte más corto que`(xyz)`
.s
(y tener que lidiar con el orden de precedencia deR
y.
), podemos simplementeO
pronunciar la parte principal de la palabra y luego imprimirla pors
separado.Código espaciado y comentado:
fuente
C #,
73163 bytes:Sí, otro idioma con él incorporado (aunque debe agregar una referencia a
System.Data.Entity.Design.dll
)Usar:
Salida:
fuente
Python
199187176 Bytesfuente
Rails runner, 18 bytes
Ejemplo:
fuente
Python, 296 bytes
fuente
Puerto directo de Retina:
Ruby , 111 bytes
Pruébalo en línea!
Invoque a través de
ruby -lpe
y proporcione un archivo comoinput.txt
para el primer argumento CLI.fuente
C, 321 bytes
prueba:
resultados:
fuente
wolves
nowolfves
.Java 7, 408 bytes
Golfizado:
Básicamente probando cuál es el final de la cadena y agregando / reemplazando letras dependiendo de qué caso sea. El booleano y la cadena al principio son solo para eliminar la repetición en los casos de prueba y hacer que el código sea más pequeño.
Versión legible:
fuente