Introduction and Credit
Today without a fancy prelude: Please implement
A variation of this (on a non-trivial data structure) was an assignment at my university functional programming course. This assignment is now closed and has been discussed in class and I have my professor's permission to post it here (I asked explicitly).
The input will be a list (or your language's equivalent concept) of positive integers.
The output should be a list (or your language's equivalent concept) of positive integers.
What to do?
Your task is to implement
takewhile (language built-ins are allowed) with the predicate that the number under consideration is even (to focus on takewhile).
So you iterate over the list from start to end and while the condition (is even) holds, you copy to the output-list and as soon as you hit an element that doesn't make the condition true, you abort the operation and output (a step-by-step example is below). This higher-order functionality is also called takeWhile (
Potential corner cases
The order of the output list compared to the input list may not be changed, e.g.
[14,42,2] may not become
The empty list is a valid in- and output.
This is code-golf so the shortest answer in bytes wins!
Standard rules apply of course.
[14, 42, 2324, 97090, 4080622, 171480372] -> [14, 42, 2324, 97090, 4080622, 171480372] [42, 14, 42, 2324] -> [42, 14, 42, 2324] [7,14,42] ->   ->  [171480372, 13, 14, 42] ->  [42, 14, 42, 43, 41, 4080622, 171480372] -> [42, 14, 42]
Example Input: [42, 14, 42, 43, 41, 4080622, 171480372] Consider first element: 42 42 is even (21*2) Put 42 into output list, output list is now  Consider second element: 14 14 is even (7*2) Put 14 into output list, output list is now [42,14] Consider third element: 42 42 is even (21*2) Put 42 into output list, output list is now [42,14,42] Consider fourth element: 43 43 is not even (2*21+1) Drop 43 and return the current output list return [42,14,42]