Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Consider one more time the following contract specification for the static metho

ID: 3858807 • Letter: C

Question

Consider one more time the following contract specification for the static method smooth.

/**

* Smooths a given {@code Sequence<Integer>}.

*

* @param s1

*            the sequence to smooth

* @param s2

*            the resulting sequence

*

* @replaces s2

* @requires |s1| >= 1

* @ensures <pre>

* |s2| = |s1| - 1 and

* for all i, j: integer, a, b: string of integer

*      where (s1 = a * <i> * <j> * b)

*    (there exists c, d: string of integer

*       (|c| = |a| and

*        s2 = c * <(i+j)/2> * d))

* </pre>

*/

public static void smooth(Sequence<Integer> s1, Sequence<Integer> s2) {...}

Provide two distinct implementations of the newly designed smooth method, one recursive and one iterative (i.e., not using recursion). Use only the SequenceKernel method methods (add, remove, and length, plus the methods listed there as inherited from Standard). [Sequence Kernel here: https://www.pdf-archive.com/2017/07/20/api/preview/page/1/]

Explanation / Answer

private static Sequence<Integer> smooth(Sequence<Integer> s1) {

Sequence<Integer> retSeq = s1.newInstance();

Sequence<Integer> copy = s1.newInstance();

for (int i : s1) {

copy.add(copy.length(), i);

}

if (s1.length() == 2) {

int firstElement = copy.remove(0);

int secondElement = copy.remove(0);

p("2 elements left, removing: " + firstElement + " and "

+ secondElement + ".");

retSeq.add(retSeq.length(), (firstElement + secondElement) / 2);

} else {

int firstElement = s1.remove(0);

int secondElement = copy.remove(1);

p("Removing: " + firstElement + " and " + secondElement + ".");

int firstSmoothed = (firstElement + secondElement) / 2;

int smoothedNumber = smooth(s1).remove(0);

p("Smoothed Number: " + smoothedNumber + ".");

s1.add(0, firstElement);

retSeq.add(0, firstSmoothed);

retSeq.add(retSeq.length(), smoothedNumber);

}

p("Returning: " + retSeq.toString());

return retSeq;

}

Method2:-

private static Sequence<Integer> smooth(Sequence<Integer> s1) {

Sequence<Integer> retSeq = s1.newInstance();

int tmp = 0;

int tmp2 = 0;

if (s1.length() == 2) {

tmp = s1.remove(0);

tmp2 = s1.remove(0);

retSeq.add(retSeq.length(), (tmp + tmp2) / 2);

} else {

int lastDigit = s1.remove(s1.length() - 1);

int nextDigit = s1.remove(s1.length() - 1);

retSeq.add(retSeq.length(), (lastDigit + nextDigit) / 2);

s1.add(s1.length(), nextDigit);

int test = smooth(s1).remove(0);

retSeq.add(retSeq.length(), test);

s1.add(s1.length(), lastDigit);

}

return retSeq;

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote