Failed Tests

### optimisation_sabin

Code
Diff
• ``````from timeit import timeit
from math import floor

# 1. Can you implement another optimised function (sum_even_numbers2) using purely native python?
#    Can you timeit to show it's faster and describe why it is.
#    Can you also state if there are any pros or cons to how it is implemented?

# 2. Can you implement another optimised function (sum_even_numbers3) using third party packages?
#    Can you timeit to show it's faster and describe why it is.
#    Can you also state if there are any pros or cons to how it is implemented?

def sum_even_numbers1(numbers: list[int]) -> int:
total = 0
for num in numbers:
if floor(num/2) == num/2:
total += num

# Floating point calculation is not required
# Only one division required
# float required 32byte, memory heavy
def sum_even_numbers2(numbers: list[int]) -> int:
total = 0
for num in numbers:
if num%2 == 0:
total += num

# needs to call that function from memory
def sum_even_numbers3(numbers: list[int]) -> int:
return sum(filter(lambda x: x > 0 and x%2 == 0, numbers))
``````
• from timeit import timeit
• from math import floor
• # 1. Can you implement another optimised function (sum_even_numbers2) using purely native python?
• # Can you timeit to show it's faster and describe why it is.
• # Can you also state if there are any pros or cons to how it is implemented?
• # 2. Can you implement another optimised function (sum_even_numbers3) using third party packages?
• # Can you timeit to show it's faster and describe why it is.
• # Can you also state if there are any pros or cons to how it is implemented?
• def sum_even_numbers1(numbers: list[int]) -> int:
• total = 0
• for num in numbers:
• if floor(num/2) == num/2:
• total += num
• # Floating point calculation is not required
• # Only one division required
• # float required 32byte, memory heavy
• def sum_even_numbers2(numbers: list[int]) -> int:
• total = 0
• for num in numbers:
• if num%2 == 0:
• total += num
• # needs to call that function from memory
• def sum_even_numbers3(numbers: list[int]) -> int:
• return sum(filter(lambda x: x > 0 and x%2 == 0, numbers))
Failed Tests

### equipment_test_sabin

Code
Diff
• ``````"""Test equipment positions."""
from __future__ import annotations
from collections import Counter, defaultdict
import datetime as dt
import math
import numpy as np
import pandas as pd
from typing import Any

def data_dict() -> defaultdict[str, Any]:
"""Return all equipment positions."""
d = defaultdict(list)
d["T123"].append({"position": {"x": 42, "y": 24, "z": 0.42}, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=0)})
d["T456"].append({"position": {"x": 21.0, "y": 34, "z": 0.289}, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=0)})
d["T789"].append({"position": {"x": 17, "y": 39, "z": 0.789}, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=0)})
d["T456"].append({"position": {"x": 91.0, "y": 114, "z": 0.489}, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=3)})
d["T123"].append({"position": {"x": 43, "y": 25, "z": 0.43}, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=1)})
d["T789"].append({"position": {"x": 19., "y": 79, "z": 0.991}, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=6)})
d["T123"].append({"position": {"x": 46, "y": 29, "z": 0.44}, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=2)})
d["T456"].append({"position": {"x": 24.0, "y": 37, "z": 0.297}, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=4)})
d["T123"].append({"position": {"x": 49.0, "y": 32, "z": 0.451}, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=3)})
d["T789"].append({"position": {"x": 23., "y": 81, "z": 1.103}, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=7)})
return d

def latest_snapshot() -> dict[str, Any]:
"""Return a snapshot of latest equipment."""
return {
"T123": {"position": {"x": 49.0, "y": 32, "z": 0.451}, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=3)},
"T456": {"position": {"x": 24.0, "y": 37, "z": 0.297}, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=4)},
"T789": {"position": {"x": 23.0, "y": 81, "z": 1.103}, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=7)},
}

def counts() -> dict[str, int]:
"""Return counts per equipment."""
return {
"T123": 4,
"T456": 3,
"T789": 3
}

def speeds() -> defaultdict[str, Any]:
"""Return speeds of equipment."""
d = defaultdict(list)
d["T123"].append({"speed": 4.242654947082074, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=3)})
d["T123"].append({"speed": 5.00000999999, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=2)})
d["T123"].append({"speed": 1.4142489172702237, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=1)})
d["T123"].append({"speed": None, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=0)})
d["T456"].append({"speed": 102.0687849638664, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=4)})
d["T456"].append({"speed": 35.43388209045123, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=3)})
d["T456"].append({"speed": None, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=0)})
d["T789"].append({"speed": 4.473538196997986, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=7)})
d["T789"].append({"speed": 6.6750796998987205, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=6)})
d["T789"].append({"speed": None, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=0)})
return d

def find_furthest_west(d: defaultdict) -> str:
"""
Find the name of the truck that is furthest west. That is,
the truck with the smallest easting position component.
"""
latest = get_latest_snapshot(d)
truck_furthest_west = ""
x = latest[list(latest.keys())[0]]['position']['x']
for item in latest:
if latest[item]['position']['x'] < x:
x = latest[item]['position']['x']
truck_furthest_west = item
return truck_furthest_west

def get_latest_snapshot(d: defaultdict) -> dict[str, Any]:
"""
Return a snapshot of the latest positional updates for the
equipment.
"""
temp = defaultdict(list)

for item in d:
df = pd.DataFrame(d[item])
temp[item] = df.iloc[-1].to_dict()
return temp

def get_counts(d: defaultdict) -> dict[str, int]:
"""Return a dict of trucks and the times they have provided updates."""
temp = defaultdict(list)
for item in d:
temp[item] = len(d[item])
return temp

def calculate_speeds(d: defaultdict) -> defaultdict[str, Any]:
"""Return a dict of equipment and the speeds they are travelling at."""
df = pd.json_normalize(d, sep='_')
temp = defaultdict(list)
for item in d:
df = pd.json_normalize(d[item], sep='_')
diff = df.diff()
coords = [c for c in df.columns if not 'timestamp' in c]
df['speed'] = np.linalg.norm(diff[coords], axis=1)/diff['timestamp'].dt.seconds
temp[item] = df[['timestamp', 'speed']]
print(temp)
pass

``````
• """Test equipment positions."""
• from __future__ import annotations
• from collections import Counter, defaultdict
• import datetime as dt
• import math
• import numpy as np
• import pandas as pd
• from typing import Any
• def data_dict() -> defaultdict[str, Any]:
• """Return all equipment positions."""
• d = defaultdict(list)
• d["T123"].append({"position": {"x": 42, "y": 24, "z": 0.42}, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=0)})
• d["T456"].append({"position": {"x": 21.0, "y": 34, "z": 0.289}, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=0)})
• d["T789"].append({"position": {"x": 17, "y": 39, "z": 0.789}, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=0)})
• d["T456"].append({"position": {"x": 91.0, "y": 114, "z": 0.489}, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=3)})
• d["T123"].append({"position": {"x": 43, "y": 25, "z": 0.43}, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=1)})
• d["T789"].append({"position": {"x": 19., "y": 79, "z": 0.991}, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=6)})
• d["T123"].append({"position": {"x": 46, "y": 29, "z": 0.44}, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=2)})
• d["T456"].append({"position": {"x": 24.0, "y": 37, "z": 0.297}, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=4)})
• d["T123"].append({"position": {"x": 49.0, "y": 32, "z": 0.451}, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=3)})
• d["T789"].append({"position": {"x": 23., "y": 81, "z": 1.103}, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=7)})
• return d
• def latest_snapshot() -> dict[str, Any]:
• """Return a snapshot of latest equipment."""
• return {
• "T123": {"position": {"x": 49.0, "y": 32, "z": 0.451}, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=3)},
• "T456": {"position": {"x": 24.0, "y": 37, "z": 0.297}, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=4)},
• "T789": {"position": {"x": 23.0, "y": 81, "z": 1.103}, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=7)},
• }
• def counts() -> dict[str, int]:
• """Return counts per equipment."""
• return {
• "T123": 4,
• "T456": 3,
• "T789": 3
• }
• def speeds() -> defaultdict[str, Any]:
• """Return speeds of equipment."""
• d = defaultdict(list)
• d["T123"].append({"speed": 4.242654947082074, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=3)})
• d["T123"].append({"speed": 5.00000999999, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=2)})
• d["T123"].append({"speed": 1.4142489172702237, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=1)})
• d["T123"].append({"speed": None, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=0)})
• d["T456"].append({"speed": 102.0687849638664, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=4)})
• d["T456"].append({"speed": 35.43388209045123, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=3)})
• d["T456"].append({"speed": None, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=0)})
• d["T789"].append({"speed": 4.473538196997986, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=7)})
• d["T789"].append({"speed": 6.6750796998987205, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=6)})
• d["T789"].append({"speed": None, "timestamp": dt.datetime(2022, 1, 1, hour=12, minute=0, second=0)})
• return d
• def find_furthest_west(d: defaultdict) -> str:
• """
• Find the name of the truck that is furthest west. That is,
• the truck with the smallest easting position component.
• """
• pass
• latest = get_latest_snapshot(d)
• truck_furthest_west = ""
• x = latest[list(latest.keys())[0]]['position']['x']
• for item in latest:
• if latest[item]['position']['x'] < x:
• x = latest[item]['position']['x']
• truck_furthest_west = item
• return truck_furthest_west
• def get_latest_snapshot(d: defaultdict) -> dict[str, Any]:
• """
• Return a snapshot of the latest positional updates for the
• equipment.
• """
• pass
• temp = defaultdict(list)
• for item in d:
• df = pd.DataFrame(d[item])
• temp[item] = df.iloc[-1].to_dict()
• return temp
• def get_counts(d: defaultdict) -> dict[str, int]:
• """Return a dict of trucks and the times they have provided updates."""
• pass
• temp = defaultdict(list)
• for item in d:
• temp[item] = len(d[item])
• return temp
• def calculate_speeds(d: defaultdict) -> defaultdict[str, Any]:
• """Return a dict of equipment and the speeds they are travelling at."""
• df = pd.json_normalize(d, sep='_')
• temp = defaultdict(list)
• for item in d:
• df = pd.json_normalize(d[item], sep='_')
• diff = df.diff()
• coords = [c for c in df.columns if not 'timestamp' in c]
• df['speed'] = np.linalg.norm(diff[coords], axis=1)/diff['timestamp'].dt.seconds
• temp[item] = df[['timestamp', 'speed']]
• print(temp)
• pass