CSC 388 Minsplit Programming Languages Assignment

Homework 3 must be submitted electronically. The code must be in the **R5RS dialect** of Scheme. See week 10 for how to change to this dialect.

Pack all your files in a zip file. Use the following naming conventions. If your name is John Smith, then your file name must be jsmith.zip. Zip files which are not properly named or packed will receive 0 points.

Write a function **min-split** in Scheme that takes a list of two or more positive integers (duplicates are possible) and other auxiliary parameters of your choice. The list L is flat, i.e., it does not contain sublists. The function **min-split** returns the size of the minimum split of a list L.

It is up to you to choose the auxiliary parameters that **min-split** takes. (Auxiliary parameters are parameters used to help find the solution. The list parameter is mandatory and thus not an auxiliary parameter.) All auxiliary parameters must be numeric (not lists) and should have initial values set to zero. For example, if L is ‘(1 2 3) and you decide to use two additional auxiliary parameters, **min-split **should be called as follows:

(min-split ‘(1 2 3) 0 0)

If there are three auxiliary parameters, then it must be called:

(min-split ‘(1 2 3) 0 0 0)

Terminology:

– A split is a division of L into two subsets: every element of L must belong to exactly one of the subsets and no elements can be left out of the split. CSC 388 Minsplit Programming Languages Assignment

– The size of a split is defined as |S1 – S2|, where S1 is the sum of all integers in one of the subsets of the split and S2 is the sum of all integers in the other subset. In other words, to calculate the size of the split one needs to find the absolute value of the difference of the sums.

-The minimum split is the one with the smallest size among all possible splits. The program **min-split** needs to print the size of the minimum split. It is possible that there are several minimum splits. In this case, all of them must have the same size.

Examples:

‘(1 1) returns 0. The minimum split is {1} and {1}. The size of the split is 1 – 1 = 0.

‘(1 2 3) returns 0. The minimum split is {1, 2} and {3}. The size of the split is 3 – 3 = 0. There are other splits such as {1, 3} and {2}; {1} and {2, 3}; and {1, 2, 3} and the empty set. There split sizes are greater than 0, however, so are not minimum splits.

‘(8 6 10 7) returns 1. The minimum split is {6, 10} and {7, 8}. Its size is 16 – 15 = 1.

‘(12 10 11 8 9) returns 4. The minimum split is {11, 12} and {8, 9, 10}. Its size is 27 – 23 = 4.

‘(1 2 1 3 4 7) returns 0. The minimum split is {1, 1, 7} and {2, 3, 4}. Its size is 9 – 9 = 0.

The whole solution must be packed in one recursive function **min-split** which must look as follows

(define min-split (lambda (<list L followed by your auxiliary parameters of your choice initially set to zero>)

In other words, you must choose your auxiliary parameters and define ONE COND statement.

Inside COND, you can only use ONLY the following constructs:

– abs

– null?

– car

– cdr

– else

– +

– –

– <

– min-split

– if

– user defined names (for the names of your parameters)

– integer literals

– parentheses

You cannot use a construct if it is not listed above. The use of user-defined functions, except for min-split, is not allowed. You cannot define or call any other function except for **min-split **and what is listed above. In other words, your code use only one function, **min-split** which must be defined using the constructs from the list above.

**If your program uses a construct not on the list, then it is not a solution to this homework. **Yes, greater than can be used to solve the problem, however, it is not as natural for the problem being given. So, try to restrict yourself to this set of constructs. CSC 388 Minsplit Programming Languages Assignment

**Plagiarism**

Plagiarism is defined as copying or receiving materials from a source or sources and submitting this material as one’s own without acknowledging the debts to the source (quotations, paraphrases, basic ideas), or otherwise representing the work of another as one’s own, is not allowed. Collaboration or group work, usually evidenced by unjustifiable similarity, is not permitted. The homework will be subject to screening by software programs designed to detect evidence of plagiarism or collaboration. Keep in mind that posting a message (including anonymous messages) about the homework on the Internet (blog, software development forums, etc.) is plagiarism. I will be monitoring the Web for the next couple of weeks and taking actions if such a message is posted. CSC 388 Minsplit Programming Languages Assignment

##### Need Help with a similar Assignment?

The post CSC 388 Minsplit Programming Languages Assignment appeared first on EssayPanthers.

- Confidentiality & Authenticity Guaranteed
- Plagiarism Free answers Guarantee
- We Guarantee Timely Delivery of All essays
- Quality & Reliability
- Papers Written from Scratch and to Your exact Instructions
- Qualified Writers Only
- We offer Direct Contact With Your Writer
- 24/7 Customer Support