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 имеет оценку короткого замыкания и троичный оператор. Однако я не могу адекватно объяснить, как я использовал короткие замыкания; это трудно рассуждать.
Это мой первый ответ. Я надеюсь, что я сделал это правильно, и что стоит опубликовать решение, которое не может победить.
Редактирование: Спасибо, комментаторы: Немного, вдвое уменьшил количество байтов и удалил ненужную информацию. Попытка улучшить написание. Надеюсь, не ошибся.