author | Christian Urban <christian dot urban at kcl dot ac dot uk> |
Sun, 06 Nov 2016 18:28:47 +0000 | |
changeset 11 | 417869f65585 |
parent 9 | 48a477fdef21 |
child 18 | 87e55eb309ed |
permissions | -rw-r--r-- |
6 | 1 |
\documentclass{article} |
11
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
2 |
\usepackage{../style} |
6 | 3 |
%%\usepackage{../langs} |
4 |
||
5 |
\begin{document} |
|
6 |
||
9
48a477fdef21
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
6
diff
changeset
|
7 |
\section*{Coursework 6 (Scala)} |
6 | 8 |
|
11
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
9 |
This coursework is about Scala and is worth 10\%. The first and second |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
10 |
part is due on 16 November at 11:00, and the second part on 23 |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
11 |
November at 11:00. You are asked to implement three programs about |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
12 |
list processing and recursion. |
6 | 13 |
|
14 |
\subsubsection*{Disclaimer} |
|
15 |
||
16 |
It should be understood that the work you submit represents |
|
17 |
your own effort. You have not copied from anyone else. An |
|
18 |
exception is the Scala code I showed during the lectures or |
|
19 |
uploaded to KEATS, which you can freely use.\bigskip |
|
20 |
||
21 |
||
9
48a477fdef21
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
6
diff
changeset
|
22 |
\subsubsection*{Part 1 (3 Marks)} |
6 | 23 |
|
11
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
24 |
This part is about recursion. You are asked to implement a Scala |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
25 |
program that tests examples of the \emph{$3n + 1$-conjecture}. This |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
26 |
conjecture can be described as follows: Start with any positive number |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
27 |
$n$ greater than $0$. If $n$ is even, divide it by $2$ to obtain $n / |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
28 |
2$. If $n$ is odd, multiply it by $3$ and add $1$ to obtain $3n + |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
29 |
1$. Repeat this process and you will always end up with $1$. For |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
30 |
example if you start with $6$, respectively $9$, you obtain the series |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
31 |
|
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
32 |
\[ |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
33 |
\begin{array}{@{}l@{\hspace{5mm}}l@{}} |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
34 |
6, 3, 10, 5, 16, 8, 4, 2, 1 & \text{(=9 steps)}\\ |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
35 |
9, 28, 14, 7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1 & \text{(=20 steps)}\\ |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
36 |
\end{array} |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
37 |
\] |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
38 |
|
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
39 |
\noindent |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
40 |
As you can see, the numbers go up and down like a roller-coaster, but |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
41 |
curiously they seem to always terminate in $1$. While it is |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
42 |
relatively easy to test this conjecture with particular numbers, it is |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
43 |
an interesting open problem to \emph{prove} that the conjecture is |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
44 |
true for all numbers ($> 0$). Paul Erd\"o{}s, a famous mathematician |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
45 |
you might have hard about, said about this conjecture: ``Mathematics |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
46 |
may not be ready for such problems.'' and also offered \$500 cash |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
47 |
prize for its solution. Jeffrey Lagarias, another mathematician, |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
48 |
claimed that based only on known information about this problem, |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
49 |
``this is an extraordinarily difficult problem, completely out of |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
50 |
reach of present day mathematics.'' There is also a |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
51 |
\href{https://xkcd.com/710/}{xkcd} cartoon about this |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
52 |
conjecture.\medskip |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
53 |
|
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
54 |
\noindent |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
55 |
\textbf{Tasks:} (1) You are asked to implement a recursive function that |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
56 |
calculates the number of steps needed number until a series ends with |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
57 |
$1$. In case of starting with $6$, it takes $9$ steps and in case of |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
58 |
starting with $9$, it takes $20$ (see above). In order to try out this |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
59 |
function with large numbers, you should use \texttt{Long} as argument |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
60 |
type instead of \texttt{Int}. You can assume this function will be |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
61 |
called with numbers between $1$ and $10$ million. |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
62 |
|
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
63 |
(2) Then write a second function that takes an upper bound as argument |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
64 |
and calculates the steps for all numbers in the range from 1 upto this |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
65 |
bound, and returns the maximum of steps needed by a number in that |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
66 |
range. This function should produce for ranges |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
67 |
|
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
68 |
\begin{itemize} |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
69 |
\item $1 - 10$ where $9$ takes 20 steps |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
70 |
\item $1 - 100$ where $97$ takes 119 steps, |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
71 |
\item $1 - 1,000$ where $871$ takes 179 steps, |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
72 |
\item $1 - 10,000$ where $6,171$ takes 262 steps, |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
73 |
\item $1 - 100,000$ where $77,031$ takes 351 steps, |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
74 |
\item $1 - 1$ million where $837,799$ takes 525 steps, and |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
75 |
\item $1 - 10$ million where $8,400,511$ takes 686 steps |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
76 |
\end{itemize} |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
77 |
|
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
78 |
|
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
79 |
\subsubsection*{Part 2 (4 Marks)} |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
80 |
|
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
81 |
This part is about list processing---it's a variant of |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
82 |
Buy-low-sell-high in Scala. (1) Given a list of prices for a commodity, |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
83 |
for example |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
84 |
|
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
85 |
\[ |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
86 |
\texttt{List(28.0, 18.0, 20.0, 26.0, 24.0)} |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
87 |
\] |
6 | 88 |
|
11
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
89 |
\noindent |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
90 |
you need to write a function that returns a pair for when to buy and |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
91 |
when to sell this commodity. In the example above it should return |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
92 |
$\texttt{(1, 3)}$ because at index $1$ the price is lowest and then at |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
93 |
index $3$ the price is highest. Note the prices are given as lists of |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
94 |
\texttt{Float}s. |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
95 |
|
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
96 |
(2) Write a function that requests a comma-separated value list from a |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
97 |
Yahoo websevice that provides historical data for stock indices. For |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
98 |
example if you query the URL |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
99 |
|
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
100 |
\begin{center} |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
101 |
\url{http://ichart.yahoo.com/table.csv?s=GOOG} |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
102 |
\end{center} |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
103 |
|
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
104 |
\noindent where \texttt{GOOG} stands for Google's stock market symbol |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
105 |
then you will receive a comma-separated value list of the daily stock |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
106 |
prices since Google was floated. You can also try this with other |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
107 |
strock market symbols, for instance AAPL, MSFT, IBM, FB, YHOO, AMZN, |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
108 |
BIDU and so on. This function should return a List of strings, where |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
109 |
each string is one line in this comma-separated value list |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
110 |
(representing one days data). Note that Yahoo generates its answer |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
111 |
such that the newest data is at the front of this list, and the oldest |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
112 |
data is at the end. |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
113 |
|
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
114 |
(3) As you can see, the financial data from Yahoo is organised in 7 columns, |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
115 |
for example |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
116 |
|
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
117 |
{\small\begin{verbatim} |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
118 |
Date,Open,High,Low,Close,Volume,Adj Close |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
119 |
2016-11-04,750.659973,770.359985,750.560974,762.02002,2126900,762.02002 |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
120 |
2016-11-03,767.25,769.950012,759.030029,762.130005,1914000,762.130005 |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
121 |
2016-11-02,778.200012,781.650024,763.450012,768.700012,1872400,768.700012 |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
122 |
2016-11-01,782.890015,789.48999,775.539978,783.609985,2404500,783.609985 |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
123 |
.... |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
124 |
\end{verbatim}} |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
125 |
|
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
126 |
\noindent |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
127 |
Write a function that ignores the first line (the header) and then |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
128 |
extracts from each line the date (first column) and the Adjusted Close |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
129 |
price (last column). The Adjusted Close price should be converted into |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
130 |
a float. So the result of this function is a list of pairs where the |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
131 |
first components are strings (the dates) and the second are floats |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
132 |
(the adjusted close prices). |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
133 |
|
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
134 |
(4) Write a function that takes a stock market symbol as argument (you |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
135 |
can assume it is a valid one, like GOOG, AAPL, MSFT, IBM, FB, YHOO, |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
136 |
AMZN, BIDU). The function calculates the dates when you should have |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
137 |
bought Google shares (lowest price) and when you should have sold them |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
138 |
(highest price).\medskip |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
139 |
|
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
140 |
\noindent |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
141 |
\textbf{Test Data:} |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
142 |
In case of Google, the financial data records 3077 entries starting |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
143 |
from 2004-08-19 until 2016-11-04 (which is the last entry on the day |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
144 |
when I prepared the course work...on 6 November; remember stock |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
145 |
markets are typically closed on weekends and no financial data is |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
146 |
produced then; also I did not count the header line). The lowest |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
147 |
for Goole was on 2004-09-03 with \$49.95513 per share and the |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
148 |
highest on 2016-10-24 with \$813.109985 per share. |
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
149 |
|
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
150 |
|
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
151 |
|
417869f65585
updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
9
diff
changeset
|
152 |
\subsubsection*{Part 3 (3 Marks)} |
6 | 153 |
|
154 |
\end{document} |
|
155 |
||
156 |
%%% Local Variables: |
|
157 |
%%% mode: latex |
|
158 |
%%% TeX-master: t |
|
159 |
%%% End: |