diff --git a/u2/list_ops.py b/u2/list_ops.py new file mode 100644 index 0000000..f938bee --- /dev/null +++ b/u2/list_ops.py @@ -0,0 +1,77 @@ +def append(list1, list2): + result = [] + + for element in list1: + result.append(element) + + for element in list2: + result.append(element) + + return result + + +def concat(lists): + result = [] + + for current_list in lists: + for element in current_list: + result.append(element) + + return result + + +def filter(function, seq): + result = [] + + for element in seq: + if function(element): + result.append(element) + + return result + + +def length(seq): + count = 0 + + for element in seq: + count += 1 + + return count + + +def map(function, seq): + result = [] + + for element in seq: + result.append(function(element)) + + return result + + +def foldl(function, seq, acc): + for element in seq: + acc = function(acc, element) + + return acc + + +def foldr(function, seq, acc): + index = length(seq) - 1 + + while index >= 0: + acc = function(acc, seq[index]) + index -= 1 + + return acc + + +def reverse(seq): + result = [] + + index = length(seq) - 1 + + while index >= 0: + result.append(seq[index]) + index -= 1 + + return result