# [Python 3], <s>83</s> 81 bytes <!-- language-all: lang-python --> lambda a,b,c,d:g(*a)+g(*b)+c[0]+"-"+d[2:] g=lambda c,*s:c[:c in"aeiou"]or c+g(*s) [Try it online!][TIO-k7xspzgu] [Python 3]: https://docs.python.org/3/ [TIO-k7xspzgu]: https://tio.run/##ZY/BioMwEIbvPkXISeukRLtQFOyLuB7GJLoBTSSJhbLss7uxtexhL3P4/u8fZpZH@LLmsg3N5zbh3EskCD0IkPWYnjDL4@yzXLS8yymjuWzLukvG5nAFnHwt2loQbSgqbVfaWUfEXvPZpufFukD8wyfJEPmkjYrmDs4@SG3qhBAPjjRkxiX1wUXs9AJP8@yXSYeUshvNsigeh/2X/duEl@iUj9KQHoUdLU6b8Aawr4S/HAbafsdS07ifjmabsM4ahLt2qwepvUKvoORFRdiNCHvXkhVVIuy8rEE5QCm1CNoa8A8jnZ0VFNWVv2T07MqjKxWMdhpgWE1cVR7paAdW8iQegiAQivLysQfYo2CXjyQ4pWB/0owgnMKgoOL82Y3RHgjG@S8 "Python 3 – Try It Online" *-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 character `c` and the rest `s`. - `c[:c in"aeiou"] or c+g(*s)` evaluates to: + if `c` is a vowel, then `c[:c in"aeiou"]` evaluates to `c[:1]` which is `c`. Since `c` is Truthy, it is returned. + if `c` is not a vowel, then `c[:c in"aeiou"]` evaluates to `c[:0]` aka the empty string. The empty string is Falsy, so `c+g(*s)` (the recursive case) is returned. <br> **Old solution, kept here for sentimental reason** ### [Python 3], 89 bytes <!-- language-all: lang-python --> lambda a,b,c,d:g(a)+g(b)+c[0]+"-"+d[2:] g=lambda s:s[:[x in"aeiou"for x in s].index(1)+1] [Try it online!][TIO-k7xstsv6] [Python 3]: https://docs.python.org/3/ [TIO-k7xstsv6]: https://tio.run/##Zc/PboQgEAbwu09BOGkcNuhu0mjivoj1gICWRMEwuFnT9Nkt7p/00CPf95vJsGzhy9nzPjSf@yTmXgkioAcJqh5TkeVj2me5bHmXU0Zz1ZZ1l4zNS2KNbd3eibFUaONWOjhPjifB7mSs0ve0yPKi2828OB8Ibpgkh5mM1Q@24QmDMrZOCEHwpCGzWFIMPsbeLPCQJ1wmE1LKrjTLInwd@B/jW8ITeo0RDelr4IgWb2x4B3CshL8eBtp@x6Gm8T8dzXbpvLMCbsavCMqgFqih5EVF2JVIdzOKFVUi3bysQXsQShkZjLOAm1XezRqK6oM/sUD2waNVGkY3DTCsNq4qX@3oBlbyJB4iQAooyvPlKEQvJDtfkuC1huOTdgTptQgaKs4fs7E6Csk4/wU "Python 3 – Try It Online"