Permalink
Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
37 lines (32 sloc) 902 Bytes
// P08 Eliminate consecutive duplicates of list elements.
import core.List;
import static core.List.*;
class P08 {
// Recursion
<T> List<T> f1(List<T> list) {
if (list.nonEmpty() && list.tail().nonEmpty()) {
T a = list.head();
T b = list.tail().head();
List<T> t = list.tail();
return a == b ? f1(t) : cons(a, f1(t));
} else {
return list;
}
}
// Iteration
<T> List<T> f2(List<T> list) {
List<T> result = nil();
T previous = null;
boolean first = true;
for (T each : list) {
if (first) {
result = cons(each, result);
first = false;
} else if (each != previous) {
result = cons(each, result);
}
previous = each;
}
return result.reverse();
}
}