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,chosh, al final cones. ex.bus=>buses.Si termina con
yuna consonante justo antes, cambieyaies. ex.penny=>pennies.Si termina con
fofe, cámbielo aves. ex.knife=>knives.Si termina con
ouna 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
mouseymoose.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(mosquitosomosquitoes) yroof(roofsorooves).No se le darán sustantivos incontables.
yno 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}ya{consonant}ieAñade un nuevo
ecuando la palabra termina con una{consonant}o,f,x,z,s,shoch.Cambia un final
feaveFinalmente agregue un
sa la palabra.Ediciones
eyecomo ejemplofuente
yusarlo$1JavaScript (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 offal principio en lugar de en@todas partes? Además,@set/ps=parece un poco oxidado de un teléfono. ¿Lasvariable no aceptará los valores de corte de todos modos?@echo offya 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.Listpara 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<1es 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 (
-plbandera) = 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_replacefunción incluye una variedad de patrones y reemplazos.fuente
-Ry$argn. Y usar una aserción conyguardar dos:(?<![aeiou])y$permiteiecomo 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. tioelifSin embargo, no combiné el s, porque ese medio sepotatoconvierte 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:
Replace 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 elyaiy agregue unefe?-> cambiarvy agregar une[^aeiou]o-> agregar uneEntonces queremos abordar un
sindependientemente.Trucos:
Coperador, 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 deRy.), podemos simplementeOpronunciar la parte principal de la palabra y luego imprimirla porsseparado.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 -lpey proporcione un archivo comoinput.txtpara el primer argumento CLI.fuente
C, 321 bytes
prueba:
resultados:
fuente
wolvesnowolfves.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