Write a function lastElem
that
returns the last element of a list.
> lastElem [2, 4, 6, 8] 8
Write a function secondLast
that
returns the second-to-last element of a list.
> secondLast [2, 4, 6, 8] 6
Write a function kth k l
that returns
the kth element of a list l, where elements are numbered starting
from 0. (Do not use the built-in operator !!
, which does
the same thing.)
Write a function del n l
that deletes
the first occurrence of an integer n from a list of integers l,
returning a new list. If n is not present in the list, the function
should return l unchanged.
Write a function bitCount
that takes
a non-negative Integer and returns the number of ones in its binary
representation.
Write a function log2
that takes a
positive integer n and returns ⌊log2(n)⌋, where ⌊x⌋
denotes the floor function, i.e. rounding down to the nearest
integer.
Write a function before
that takes
two strings s and t and returns True if s comes before t in
dictionary order. In your function, you may use the operator < on
characters, but not on strings.
Write a function zipper
that converts
two lists into a list of pairs:
> zipper [10, 12, 14] [21, 23, 25, 27] [(10,21),(12,23),(14,25)]
Stop zipping when you reach the end of either list.
Write a function unzipper that converts a list of pairs into a pair of lists:
> unzipper [(10, 21), (12, 23), (14, 25)] ([10,12,14],[21,23,25])
Write a function dedup
that
eliminates consecutive duplicate
elements in a list of
integers:
> dedup [2, 4, 4, 4, 6, 6, 8, 4] [2, 4, 6, 8, 4]
Which of these functions is equivalent to the
built-in operator ||
?
my_or
a
b
=
a
||
b
my_or
a
b
=
b
||
a
my_or
_
True
=
True
my_or
True
_
=
True
my_or
_
_
=
False
my_or
True
False
=
True
my_or
True
True
=
True
my_or
False
True
=
True
my_or
False
False
=
False
Implelement the built-in function cycle
that takes a list L and returns an infinite list consisting of L
repeated over and over:
> take 10 (cycle "abc") "abcabcabca"