End-of-Line Trim

Level: Beginner 15–30 min

Concepts: StringsAlgorithms

Solutions: C# | TypeScript | Python


When editing text files often times one ends up putting extra spaces and tabs at the end of each line. Develop a simple algorithm to remove these extra characters. It shall take an input string and produce a right-trimmed output string.

Examples

InputOutput
”abc""abc"
"abc ""abc"
"abc\t""abc"
" abc"" abc” (does not remove beginning whitespace)
“ab\r\n cd \r\n""ab\r\ncd\r\n” (removes whitespace at end of second line)
“\r\n""\r\n”

Hint

Be sure to handle both Windows \r\n and Unix line endings \n

Reference Walkthrough

Reference implementations in C#, TypeScript, and Python live at tddbuddy-reference-katas/end-of-line-trim. This is an F1 kata — ten scenarios covering CRLF, LF, mixed line endings, whitespace-only lines, leading-whitespace preservation, and empty input — shared across all three languages, each a single pure function trim(input).

This kata ships in Agent Full-Bake mode at high gear: the rules land as one commit per language, with a brief walkthrough noting there are no builders because the inputs and outputs are the domain. A single left-to-right scan preserves each line’s original terminator (\r\n or \n) byte-for-byte while dropping its trailing space/tab run; a lone \r is treated as content, matching the TDD Buddy spec’s explicit Windows-and-Unix scope. See the repo’s Gears section for when high gear is the right call.


  • Katas Are Rehearsal, Not Performance
    You don't practice TDD on production code. You practice on katas and bring the muscle memory to production. The gap between knowing TDD and doing TDD is reps.
  • The Test Pyramid Was an Economic Argument
    The test pyramid was not a quality law. It was a cost structure: unit tests were cheap, integration tests were expensive, so you wrote many of the first and few of the second. Agents collapsed the cost of writing tests at every level, and the cheapest test that still tells the truth is the one that pins a seam the agent cannot fake.
  • Agents Pattern-Match Your Test Smells
    Test smells used to drift in at typing speed. Agents reproduce them at generation speed because they sample whatever is already in the suite. The smells in your codebase are now the smells in your roadmap.