53 lines
1.8 KiB
Markdown
53 lines
1.8 KiB
Markdown
# Turner & Townsend backend technical assessment
|
|
|
|
This repository contains my solutions to the Turner & Townsend backend technical assessment. While the brief requested solving only one problem, I started with the "spiciest" Stack task for the first hour and then tackled the other two tasks in the second hour. I did come back the next day and spend some extra time improving the README documentation.
|
|
|
|
## Solutions
|
|
|
|
### [Stack Calculator](./stack/README.md)
|
|
|
|
**Complexity: Medium**
|
|
|
|
A stack-based programming language interpreter (Fifth) that supports arithmetic operations and stack manipulation commands. Features an interactive REPL with comprehensive error handling.
|
|
|
|
### [Roman Numerals Converter](./roman/README.md)
|
|
|
|
**Complexity: Medium**
|
|
|
|
Converts Roman numerals to Arabic numbers using additive logic. Includes flexible input handling with case-insensitive processing and automatic filtering of invalid characters.
|
|
|
|
### [Collatz Conjecture Calculator](./collatz/README.md)
|
|
|
|
**Complexity: Low**
|
|
|
|
Calculates the number of steps in the Collatz sequence (3n + 1 problem) with step-by-step visualization. Demonstrates mathematical algorithm implementation with interactive feedback.
|
|
|
|
## Architecture
|
|
|
|
All three solutions follow consistent design principles:
|
|
|
|
- Class-based structure for encapsulation and testability
|
|
- Interactive command-line interfaces with graceful error handling
|
|
- Comprehensive test suites with good coverage
|
|
- Modern Python features and best practices
|
|
|
|
## Quick Start
|
|
|
|
**Requirements:** Python 3.10+, pytest
|
|
|
|
```bash
|
|
# Install dependencies
|
|
pip install -r requirements.txt
|
|
|
|
# Run solutions
|
|
cd stack && python stack.py
|
|
cd roman && python roman.py
|
|
cd collatz && python collatz.py
|
|
|
|
# Run tests
|
|
pytest # All tests
|
|
pytest stack/ # Individual solution tests
|
|
```
|
|
|
|
Click the links above to view detailed documentation for each solution.
|