Practice Problems: Recursion with Lists (Pyret)
Tests are given for all practice problems for you to run against your own implementation.
Tasks:
list-length- count the number of elements in a listlist-sum- add up all numbers in a listinterleave- combine two lists by alternating elementsreverse-list- reverse the order of elements in a list
Template:
fun list-length(lst :: List<Number>) -> Number:
# write your function here
where:
list-length([list: 1, 2, 3]) is 3
list-length([list: 10, 20]) is 2
list-length([list: 5]) is 1
list-length([list: ]) is 0
end
fun list-sum(lst :: List<Number>) -> Number:
# write your function here
where:
list-sum([list: 1, 2, 3]) is 6
list-sum([list: 5]) is 5
list-sum([list: ]) is 0
list-sum([list: -1, -2, -3]) is -6
end
fun interleave(lst1 :: List<Number>, lst2 :: List<Number>) -> List<Number>:
# write your function here
where:
interleave([list: 1, 3, 5], [list: 2, 4, 6]) is [list: 1, 2, 3, 4, 5, 6]
interleave([list: 1, 2, 3], [list: 10]) is [list: 1, 10, 2, 3]
interleave([list: ], [list: 1, 2]) is [list: 1, 2]
interleave([list: 1, 2], [list: ]) is [list: 1, 2]
interleave([list: ], [list: ]) is [list: ]
end
fun reverse-list(lst :: List<Number>) -> List<Number>:
# write your function here
where:
reverse-list([list: 1, 2, 3]) is [list: 3, 2, 1]
reverse-list([list: 10, 20]) is [list: 20, 10]
reverse-list([list: 5]) is [list: 5]
reverse-list([list: ]) is [list: ]
reverse-list([list: 1, 1, 1]) is [list: 1, 1, 1]
end