Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
fp:lab06 [2022/04/05 13:42] pdmatei |
fp:lab06 [2022/04/08 12:45] (current) pdmatei |
||
---|---|---|---|
Line 41: | Line 41: | ||
xs.foldLeft(op(acc,x))(op) | xs.foldLeft(op(acc,x))(op) | ||
} | } | ||
- | } | + | |
</code> | </code> | ||
Line 50: | Line 50: | ||
<code scala> | <code scala> | ||
def indexOf(e: A): Int | def indexOf(e: A): Int | ||
+ | </code> | ||
+ | |||
+ | **6.2.** ''update'' creates a new list where the given position is modified with a new value: | ||
+ | <code scala> | ||
+ | //Cons(1,Cons(2,Cons(3,FNil()))).update(9,1) = Cons(1,Cons(9,Cons(3,FNil()))) | ||
+ | def update(e: A, pos: Int): FList[A] | ||
+ | </code> | ||
+ | |||
+ | **6.3.** ''append'' concatenates this list to another: | ||
+ | <code scala> | ||
+ | def append(l: FList[A]): FList[A] | ||
+ | </code> | ||
+ | |||
+ | **6.4.** ''reverse'' returns the reversed list: | ||
+ | <code scala> | ||
+ | def reverse: FList[A] | ||
+ | </code> | ||
+ | |||
+ | **6.5.** ''last'' returns the last element of the list: | ||
+ | <code scala> | ||
+ | def last: A | ||
+ | </code> | ||
+ | |||
+ | **6.6.** ''filter'' filters the elements of the list: | ||
+ | <code scala> | ||
+ | def filter(p: A => Boolean): FList[A] | ||
+ | </code> | ||
+ | |||
+ | **6.7.** ''zip'' combines two lists into a list of pairs. If **either** list is larger, the remaining elements are discarded. | ||
+ | <code scala> | ||
+ | // Cons(1,(Cons(2,Cons(3,FNil()))).zip(Cons(true,Cons(false,Cons(true,FNil())))) = | ||
+ | // Cons((1,true),Cons((2,false),Cons((3,true),FNil()))) | ||
+ | def zip[B](l: FList[B]): FList[(A,B)] | ||
+ | </code> | ||
+ | |||
+ | **6.8.** ''insSorted'' inserts an element into a sorted list so that the result is a sorted list. | ||
+ | <code scala> | ||
+ | def insSorted(f: A => Int)(e: A): FList[A] | ||
+ | </code> | ||
+ | |||
+ | **6.9.** ''sortBy'' sorts a list using insertion sort. | ||
+ | <code scala> | ||
+ | def sortBy(f: A => Int): FList[A] | ||
+ | </code> | ||
+ | |||
+ | **6.10 (!)** Implement a method ''pack'' which encodes a sorted list as follows: | ||
+ | <code scala> | ||
+ | [1,1,1,2,3,4,4,5,6].pack = [(1,3),(2,1),(3,1),(4,2),(5,1),(6,1)] | ||
+ | def pack: FList[(A,Int)] | ||
</code> | </code> | ||