Python 3, 8983 8381 bytes
lambda a,b,c,d:g(*a)+g(*b)+c[0]+"-"+d[2:]
g=lambda c,*s:c[:c in"aeiou"andin"aeiou"]or c+g(*s)
-2 bytes thanks to @JonathanAllan!
Explanation:
g
is a recursive function that takes in a splatted string and return the string, truncated after the first vowel.
lambda c,*s
gather the splatted string into the first characterc
and the rests
.c[:c in"aeiou"] or c+g(*s)
evaluates to:- if
c
is a vowel, thenc[:c in"aeiou"]
evaluates toc[:1]
which isc
. Sincec
is Truthy, it is returned. - if
c
is not a vowel, thenc[:c in"aeiou"]
evaluates toc[:0]
aka the empty string. The empty string is Falsy, soc+g(*s)
(the recursive case) is returned.
- if
**Old solution, kept here for sentimental reason** ### [Python 3], 89 bytes
lambda a,b,c,d:g(a)+g(b)+c[0]+"-"+d[2:]
g=lambda ors:s[:[x c+gin"aeiou"for x in s].index(*s1)+1]