Програмування дуже жорстке. Ви не можете сказати програмі "вивести кількість бананів", ви повинні сказати це 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.