The homework is to be done individually as a practice for the final exam. You can do it manually and/or using the computer. Hand in your answers (both the code and the result of running it) at the beginning of your lab. For test data, use the examples included with each problem and add some when none are given.
insert-at!
that destructively inserts a
given element into a list in a specified position. Assume that the
positions are numbered from 0, and that the position specified
is always 0 or positive. If the position is greater than
the length of the list the procedure should return the list itself.
It should work like this:
STk> (insert-at! 'k 3 '(b c m n)) (b c m k n) STk> (insert-at! 'a 0 '(b c d e)) (a b c d e) STk> (insert-at! 'a 7 '(b c d e)) (b c d e)
(bonus! table key-list)
to give a bonus of 100 points to the values of the keys
that are included in the list key-list
.
Assume table
is a table, as defined in the textbook.
frequent-flyers
containing names of people and their frequent flyer miles.
The keys in frequent-flyers
are symbols representing names,
the values are miles.
Suppose you are also given the list names
of names of people who
should receive a bonus of 100 miles.
(bonus! frequent-flyer names)
should increase by 100 the values of
the miles in the table frequent-flyers
for the people who
appear in names
. Nothing should be done for people listed
in names
but not in frequent-flyers
.
You have to use the selectors and mutators from the textbook
to access the entries in the table.
>>> str2fqy('tables are dictionaries') {'a': 3, ' ': 2, 'c': 1, 'b': 1, 'e': 3, 'd': 1, 'i': 3, 'l': 1, 'o': 1, 'n': 1, 's': 2, 'r': 2, 't': 2}