Программирование очень жесткое. Вы не можете указать программе «выводить количество бананов», вы должны сообщить об этом print(bananas)
.
Но когда вы делаете это, вы сталкиваетесь с проблемой: вы не знаете, сколько у вас бананов заранее, поэтому вы не знаете, стоит ли использовать множественное число.
Иногда программисты идут ленивым путем. Вместо проверки они просто печатают there are X banana(s)
.
Но это ужасно, поэтому нам нужна программа, чтобы это исправить.
Метод (ы)
Чтобы удалить неоднозначное множественное число в строке, выполните следующие действия:
Разбейте строку на пробелы в список слов.
Для каждого слова, которое заканчивается на
(s)
, сделайте следующее:- Если предшествующий слово
a
,an
,1
илиone
, удалить(s)
в конце слова. - В противном случае, если слово является первым словом в строке или предыдущее слово не
a
,an
,1
илиone
, заменить(s)
в конце слова сs
.
- Если предшествующий слово
Соедините список слов обратно в строку, сохранив исходный пробел.
Примеры)
Давайте возьмем строку there's a banana(s) and three apple(s)
.
Сначала мы разбиваем строку на список слов: ["there's", "a", "banana(s)", "and", "three", "apple(s)"]
Для второго шага мы берем два слова, заканчивающиеся на (s)
: banana(s)
и apple(s)
.
Слово раньше banana(s)
есть a
, поэтому мы удаляем (s)
, делая это banana
. Слово , прежде чем apple(s)
это three
, так что мы изменить , (s)
чтобы s
, таким образом , она становится apples
.
Теперь у нас есть ["there's", "a", "banana", "and", "three", "apples"]
. Присоединяясь к списку вместе, мы получаем there's a banana and three apples
. Это наш конечный результат.
Испытания)
Создайте программу или функцию, которая принимает неоднозначную строку в любом приемлемом формате и возвращает однозначную версию этой строки.
Вы можете предположить, что строка не содержит символов новой строки, табуляции или возврата каретки.
Я забыл указать, нужно ли разбивать группы пробелов или пробелов (то есть, следует ли использовать okay then
два пробела ["okay", "then"]
или ["okay", "", "then"]
) при публикации задания , так что вы можете принять любую форму расщепления.
Тестовый набор (ы)
Input -> Output
there are two banana(s) and one leprechaun(s) -> there are two bananas and one leprechaun
there's a banana(s) and three apple(s) -> there's a banana and three apples
apple(s) -> apples
one apple(s) -> one apple
1 banana(s) -> 1 banana
banana -> banana
preserve original whitespace(s) -> preserve original whitespaces
11 banana(s) -> 11 bananas
an apple(s) -> an apple
this is a te(s)t -> this is a te(s)t
I am a (s)tranger(s) -> I am a (s)tranger
счет
Поскольку это код-гольф , выигрывает представление с наименьшим количеством байтов!
apple(s)
тестовый набор дать результат apples
? Задача Otherwise, if the word is the first word in the string . . . replace the (s) at the end of the word with s.
состоит в том, чтобы отметить, что этот случай уступил apples
в песочнице для первых трех ревизий, но изменился на четвертой.
There's a single banana(s)
-> There's a single bananas
.