oliverklee/anagram-finder

A tool for finding anagrams from a list of words (as an exercise of test-driven development).

dev-main 2024-12-19 12:19 UTC

README

This tool is the result of an exercise (code kata, coding dojo) for test-driven development (TDD) for PHP using PHPUnit at Oliver Klee's workshops.

An anagram is pair of two words that consist of exactly the same letters, but in different order.

Example: anthologise, theologians

The dictionaries have been copied from the most-common-words-by-language project.

Installation

Run composer install to install the required Composer packages.

How to run it

bin/find-anagrams

You can also specify a dictionary to use from resources/dictionaries/:

bin/find-anagrams german.txt

The exercises

The big picture is this: "Find and output all anagrams from a text file with a list of words."

  1. Create a class that reads a list of words from a file and returns it as an array.
  2. Create a class that takes a word and sorts the characters.
  3. Create a class that finds and returns the anagram from an array of words.
  4. Deal with duplicates and empty lines in the file gracefully.
  5. Find the anagrams in a case-insensitive way.
  6. Sort the anagrams alphabetically during output.

About me (Oliver Klee)

I am the maintainer of the PHPUnit TYPO3 extension, which is available in the TYPO3 extension repository (TER).

You can book me for workshops at your company.

I also frequently give workshops at the TYPO3 Developer Days.

More Documentation

Other example projects