Question: Objective: To program using the functional programming paradigm. Assignment: This is another one of the do-it-yourself research assignments. Write the following functions using Scheme (or

Objective:

To program using the functional programming paradigm.

Assignment:

This is another one of the "do-it-yourself" research assignments.

Write the following functions using Scheme (or LISP if you prefer):

1. A function (binomial N k) that returns the binomial coefficients C(N, k), defined recursively as: C(N,0) = 1, C(N, N) = 1, and, for 0

2. A function (mod N M) that returns the modulus remainder when dividing N by M.

3. A function (binaryToDecimal b) that takes a binary number and returns its decimal value. (binaryToDecimal 1101) returns 13.

4. A function (addBinary binaryList) that takes a list of binary numbers and returns their decimal sum. (addBinary '(1101 111 10 101)) returns 27

5. A function (min list) that returns the smallest value in a simple list of integers.

6. A function (myRemove atm list) that removes all occurrences of the atom atm from a simple list, returning list with atm removed. myRemove should return the original list if atm is not found.

7. A function (selectionSort list) that returns a simple list of integers in ascending order using a recursive selection sort algorithm. Hint: use your min function.

All the functions must be written in a functional style and must use only the basic LISP functions car, cdr, cons, null, atom, the equality functions, the arithmetic functions, and the append function.

What to Hand In:

Attach your source code files to Blackboard.

Include results of your functions and the output produced from testing your functions using the following data:

1. Test binomial for C(4,0), C(8, 8), C(3,2) and C(7, 4).

2. Test mod for arguments 9 and 5, 7 and 9, 100 and 37, 20 and 5, -11 and 3.

3. Test binaryToDecimal with arguments 0, 1011, 111111, 10001.

4. Test addBinary with (1101 111 10 101), (0), (11011).

5. Test min with (4 5 1 2 5), (3), (), (5 5 5)

6. Test myRemove with atom a and list arguments (), (a), (a b c d a b a a), (x y z), (a (x y z) (r s t a)), (((a (l a) b) a) m a).

7. Test selectionSort with lists (), (5), (6 10 23 12 2 9 18 1 0 15), (3 4 7 3 7 7 4 3 2 3 7)

PLT Scheme can be fond at: www.plt-scheme.org

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!