Python 3, 108 101 99 байт
(Немає використання регулярного вираження)
Ця функція очікує введення через 2 аргументи, наприклад f('blushing','crow'). Повертає нові слова в кортежі.
S=lambda s,p="":s[0]in"aeiou"and(p,s)or S(s[1:],p+s[0])
def f(x,y):a,b=S(x);c,d=S(y);return c+b,a+d
Рішень для регулярних виразів дуже багато, тому я хотів написати щось, що не використовувало повторну бібліотеку Python.
Як це працює
Єдиною складною частиною є лямбда-вираз S(абревіатура означає " S plit перед першою голосною"). Він рекурсивно "повторює" над даним словом, переміщаючи один символ за один раз від початку s(який починається цілим словом) до кінця p(який починається порожнім). При першій голосній зустрічі він повертається (p,s), тобто (префікс, суфікс). Зауважте, що це неправильний порядок порівняно з параметрами!
Я вважав, що має більше сенсу, щоб повернутий порядок був префіксом, а потім суфіксом (тому що, як правило, префікс іде перед суфіксом). Це замовлення може a,b=S(x)полегшити читання коду.
Але у мене не було вибору порядку в параметрах лямбда, тому я не міг визначитись pраніше s. Перший параметр s, повинен був взяти слово цілком , тому що pмав значення за замовчуванням і параметри по замовчуванням йдуть в останню чергу . При цьому мені не потрібно було Sдвічі викликати функцію порожнім рядком, і кілька байтів можна було зберегти. Однак, можливо, це було просто поганим рішенням повернути префікс / суфікс у зворотному порядку, оскільки він використовувався в виразі лямбда.
Щодо вибору лямбда-експресії над функцією, то для цього потрібно більше байтів, def S(s,p=""):returnніж S=lambda s,p="":. Я можу зробити такий вибір, оскільки Python має оцінку короткого замикання та потрійний оператор. Однак я не можу адекватно пояснити, як я використовував коротке замикання; важко міркувати.
Це моя перша відповідь. Я сподіваюся, що я зробив це правильно, і що є важливим для розміщення рішення, яке не може перемогти.
Редагування: дякуючі коментатори: трохи зменшити кількість байтів, двічі та видалити непотрібну інформацію. Спроба вдосконалити писемність. Сподіваємось, не помилився.