Just the vowels please
Given a sequence of letters, output only the vowels.
Input
- A sequence of letters
- This may be a string or any ordered data structure of characters (provided it is consistent between inputs)
- The letters may contain a mixture of upper and lower case
- The characters that count as letters for this challenge are A-Z and a-z, specifically
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
- The input may be empty (it may have length zero)
Output
- All of the vowels from the input, in the same order, and nothing else
- This may be a string or any ordered data structure of characters. It does not need to match the input format (provided it is consistent between inputs)
- For example, you may take input as an array of characters, and output as a string, provided this does not change for different inputs
- Vowels that appear more than once in the input must appear the same number of times in the output
- If there are no vowels in the input, the output is empty (a sequence of length zero)
- The characters that count as vowels for this challenge are
AEIOUaeiou
- Case must be maintained - a vowel that is lower case in the input must be lower case in the output, and a vowel that is upper case in the input must be upper case in the output
Test cases
Test cases are in the format "input" : "output"
"" : ""
"q" : ""
"S" : ""
"Rhythm" : ""
"a" : "a"
"art" : "a"
"atr" : "a"
"rat" : "a"
"rta" : "a"
"tar" : "a"
"tra" : "a"
"emu" : "eu"
"eum" : "eu"
"meu" : "eu"
"mue" : "ue"
"uem" : "ue"
"ume" : "ue"
"AaeEIiOouU" : "AaeEIiOouU"
"aaaaaaaa" : "aaaaaaaa"
"bbbbbbbb" : ""
"abababab" : "aaaa"
"babababa" : "aaaa"
"aLtErNaTe" : "aEae"
Explanations are optional, but I'm more likely to upvote answers that have one.
Fig, 3 bytes Actual score i …
2y ago
J, 19 char Solution: ``` …
2y ago
Vyxal, 2 bytes ``` A ``` T …
2y ago
Vyxal, 3 bytes ``` k∨↔ ``` …
2y ago
05AB1E, 3 bytes ```žÀÃ``` …
2y ago
[Raku], 18 bytes {m …
2y ago
JavaScript, 27 24 bytes Inp …
2y ago
Japt v2.0a0, 3 bytes o\ …
2y ago
[Sclipting], (UTF-16) 22 bytes …
2y ago
9 answers
05AB1E, 3 bytes
žÀÃ
: implicit input
žÀ : push "aeiouAEIOU"
à : keep all elements of input that occur in "aeiouAEIOU"
0 comment threads
Fig, 3 bytes
Actual score is: $3\log_{256}(96)\approx$ 2.469 bytes. Filters consonants from the input string using implicit input.
Fcb
Fcb
F : Filter with two string args filters a from b
cb : constant for upper/lowercase consonants
0 comment threads
Vyxal, 2 bytes
~A
Takes input as a string, outputs a list of vowels.
Explained
~A
~ # Keep only letters from the input where
A # the letter is a vowel
0 comment threads
J, 19 char
Solution:
(e.&'aeiouAEIOU'#])
Test examples:
(e.&'aeiouAEIOU'#]) ''
(e.&'aeiouAEIOU'#]) 'Rhythm'
(e.&'aeiouAEIOU'#]) 'a'
a
(e.&'aeiouAEIOU'#]) 'emu'
eu
(e.&'aeiouAEIOU'#]) 'aLtErNaTe'
aEae
How it works:
] is whatever value is on the the far right
# uses boolean value on its left to select from value on its right
'aeiouAEIOU' are the characters being searched for
& ties the value on its right to the verb on its left
e. searches for the values on its right within the value on its left
producing a boolean result for found / not found
0 comment threads
Raku, 18 bytes
{m:g:i/<[aeiou]>/}
Implicitly matches the topic variable with the regex
{m:g:i/<[aeiou]>/}
{ } : anonymous code block
m : match operator
:g:i : regex adverbs, global and ignorecase
/<[aeiou]>/ : the regex using a character class of vowels
0 comment threads
JavaScript, 27 24 bytes
Input as a string, output as a character array or empty array.
s=>s.split(/[^aeiou]*/i)
Thanks to Moshi for pointing out the *
I was missing that would allow me to use split
instead of match
and get down to 24 bytes.
1 comment thread