Программирование очень жесткое. Вы не можете указать программе «выводить количество бананов», вы должны сообщить об этом 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.