Существуют две формы существительных, единственного и множественного числа. Преобразование между этими двумя довольно легко.
Обычно вы заканчиваете это
s
. ех.car
=>cars
.Если она заканчивается
s
,x
,z
,ch
илиsh
, в конце егоes
. ех.bus
=>buses
.Если она заканчивается
y
с согласным непосредственно перед ней, изменитьy
кies
. ех.penny
=>pennies
.Если оно заканчивается на
f
илиfe
, измените его наves
. ех.knife
=>knives
.Если
o
перед ним стоит согласный, измените его наoes
. ех.potato
=>potatoes
.
задача
Вам дадут имя в единственном числе. Вы должны преобразовать данное существительное во множественное число и вывести его.
правила
Вам не дадут неправильные существительные, как
mouse
иmoose
.Вам не будут предоставлены исключения, такие как
safe
(safes
; нарушая № 4),piano
(pianos
; нарушая № 5) иo
(oes
, нарушая № 5).Вам не дадут слова, которые имеют две или более возможные формы множественного числа, такие как
mosquito
(mosquitos
илиmosquitoes
) иroof
(roofs
илиrooves
).Вам не дадут неисчислимых существительных.
y
не считается гласным
Примеры
car => cars
bus => buses
potato => potatoes
knife => knives
penny => pennies
exception => exceptions
wolf => wolves
eye => eyes
decoy => decoys
radio => radios
источник
Ответы:
Mathematica, 9 байт
Да, для этого есть встроенная функция!
Образец вывода
источник
Retina ,
575356555857 байтСпасибо MartinEnder за некоторые предложения по игре в гольф
Спасибо BusinessCat за игру в гольф 1 байт
Попробуйте онлайн!
Объяснение (устарело)
Изменения
{consonant}y
в{consonant}ie
Присоединяет
e
, когда слово заканчивается{consonant}o
,f
,x
,z
,s
,sh
илиch
.Изменяет окончание
fe
наve
Наконец добавьте
s
к слову.Правки
eye
в качестве примераисточник
y
использованием$1
JavaScript (ES6),
10997 байтПопробуйте онлайн!
источник
()
передfe
?replace()
итерации включают ссылку на первую подходящую группу (с$1
). Вот почему мне нужна пустая подходящая группа здесь.(?<![aeiou])y
?Пакет, 325 байт
источник
@echo off
в начале, а не@
везде? Кроме того,@set/ps=
кажется немного ржавым от телефона. Развеs
переменная не примет значения среза в любом случае?@echo off
уже 9 байтов без новой строки, так что это меня ничего не спасает. Кроме того,@set/ps=
необходимо ввести значение в первую очередь.Haskell,
216207205 байтСпасибо @Lynn, @ user1472751 и @Laikoni за помощь!
Удобочитаемый
объяснение
import Data.List
для функцииisSuffixOf
.endsWithOneOf
(€
в версии для гольфа) возвращает, является ли один из элементов списка окончанием строки.consonants(c)
это просто список всех согласных.Наконец,
pluralize(p)
проверяет окончания и возвращает правильное множественное число.Пример:
источник
€
его длина составляет несколько байтов, что делает ваше решение 226 байтов. (Задачи кода гольфа явно оцениваются в байтах, потому что подсчет символов позволяет иногда обманывать.) Однако вы можете просто переименовать его!
! Такжеwords"s x z ch sh"
экономит 5 байт. Извлекает паренов вокруг(map(:"o")c))
и(map(:"y")c))
сохраняет еще 4.c=['b'..'z']\\"eiou"
поскольку'a'
всегда удаляется.0<1
на один байт корочеTrue
. Кроме того, переводы строки имеют то же число байтов, что и;
делают гольф-код более читабельным.Perl, 66 + 2 (
-pl
флаг) = 68 байтС помощью:
Попробуйте это на Ideone.
источник
Röda , 80 байт
Функция изменяет свой аргумент. Использование:
main word { f word; print word }
Вот версия, которая использует возвращаемое значение (83 байта):А ниже приведена функция, которая считывает бесконечно много значений из входного потока и помещает множественные формы в выходной поток (
8783 байта):Это анонимная функция, так как она короче, чем создание именованной функции.
источник
f&s
)?f("word")
Кажется, просто ничего не отображаетсяPHP,
103100 байтПопробуйте онлайн!
preg_replace
Функция принимает массив шаблонов и замены.источник
-R
и$argn
. И использование утверждения сy
сохранением два:(?<![aeiou])y$
позволяет вie
качестве замены: нет\1
, без кавычек.([^aeiou]o|sh?|x|z|ch)$
-R
(но не-r
) есть 1 байтный штраф, что, к сожалению, не меняет счетчик байтов. Но предложение за кадром прекрасно работает. Спасибо.Python 3,
271239199 байтСпасибо @ovs за уменьшение его на 72 байта!
Попробуйте онлайн!
источник
elif
. Односимвольные списки могут быть заменены строками. Переключение на python экономит дополнительные 3 байта. тиоelif
s, потому что это означает, чтоpotato
становитсяpotaties
.print(s+"s")
и удалите регистр else, а также каждый s, который вы добавляете к слову. Тиоand/*
иor/+
и сделать безымянную функцию лямбды вы можете получить до 200 байт (я сменил случаи немного)print(s+"s")
умно. Все изменилось; Вы в значительной степени переписали все это, лол. Благодарность! (Я даже не знал, что вы могли бы сделатьTrue and "string"
это)sed, 70
79байтов69
78+ 1 для-E
(BSD) /-r
(GNU) флагПрямой порт ответа сетчатки .
источник
Пип ,
6361 байтТак близко к ловле сетчатки! Но это, вероятно, не произойдет. :(
Попробуйте онлайн!
объяснение
Базовая стратегия:
R
eplace выполняет несколько замен один за другим, когда даны списки шаблонов и замен. Мы хотим сделать следующие замены:(sh?|x|z|ch)$
-> добавитьe
[^aeiou]y
-> изменить ,y
чтобыi
и добавитьe
fe?
-> изменитьv
и добавитьe
[^aeiou]o
-> добавитьe
Тогда мы хотим придерживаться
s
независимо.Трюки:
C
Оператор, учитывая регулярное выражение, заворачивает в группе захвата;C`xyz`
на один байт короче`(xyz)`
.s
(и иметь дело с порядком приоритетаR
и.
), мы можем простоO
вывести основную часть слова и затем распечататьs
отдельно.Размещенный и закомментированный код:
источник
C #,
73163 байта:Да, другой язык со встроенным (хотя вам нужно добавить ссылку на
System.Data.Entity.Design.dll
)Использовать:
Выход:
источник
Питон
199187176 байтисточник
Рельс бегун, 18 байт
Пример:
источник
Python, 296 байт
источник
Прямой порт Retina:
Рубин , 111 байт
Попробуйте онлайн!
Вызвать через
ruby -lpe
и предоставить файл, какinput.txt
для первого аргумента CLI.источник
C, 321 байт
тест:
полученные результаты:
источник
wolves
неwolfves
.Java 7, 408 байт
Golfed:
В основном тестирование конца строки и добавление / замена букв в зависимости от того, какой это случай. Boolean и String в начале предназначены только для удаления повторений в тестовых примерах и уменьшения размера кода.
Читаемая версия:
источник