А какая цель задачи? Именно TDD нужно? Или просто maintainability and low-level architecture? Могу структуру накидать, лень имплементацию делать.
изначально это учебная задача для отработки навыков tdd но щас трансформировалось в одну из задач напокодить. в текущей компании кодинг интервью оч не организовано, нет общих требований, я лично меряю:
1) взаимодействие кандидата, как понял задачу, какие вопросы задавал
2) как быстро решил\не решил
3) использовал ли tdd и если нет - какие unit тесты были
4) задача с первого раза решена корректно? (имеется ввиду случаи если кандидат сказал что решил, но там например не полностью решено или баг какой очевидный)
5) дальше по оформлению кода, переменных и взаимодействию с собеседующими