# Turner & Townsend backend assessment These programs need Python 3.10+ and pytest. Original assessment: https://github.com/turner-townsend/backend-assessment ## The Collatz Conjecture Takes numeric input and calculates the number of steps in the Collatz sequence needed to reach 1 ## Usage ```shell python collatz/collatz.py ``` ### Example ``` Please enter a whole number: 1 Result: 0 steps needed to reach 1 Please enter a whole number: 3 Step #1: odd, multiply by 3 and add 1 -> 10 Step #2: even, divide by 2 -> 5 Step #3: odd, multiply by 3 and add 1 -> 16 Step #4: even, divide by 2 -> 8 Step #5: even, divide by 2 -> 4 Step #6: even, divide by 2 -> 2 Step #7: even, divide by 2 -> 1 Result: 8 steps needed to reach 3 Please enter a whole number: 0 Result: 0 steps needed to reach 0 Please enter a whole number: !£$ ERROR: integer required ``` ## Tests ```bash pytest collatz ``` ## Roman Numerals A simple Roman numerals number converter ## Usage ```shell python roman/roman.py ``` ### Example ``` Please enter some Roman numerals: I I = 1 Please enter some Roman numerals: IV IV = 1 + 5 = 6 Please enter some Roman numerals: MCMXCIV MCMXCIV = 1000 + 100 + 1000 + 10 + 100 + 1 + 5 = 2216 Please enter some Roman numerals: !£$ ERROR: Invalid input ``` ## Tests ```bash pytest roman ``` ## Fifth Stack A simple stack-based language called Fifth ## Usage ```shell python stack/stack.py ``` ### Commands - `PUSH ` - push integer onto stack - `POP` - remove top element - `SWAP` - swap top two elements - `DUP` - duplicate top element - `+`, `-`, `*`, `/` - arithmetic operations - `EXIT` - quit ### Example ``` stack is [] PUSH 3 stack is [3] PUSH 11 stack is [3, 11] + stack is [14] DUP stack is [14, 14] PUSH 2 stack is [14, 14, 2] * stack is [14, 28] SWAP stack is [28, 14] / stack is [2] + ERROR: two numbers required POP stack is [] EXIT ``` ## Tests ```bash pytest stack ```