Recruiters nowadays use online timed tests when screening developers. I recently looked at Python & Algorithms Hard questions at TestDome. While the timing and hints seem to push towards* implementing tricks from scratch*, for the quality in long term it is better to *structure the problem and use established solutions (divide & conquer)*. The battery of „hard” problems can be solved in few lines of code, using the standard Python libraries (Numpy, Pandas, Collections).

**League Table (Hard)**

The task is to essentially sort the football results by multiple criteria: first by the higher number of scores, next (breaking ties) by the lower number of games, finally (breaking ties) by the default order. While the hint suggests building a custom comparator, the *effective way is by Pandas tables* (5 lines).

```
import pandas as pd
def player_rank(self, rank):
ts = []
ts = map(lambda t:(t[1][0],t[1][1]['score'],t[1][1]['games_played'],t[0]),enumerate(self.standings.items()))
df = pd.DataFrame(ts)
df = df.sort_values(by=[1,2,3],ascending=[False,True,True]).reset_index()
return df.loc[rank-1][0]
```

**Sorted Search (Hard)**

The task is to determine how many values in a sorted list are less than the given value. This is equivalent to finding the right position to insert (to maintain the sorted order). While the solution suggests playing with a variant of binary search on your own, the *effective way is by the Python bisect algorithm* (1 line).

```
from bisect import bisect_left
def count_numbers(sorted_list, less_than):
return bisect_left(sorted_list,less_than)
```

**Train Composition (Hard)**

The task is to implement a data structure that mimics composing the train: one can quickly attach and detach to/from both ends. The effective way is to use *Python double-ended queue* (5 lines).

```
from collections import deque
class TrainComposition:
def __init__(self):
self.d = deque()
def attach_wagon_from_left(self, wagonId):
self.d.appendleft(wagonId)
def attach_wagon_from_right(self, wagonId):
self.d.append(wagonId)
def detach_wagon_from_left(self):
return self.d.popleft()
def detach_wagon_from_right(self):
return self.d.pop()
```