介绍和信誉
今天没有花哨的前奏:请实施takewhile
。
这种变化(在非平凡的数据结构上)是我大学功能编程课程中的一项作业。这项作业现在已经关闭,并且已经在课堂上进行了讨论,我已经得到了我教授的允许在这里发布(我明确要求过)。
规格
输入值
输入将是一个正整数列表(或您的语言的等效概念)。
输出量
输出应为正整数列表(或您的语言的等效概念)。
该怎么办?
您的任务是使用要takewhile
考虑的数字为偶数的谓词来实现(允许使用语言内置函数)(着重于获取时间)。
因此,您从头到尾遍历列表,并且在条件(为偶数)成立的情况下,将其复制到输出列表,并在遇到不符合条件的元素时立即中止操作并输出(下面是一个分步示例)。这种高阶功能也称为takeWhile(takewhile
)。
潜在的极端情况
与输入列表相比,输出列表的顺序可能不会更改,例如[14,42,2]
可能不会变为[42,14]
。
空列表是有效的输入和输出。
谁赢?
这是代码高尔夫球,因此最短的答案以字节为单位!
标准规则当然适用。
测试向量
[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] -> [171480372]
[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 [42]
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]