Introduction
In terms of concept, it’s a simple assignment where a runner is keeping track of their running activities. Each run is characterized by two attributes: distance
(in kms) and time
(in seconds). Each instance of a Run
object also holds references to two other Run
objects:
prev
: Run (if any) before the instance.next
: Run (if any) after the instance.
Thus, we can track runs from earliest to latest using next
, or latest to earliest using prev
.
Your task
Your task is to complete the nine methods in the class Run.java
.
IMPORTANT: All methods except addToFront
require correct implementation of addToEnd
as a pre-requisite.
For some methods, such as addToEnd
, addToFront
, size()
, etc., it doesn’t matter which object in the list the methods is called on, the result should be the same.
For example, if there is a list of 20 runs starting at r
, each of the following should return 20:
r.size()
r.next.next.next.size()
r.next.next.next.next.next.prev.prev.size()
Helper methods and variables
You can, and if using recursion, will need to, add helper methods. You can add instance variables and class (static) variables as well.
Help document
A document to help you with the concept of the need to traverse to the first node, and for a helper method (for a good chunk of the methods) is provided in a4help.pdf at the bottom of the page.
Advanced tasks
Tests for the following methods are NOT supplied:
add(Run)
(10 marks)longestSequenceOver(double)
(15 marks)getRunsOver(double)
(15 marks)
You need to write your own tests to check the correctness of your implementation.
Grading criteria
Maximum marks for each method are provided in the tests corresponding to the methods. For full marks, you need to solve this assignment purely recursively. So, if you use a loop, even once, in any method, your marks will be reduced by 30% automatically. We hope the following table makes the situation clear for you.
Number of times loops used | Raw Mark | Final Mark |
---|---|---|
0 | 80 | 80 |
1 | 90 | 63 |
10 | 90 | 63 |
1 | 100 | 70 |
If it doesn’t, the following flowchart might help:
Submission format
Drag the file Run.java
into the submission box. You got this!
Importing libraries
You cannot use any external library. The use of ANY function from outside the Run
class will result in an automatic zero