Skip to content
CAI
Software that uses CAICheck a score

exercism/elixir

67.7

Adequate · 18 September 2026

8.6k

lines of production code

Elixir

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is the Elixir track for the Exercism programming platform, providing a structured curriculum for learning the language. It organizes content into concept exercises that teach specific language features—such as recursion, GenServers, and pattern matching—and practice exercises that apply these skills to algorithmic problems. The repository includes comprehensive tooling for validation, formatting, and static analysis to support both student learning and contributor workflows.

How it got here

2014–2021 — Elixir track initialization and curriculum expansion

123 changes.

This period established the foundational infrastructure for the Elixir track, including repository configuration, standardized tooling, and a v3 exercise structure. It focused on populating the curriculum with a comprehensive set of concept exercises covering core language features and adding numerous practice exercises with full test suites and reference solutions.

2022–2025 — expansion of concept and practice exercises

9 changes.

This period focused on significantly expanding the Elixir track's curriculum by introducing multiple new concept exercises covering behaviors, GenServers, regular expressions, bitstrings, and MapSets. Additionally, several new practice exercises were added to address specific programming challenges such as ledger refactoring and bit counting.

Features

Add 'House' practice exercise for the Exercism track

A new practice exercise titled 'House' has been added to the track. This exercise challenges users to implement the \House.recite/2\ function in Elixir to generate verses of the nursery rhyme 'This is the House that Jack Built'. The entry includes the full exercise scaffold, including the stub implementation in \lib/house.ex\, a comprehensive test suite in \test/house\_test.exs\ covering individual verses through the full rhyme, and supporting metadata and documentation files.

exercises/practice/house · high confidence

Add 'Mensch ärgere Dich nicht' concept exercise on streams

A new concept exercise titled 'Mensch ärgere Dich nicht' has been added to the curriculum, focusing on the \streams\ concept. The exercise requires learners to implement a dice-rolling simulation using lazy evaluation via \Stream.repeatedly\ and \Stream.transform\, building on prerequisites such as \enum\, \tuples\, \if\, \ranges\, and \randomness\. The provided solution demonstrates using \Enum.random\ for individual die rolls and composing them into a lazy stream that halts upon rolling a six.

exercises/concept/mensch-aergere-dich-nicht/.meta · high confidence

Add Bowling exercise with solution and test metadata

The Bowling practice exercise is now available, including the stub implementation in lib/bowling.ex, a reference solution in .meta/example.ex, and the test suite metadata in .meta/tests.toml. The solution implements the standard bowling scoring rules, handling strikes, spares, and bonus rolls, while the metadata defines the authorship, file structure, and specific test cases that validate the scoring logic.

exercises/practice/bowling/.meta · high confidence

Add Clock exercise stub and example solution

The Clock practice exercise now includes a starter stub in lib/clock.ex with defined structs and function signatures for new/2 and add/2, alongside a complete reference implementation in .meta/example.ex that handles time rollover logic. The exercise metadata in .meta/config.json and .meta/tests.toml have been added to define the solution file paths, authorship, and the full set of canonical test cases for time manipulation.

exercises/practice/clock/.meta, exercises/practice/etl/.meta · high confidence

Add Connect exercise stub and solution metadata

The Connect exercise is now available with a starter stub in lib/connect.ex for users to implement the game logic, alongside a reference solution in .meta/example.ex. Configuration files (.meta/config.json, .meta/tests.toml) define the exercise structure, test cases, and contributor metadata, while .formatter.exs and .gitignore set up the local development environment for the Elixir track.

exercises/practice/connect/.meta · high confidence

Add DNA Encoding concept exercise documentation

Introduced the 'dna-encoding' concept exercise, providing users with instructions to encode and decode nucleic acids into binary representations using Elixir's bitstrings and charlists. The package includes an introduction to tail-call recursion with accumulators, detailed instructions for implementing four functions (encoding/decoding single nucleotides and full charlists/bitstrings), and hints guiding users toward using code points, binary integer literals, and tail-recursive strategies.

(repo-wide) · high confidence

Add Eliud's Eggs exercise for Elixir

A new Elixir practice exercise, Eliud's Eggs, has been added. It challenges users to count the number of set bits (1s) in the binary representation of an integer, framed as counting eggs in a chicken coop. The entry includes the problem instructions, a stub implementation in \lib/eliuds\_eggs.ex\, a test suite in \test/eliuds\_eggs\_test.exs\, and a reference solution in \.meta/example.ex\.

exercises/practice/eliuds-eggs · high confidence

Add Elixir meetup exercise with type specifications

The meetup exercise now includes a .formatter.exs file for consistent code formatting, a .gitignore file to exclude build artifacts and dependencies, and a lib/meetup.ex module defining the Meetup module. The module provides type specifications for weekdays and schedules, and declares a meetup/4 function signature that accepts year, month, weekday, and schedule parameters to calculate meetup dates, though the implementation is currently empty.

exercises/practice/meetup · high confidence

Add Graph data structure and Dot macro stub for dot-dsl exercise

The dot-dsl exercise now includes a \Graph\ module that provides a data structure for managing nodes, edges, and attributes, along with methods to create graphs, add nodes and edges, and compare graph equivalence. A \Dot\ module with a \graph\ macro stub is also added to support the DSL syntax. These files establish the core API for the exercise, allowing students to implement the DSL functionality.

exercises/practice/dot-dsl · high confidence

Add Killer Sudoku Helper exercise for Elixir

A new practice exercise has been added to the Elixir track to help users practice combinatorial logic by solving Killer Sudoku cages. The entry point is the \KillerSudokuHelper\ module, which provides a \combinations/1\ function that calculates valid sets of distinct digits (1-9) for a given cage size and sum, while respecting excluded digits. The package includes a stub implementation in \lib/killer\_sudoku\_helper.ex\, a comprehensive test suite in \test/killer\_sudoku\_helper\_test.exs\ covering trivial single-digit cages, full 9-digit cages, and restricted combinations, along with an example solution and standard Exercism metadata files.

(repo-wide) · high confidence

Add POV exercise for reparenting trees and finding paths

Introduced the new 'pov' practice exercise, which challenges users to reparent a tree structure on a selected node and find paths between nodes. The entry includes the configuration metadata, a reference implementation using a zipper pattern for tree navigation, and a test suite covering scenarios such as rerooting trees with various sibling structures, handling deeply nested nodes, and managing error cases for nonexistent targets or sources.

exercises/practice/pov/.meta · high confidence

Add Pac-Man Rules concept exercise

A new concept exercise for Elixir has been added to teach boolean logic, including the use of \and/2\, \or/2\, and \not/1\ operators. The package includes a design document outlining learning objectives, an exemplar solution implementing Pac-Man game rules (such as eating ghosts and scoring), and configuration metadata for the exercise.

exercises/concept/pacman-rules/.meta · high confidence

Add Pac-Man Rules concept exercise documentation

The Pac-Man Rules concept exercise now includes structured documentation files: an introduction explaining Elixir's boolean type and idiomatic naming conventions (ending function names with \?\), detailed instructions for implementing four boolean logic functions (\eat\_ghost?\, \score?\, \lose?\, \win?\), and hints guiding users on using \and/2\, \or/2\, and \not/1\ operators. A template file (\introduction.md.tpl\) is also added to support dynamic content generation.

exercises/concept/pacman-rules/.docs · high confidence

Add Protein Translation exercise scaffold and example solution

The Protein Translation exercise is now available, providing a starter module with stubbed \of\_rna\ and \of\_codon\ functions for users to implement. An example solution is included in \.meta/example.ex\ to demonstrate the expected behavior, and the test suite defined in \tests.toml\ covers translation of RNA sequences into proteins, handling of STOP codons, and error cases for invalid or incomplete sequences.

exercises/practice/protein-translation/.meta · high confidence

Add RPN Calculator Inspection exercise stub and project configuration

The RPN Calculator Inspection concept exercise is introduced with a new project structure, including a \.formatter.exs\ for code formatting, a \.gitignore\ for standard Mix artifacts, and a \lib/rpn\_calculator\_inspection.ex\ stub. The stub defines the \RPNCalculatorInspection\ module with four unimplemented functions (\start\_reliability\_check/2\, \await\_reliability\_check\_result/2\, \reliability\_check/2\, and \correctness\_check/2\) that students must implement.

(repo-wide) · high confidence

Add Robot Simulator exercise scaffolding and example solution

The Robot Simulator practice exercise is now available, providing students with a starter module (\lib/robot\_simulator.ex\) containing stubbed functions for creating a robot, simulating movement instructions (R, L, A), and retrieving its position and direction. An example solution (\/.meta/example.ex\) is included to demonstrate a valid implementation, alongside configuration files (\config.json\, \tests.toml\) that define the test cases and file structure for the exercise.

exercises/practice/robot-simulator/.meta · high confidence

Add Series exercise boilerplate and project configuration

The Series exercise is now available in the practice directory, including the standard Mix project configuration files (.formatter.exs, .gitignore) and the solution stub (lib/string\_series.ex) which defines the StringSeries.slices/2 function for generating substrings.

exercises/practice/series · high confidence

Add Stack Underflow concept exercise

A new concept exercise titled 'Stack Underflow' has been added to the track, focusing on defining custom exceptions in Elixir. The exercise continues the context of a Reverse Polish Notation calculator, requiring learners to implement a \StackUnderflowError\ that handles context-specific messages, alongside a \DivisionByZeroError\. The provided solution demonstrates the use of the Exception behaviour, including the \exception/1\ callback for dynamic message construction and raising errors during division operations.

(repo-wide) · high confidence

Add Strain exercise metadata and example solution

The Strain practice exercise is now available with its configuration, including authors, contributors, and a blurb describing the task to implement \keep\ and \discard\ operations on collections. An example solution file (\example.ex\) is provided, demonstrating implementations of \keep\ and \discard\ using recursion without relying on \Enum.filter\ or \Enum.reject\. Additionally, a test configuration file (\tests.toml\) defines the specific test cases for both keeping and discarding elements from various collection types.

(repo-wide) · high confidence

Add Yacht dice game exercise

Introduced a new practice exercise for the Yacht dice game, providing the starter code, test suite, and example solution. Users can now complete the exercise by implementing the \score/2\ function to calculate scores for categories such as ones through sixes, full house, four of a kind, straights, choice, and yacht.

exercises/practice/yacht/.meta · high confidence

Add Zipper exercise scaffolding for binary tree navigation

The Zipper practice exercise now includes the necessary project structure and stub code for implementing a zipper data structure on binary trees. This adds a \BinTree\ module with a custom \Inspect\ implementation for readable test output, and a \Zipper\ module containing function stubs for navigating and modifying the tree (e.g., \from\_tree\, \to\_tree\, \value\, \left\, \right\, \up\, \set\_value\, \set\_left\, \set\_right\).

exercises/practice/zipper · high confidence

Add \`react\` practice exercise for implementing a reactive system in Elixir

A new practice exercise has been added to the Elixir track, requiring students to implement a basic reactive system using GenServers. The exercise involves creating input cells with settable values and compute cells that automatically propagate changes to dependent values, including support for registering and firing change notification callbacks. The entry includes the stub implementation in \lib/react.ex\, the test suite in \test/react\_test.exs\, and the reference solution in \.meta/example.ex\.

exercises/practice/react · high confidence

Add bird-count concept exercise for learning recursion

A new concept exercise named 'bird-count' has been added to the Elixir track. This exercise teaches users how to write and call recursive functions, process lists, and use pattern matching, guards, and multiple-clause functions. It includes a configuration file defining the solution, test, and exemplar files, a design document outlining learning objectives and prerequisites, and an exemplar solution demonstrating recursive implementations for tasks like counting birds, incrementing day counts, checking for days without birds, calculating totals, and counting busy days.

exercises/concept/bird-count/.meta · high confidence

Add book-store exercise with discount calculation logic

Introduces the new 'book-store' practice exercise, which challenges users to calculate the lowest price for a shopping basket of books based on a tiered discount system. The entry includes the configuration metadata, a canonical example solution implementing the discount algorithm, and the test suite definitions.

exercises/practice/book-store/.meta · high confidence

Add canonical metadata and example solution for the Change exercise

The Change exercise now includes a \.meta/config.json\ file that defines the authorship, contributors, and a blurb describing the task of determining the least number of coins to give as change. An example solution (\example.ex\) has been added to provide a reference implementation for the \Change.generate/2\ function, which returns either \{:ok, list\_of\_coins}\ or \{:error, "cannot change"}\. Additionally, \tests.toml\ has been created to map specific test cases (such as handling single coin changes, large targets, and error conditions) to the canonical problem specifications.

exercises/practice/change/.meta, exercises/practice/roman-numerals/.meta · high confidence

Add concept exercise for working with files

A new concept exercise named \newsletter\ has been added to the curriculum. This exercise guides users through working with the \File\ module, specifically covering \File.read\, \File.write\, \File.open\, and \File.close\, as well as using the \IO\ module for logging. The implementation involves reading email addresses from a file, sending them via a provided function, and logging successful sends to a separate log file.

exercises/concept/newsletter/.meta · high confidence

Add documentation and hints for the Remote Control Car exercise

The Remote Control Car concept exercise now includes its instructional materials. An introduction explains Elixir structs, including their definition with \defstruct\, field access, pattern matching, and the use of \@enforce\_keys\. The instructions guide users through implementing a struct-based car model with specific behaviors for initialization, distance tracking, battery management, and handling a dead battery state. Additionally, a hints file provides targeted advice on using structs, function clauses, and pattern matching to complete the exercise tasks.

exercises/concept/remote-control-car/.docs · high confidence

Add documentation for the new library-fees concept exercise

Added the \hints.md\, \instructions.md\, and \introduction.md\ files for the \library-fees\ exercise, which teaches users how to work with Elixir's \Date\, \Time\, and \NaiveDateTime\ modules to calculate late fees. The instructions specify a scenario for a library in Ghana (GMT, no DST) and guide the implementation of functions to parse ISO8601 strings, determine return windows based on checkout time, calculate days late, and apply a Monday discount. An \introduction.md.tpl\ template was also added to unify the introduction content with the \dates-and-time\ concept.

(repo-wide) · high confidence

Add example solution and metadata for Rail Fence Cipher

The Rail Fence Cipher exercise now includes a reference implementation (.meta/example.ex) that users can view to understand the expected solution structure, alongside a new .meta/config.json file defining the exercise's metadata (authors, source, blurb) and file paths. The .meta/tests.toml file has also been added to map specific test cases to their descriptions, ensuring the test suite is properly configured for this exercise.

exercises/practice/difference-of-squares/.meta, exercises/practice/rail-fence-cipher/.meta · high confidence

Add freelancer-rates concept exercise stub

The freelancer-rates concept exercise has been introduced, providing the initial project structure and stub file for learners. The lib/freelancer\_rates.ex module defines the FreelancerRates module with four functions—daily\_rate/1, apply\_discount/2, monthly\_rate/2, and days\_in\_budget/3—each containing a placeholder comment for implementation. Standard Elixir project configuration files (.formatter.exs and .gitignore) have also been added to support the exercise environment.

exercises/concept/freelancer-rates, exercises/concept/pacman-rules, exercises/practice/knapsack · high confidence

Add high-score concept exercise stub and configuration

The high-score concept exercise now includes a standard Elixir project structure, featuring a \.formatter.exs\ file for code formatting, a \.gitignore\ file to exclude build artifacts and dependencies, and a \lib/high\_score.ex\ stub. The stub defines the \HighScore\ module with empty implementations for functions \new/0\, \add\_player/3\, \remove\_player/2\, \reset\_score/2\, \update\_score/3\, and \get\_players/1\, providing the starting point for learners to implement the exercise logic.

exercises/concept/high-score · high confidence

Add ledger refactoring exercise

Introduced a new practice exercise that challenges users to refactor a poorly written ledger printer. The exercise requires rewriting the \format\_entries\ function in \lib/ledger.ex\ to correctly format financial entries based on currency (USD, EUR) and locale (American, Dutch), handling date formatting, number grouping, and description truncation while maintaining specific sorting rules.

exercises/practice/ledger · high confidence

Add log-parser exercise for learning Elixir regular expressions

A new concept exercise, log-parser, has been added to the curriculum. It focuses on teaching Elixir-specific regular expression usage, including the Regex module, the =\~ operator, string functions that accept regex, modifiers, captured groups, and sigils. The exercise includes configuration, design documentation outlining learning objectives and prerequisites, and an exemplar solution demonstrating how to validate log lines, split strings, remove artifacts, and tag lines with user names using regex patterns.

exercises/concept/log-parser/.meta · high confidence

Add new 'Chessboard' concept exercise for Elixir

A new concept exercise titled 'Chessboard' has been added to the Elixir track. This exercise is designed to teach learners about ranges, including how they are structs, how to enumerate them, and how to transform them into lists. The provided solution demonstrates generating rank and file ranges for a chessboard and converting them into appropriate data structures.

exercises/concept/chessboard/.meta, exercises/practice/affine-cipher · high confidence

Add new Point of View (POV) tree manipulation exercise

Introduces a new practice exercise for Elixir that challenges users to implement tree reparenting and path-finding logic. The \Pov\ module provides stub functions \from\_pov/2\ and \path\_between/3\ with specified return types (\{:ok, tree} \| {:error, atom}\ and \{:ok, \[any\]} \| {:error, atom}\), along with necessary project configuration files like \.formatter.exs\ and \.gitignore\ to support the new exercise structure.

exercises/practice/pov · high confidence

Add new concept exercise for generating Lucas numbers using streams

A new concept exercise, \lucas-numbers\, has been added to the curriculum to teach the use of streams. The exercise requires learners to implement the \generate/1\ function within the \LucasNumbers\ module to produce the Lucas number sequence. The package includes standard Elixir project scaffolding, such as \.formatter.exs\ and \.gitignore\, to support the learning environment.

exercises/concept/lucas-numbers · high confidence

Add new concept exercise for learning Elixir streams

A new concept exercise, 'lucas-numbers', has been added to help users learn about Elixir streams. The exercise requires students to generate the Lucas number sequence using stream operations, with design documentation outlining prerequisites such as enums, guards, and tuples, and providing an exemplar solution that demonstrates the implementation.

exercises/concept/lucas-numbers/.meta · high confidence

Add new concept exercises for DNA encoding, chessboard, and date parsing

Three new concept exercises have been added to the curriculum: DNA encoding, chessboard, and date parsing. The DNA encoding exercise introduces students to bitstrings with stubs for encoding and decoding nucleotides. The chessboard exercise focuses on ranges, providing stubs for generating rank and file ranges. The date parsing exercise covers pattern matching and capture, offering stubs for parsing day, month, and year components from various date formats. Each exercise includes standard Elixir project configuration files such as .formatter.exs and .gitignore.

exercises/concept/dna-encoding · high confidence

Add new practice exercise: Camicia

A new practice exercise for the Elixir track has been added, requiring users to simulate the 'Camicia' card game (based on Beggar-My-Neighbour). The \Camicia\ module provides a \simulate/2\ function that takes two player decks and returns the game status (\:finished\ or \:loop\) along with the total cards played and tricks collected. The exercise includes instructions, a stub implementation, a reference solution, and a comprehensive test suite covering various game scenarios including loops and different penalty card interactions.

(repo-wide) · high confidence

Add new-passport concept exercise for learning the \`with\` expression

A new concept exercise named \new-passport\ has been added to the Elixir track. This exercise is designed to teach users how to use the \with\ expression to handle success paths and specific errors, specifically focusing on chaining operations and using \else\ clauses for error handling within a bureaucratic simulation scenario.

exercises/concept/new-passport/.meta · high confidence

Add paint-by-number exercise for learning bitstrings

A new concept exercise, paint-by-number, has been added to the Elixir track. This exercise is designed to help learners understand bitstrings, including literals, the \\<\<\>\>\ special form, the \::\ binary size modifier, construction, and pattern matching. The provided solution demonstrates calculating palette bit sizes and manipulating bitstring pictures by prepending, retrieving, dropping, and concatenating pixels.

exercises/concept/paint-by-number/.docs, exercises/concept/paint-by-number/.meta · high confidence

Add reference implementation and metadata for Diffie-Hellman exercise

The Diffie-Hellman practice exercise now includes a reference solution in \.meta/example.ex\ that implements private key generation, public key calculation, and shared secret derivation using Erlang's \:crypto.mod\_pow\. Metadata in \.meta/config.json\ defines the exercise structure, authors, and blurb, while \.meta/tests.toml\ maps the canonical test cases to their descriptions.

exercises/practice/diffie-hellman/.meta · high confidence

Add reference solution and metadata for the Forth exercise

The Forth exercise now includes a canonical reference implementation in \.meta/example.ex\ and its associated metadata in \.meta/config.json\. The solution implements a stack-based evaluator supporting arithmetic operations (+, -, \*, /), stack manipulation (DUP, DROP, SWAP, OVER), and user-defined word definitions, along with case-insensitivity and proper error handling for stack underflow, division by zero, and unknown words. This provides a complete example for learners to compare against their own implementations.

exercises/practice/forth/.meta, exercises/practice/tournament/.meta, exercises/practice/twelve-days/.meta · high confidence

Add remote-control-car concept exercise for learning Elixir structs

A new concept exercise has been added to teach users about Elixir structs, including their definition, field initialization, and compile-time guarantees. The package includes the exercise configuration, design documentation outlining learning objectives, and an exemplar solution that demonstrates struct creation, pattern matching, and basic state management for a remote-controlled car.

exercises/concept/remote-control-car/.meta · high confidence

Add stack-underflow concept exercise scaffolding

The stack-underflow concept exercise now includes the necessary project structure for learners, featuring a .formatter.exs for code formatting, a .gitignore to exclude build artifacts, and a lib/rpn\_calculator/exception.ex file where students are prompted to implement DivisionByZeroError and StackUnderflowError.

exercises/concept/stack-underflow · high confidence

Add starter files and example solution for the All Your Base exercise

The All Your Base exercise now includes a complete set of metadata and source files. A new \.meta/example.ex\ provides the reference implementation for converting numbers between bases, while \.meta/config.json\ defines the file structure and authorship. The \.meta/tests.toml\ file maps the canonical test cases, and standard project scaffolding files (\.formatter.exs\, \.gitignore\) have been added to support local development. The \lib/all\_your\_base.ex\ stub remains as the starting point for students.

exercises/practice/all-your-base/.meta · high confidence

Add stub implementation and project configuration for the Kitchen Calculator exercise

The Kitchen Calculator concept exercise now includes a standard Mix project structure, featuring a \.formatter.exs\ for code formatting, a \.gitignore\ to exclude build artifacts, and a \lib/kitchen\_calculator.ex\ stub. The stub defines the \KitchenCalculator\ module with four functions (\get\_volume/1\, \to\_milliliter/1\, \from\_milliliter/2\, and \convert/2\) containing placeholder comments, providing the necessary starting point for learners to implement the volume conversion logic.

exercises/concept/kitchen-calculator · high confidence

Add stub implementations for list-ops and simple-linked-list exercises

The \list-ops\ and \simple-linked-list\ practice exercises now include stub source files (\lib/list\_ops.ex\ and \lib/linked\_list.ex\) that define the required module functions with empty bodies or placeholder comments, along with corresponding \.formatter.exs\ and \.gitignore\ files to support local development. This provides a starting point for learners to implement list operations (such as count, reverse, map, filter, fold, append, and concat) and a linked list data structure (including push, pop, peek, tail, and conversion methods) without relying on standard library functions like \Enum\ or \List\.

exercises/practice/list-ops · high confidence

Added Alphametics and Transpose exercise stubs

New exercise stubs for Alphametics and Transpose have been added to the practice directory. Each exercise now includes a dedicated \.formatter.exs\ for Elixir code formatting, a \.gitignore\ tailored to the Mix build environment, and a \lib/\<exercise\>.ex\ file containing the module definition, type specs, and documentation examples for the \solve\ and \transpose\ functions respectively.

exercises/practice/alphametics, exercises/practice/transpose · high confidence

Added Boutique Inventory concept exercise stub

A new concept exercise for Boutique Inventory has been added, providing a starter module with stubbed functions for sorting inventory by price, filtering items with missing prices, updating item names, increasing quantities, and calculating total quantities.

exercises/concept/boutique-inventory · high confidence

Added documentation and hints for the High Score concept exercise

The High Score concept exercise now includes a new hints.md file providing guidance on using Elixir's Map module functions (put, delete, update, keys) and an introduction.md file explaining maps and module attributes as constants. The instructions.md file has been updated to define the HighScore module functions (new, add\_player, remove\_player, reset\_score, update\_score, get\_players) and their expected behaviors, ensuring learners have the necessary context and support to complete the exercise.

(repo-wide) · high confidence

Added documentation for the 'Mensch ärgere dich nicht' concept exercise

New documentation files (instructions, hints, and introduction) have been added for the 'Mensch ärgere dich nicht' concept exercise. This exercise teaches users how to use Elixir's Stream module for lazy evaluation, covering tasks like simulating dice rolls, chaining stream operations, and using function capture for testability.

exercises/concept/mensch-aergere-dich-nicht/.docs · high confidence

Added documentation for the RPN Calculator concept exercise

The RPN Calculator exercise now includes structured documentation files (hints, instructions, and introduction) to guide users through implementing error handling in Elixir. The introduction explains the distinction between error-raising functions (ending in \!\) and those returning \{:ok, value}\ or \:error\, and details the \try .. rescue\ construct for handling exceptions. The instructions define three tasks: implementing a raw error-raising function, wrapping operations to return standard success/failure tuples, and passing error messages through rescue blocks. Hints provide specific guidance on using the \.\ operator for function invocation and pattern matching on error structs.

(repo-wide) · high confidence

Added initial exercise stubs for Accumulate and Flatten Array

New practice exercises for Accumulate and Flatten Array have been added to the track. Each exercise includes a standard Elixir project structure with \.formatter.exs\ and \.gitignore\ files, along with a module stub (\lib/accumulate.ex\ and \lib/flatten\_array.ex\) containing the function signature and documentation examples for users to implement.

exercises/practice/accumulate, exercises/practice/flatten-array · high confidence

Basketball Website exercise introduces Access Behaviour concepts

The Basketball Website concept exercise has been added to teach the Elixir Access Behaviour for extracting deeply nested data. The provided solution demonstrates using the access syntax (e.g., \data\[path\]\) to traverse data structures, while the design documentation clarifies that this approach differs from using \get\_in\ or static access operators, and notes limitations regarding structs.

exercises/concept/basketball-website/.meta · high confidence

Beer Song exercise metadata and example solution added

The Beer Song practice exercise now includes its configuration metadata and a reference example solution. A new config.json file defines the exercise's authors, contributors, source information, and the specific file paths for the solution, test, and example files. An example.ex file has been added to .meta, providing a complete implementation of the BeerSong module that handles verse generation for 0, 1, 2, and generic bottle counts, as well as lyrics generation for a range of verses. Additionally, a tests.toml file has been created to map specific test cases to their descriptions, ensuring the exercise's test suite is properly structured and documented.

(repo-wide) · high confidence

Custom Set exercise now includes an official example solution

The Custom Set practice exercise now provides an official reference implementation in \.meta/example.ex\, allowing users to view a working solution after completing the exercise. This change is accompanied by the addition of a \config.json\ file that defines the exercise metadata (including the blurb "Create a custom set type") and explicitly maps the solution, test, and example file paths, ensuring the exercise is properly configured for the v3 track structure.

exercises/practice/custom-set/.meta · high confidence

D&D Character exercise metadata and example solution added

The D&D Character exercise now includes a canonical example solution (\.meta/example.ex\) that implements the \DndCharacter\ module with functions to calculate ability modifiers and generate random characters, alongside a \config.json\ file defining the exercise's authors, source, and file structure. The \tests.toml\ file has been synchronized to map specific test cases for ability modifiers and character generation, ensuring the exercise aligns with the canonical problem specifications.

exercises/practice/dnd-character/.meta · high confidence

Grade-school exercise scaffold and example solution added

The grade-school practice exercise now includes a complete project structure with a \.formatter.exs\ for code formatting, a \.gitignore\ for Mix artifacts, and a \.meta/config.json\ defining the solution, test, and example file paths along with author metadata. A stub implementation (\lib/school.ex\) is provided for users to fill in, while the \.meta/example.ex\ contains the reference solution implementing the \School\ module with \new/0\, \add/3\, \grade/2\, and \roster/0\ functions. The test suite is defined in \.meta/tests.toml\, specifying which canonical test cases are included or excluded.

(repo-wide) · high confidence

Grep exercise now includes official example solution and metadata

The Grep practice exercise now provides an official reference implementation in \.meta/example.ex\, allowing users to view a complete solution after completing the exercise. This is accompanied by a new \.meta/config.json\ file that defines the exercise's metadata, including the blurb, source, and file paths, as well as a \tests.toml\ file that maps test cases to their descriptions. This change standardizes the exercise structure within the v3 track.

exercises/practice/grep/.meta · high confidence

Initial bank-account exercise scaffold for Elixir

The bank-account practice exercise has been added to the Elixir track, providing a starter project structure. This includes a \.formatter.exs\ for code formatting, a \.gitignore\ tailored for Mix artifacts, and the \lib/bank\_account.ex\ module containing the \BankAccount\ API. The module defines the \account\ opaque type and stubs the \open\, \close\, \balance\, \deposit\, and \withdraw\ functions with their respective specs, allowing users to implement the concurrent bank account logic.

exercises/practice/bank-account · high confidence

Initial release of the DNA Encoding concept exercise

A new concept exercise has been added to help learners understand bitstrings and tail-call recursion in Elixir. The package includes a configuration file defining the learning objectives, an exemplar solution demonstrating how to encode and decode DNA sequences using binary data, and a design document outlining the specific concepts (bitstrings, tail-call-recursion) and prerequisites (recursion, charlists, pattern-matching) covered.

(repo-wide) · high confidence

Initial setup for the Simple Cipher exercise

The Simple Cipher exercise has been added to the track, providing the scaffolding for users to implement a Vigenère cipher. This includes the stub implementation in lib/simple\_cipher.ex with encode, decode, and generate\_key functions, a corresponding test file, and an example solution in .meta/example.ex. The exercise metadata in .meta/config.json defines the file structure, authors, and blurb, while .meta/tests.toml specifies which test cases are included. A .formatter.exs file is also provided to ensure consistent code formatting for the exercise project.

exercises/practice/dominoes/.meta, exercises/practice/palindrome-products/.meta, exercises/practice/simple-cipher/.meta · high confidence

Initial setup of list-ops exercise metadata and example solution

The list-ops exercise is now fully configured with a new .meta/config.json file that defines the solution, test, and example file paths, along with contributor metadata and a blurb. An example solution (.meta/example.ex) has been added, implementing basic list operations (count, reverse, map, filter, foldl, foldr, append, concat) using recursive Kernel functions while avoiding external modules like Enum or List. The tests.toml file has been created to map canonical test cases, including specific handling for fold operations where some tests are marked as reimplemented or excluded.

exercises/practice/bob/.meta, exercises/practice/list-ops/.meta, exercises/practice/secret-handshake/.meta · high confidence

Initial track setup and configuration

The Elixir track has been initialized with a complete configuration structure, including \config.json\ defining the track's exercises, concepts, and metadata. Development tooling is established via \.formatter.exs\ (integrating Markdown and Doctest formatters), \.dialyzer\_ignore.exs\ for static analysis, and \.prettierrc\ for document formatting. Essential documentation files such as \README.md\, \CONTRIBUTING.md\, \HELLO.md\, and \CODE\_OF\_CONDUCT.md\ are added to guide contributors, alongside standard repository files like \LICENSE\ and \.gitignore\.

(repo-wide) · high confidence

Initialize nth-prime exercise with solution and metadata

The nth-prime exercise is now available with a complete starter structure. A solution example has been added at .meta/example.ex, and the exercise metadata (config.json) defines the file paths, blurb, and authorship. Test cases are specified in tests.toml, and standard Elixir project files (.formatter.exs, .gitignore) are included to support local development.

exercises/practice/nth-prime/.meta · high confidence

Introduce Name Badge concept exercise

Added the 'Name Badge' concept exercise to the Elixir track, providing configuration, design documentation, and an exemplar solution. This exercise teaches learners about \nil\, truthiness, pattern matching, and the \if\ macro by implementing a function that formats employee name badges, including handling optional department names.

exercises/concept/name-badge/.meta · high confidence

Introduce Take-A-Number concept exercise for learning Elixir processes

A new concept exercise has been added to teach users about Elixir processes, PIDs, and the \Process\ module. The package includes a configuration file defining the solution and test paths, a design document outlining learning objectives and prerequisites, and an exemplar solution that implements a simple process-based number machine using \spawn\ and message passing.

exercises/concept/take-a-number/.meta · high confidence

Kitchen Calculator concept exercise added

A new concept exercise for the Elixir track has been introduced, focusing on teaching tuples and pattern matching. The exercise requires learners to implement a module that converts common US baking measurements (cups, fluid ounces, teaspoons, tablespoons) to and from milliliters using tuple-based data structures. The provided metadata and design documentation outline the specific learning objectives, prerequisites, and the expected solution structure.

exercises/concept/kitchen-calculator/.meta · high confidence

Leap year exercise metadata and example solution added

The Leap exercise now includes a \.meta\ directory containing \config.json\, \example.ex\, and \tests.toml\. The configuration file defines the exercise metadata, including authors, contributors, source information, and the specific files for the solution, test, and example implementations. The \example.ex\ file provides a reference implementation for determining leap years, while \tests.toml\ lists the canonical test cases that validate the logic for common and leap years.

exercises/practice/leap/.meta · high confidence

New 'Top Secret' concept exercise for learning AST manipulation

A new concept exercise named 'Top Secret' has been added to the Elixir track, focusing on the Abstract Syntax Tree (AST). This exercise teaches users how to parse strings into ASTs, understand their structure, and traverse them using \Macro.prewalk\. The solution involves decoding secret messages by extracting function names and arities from the AST, providing practical experience with Elixir's metaprogramming foundations without requiring knowledge of macros or quote/unquote.

exercises/concept/top-secret/.meta · high confidence

New Boutique Inventory concept exercise added

A new concept exercise for the Boutique Inventory track has been introduced, designed to teach the use of the Enum module (including map, reduce, and sort\_by) and the Enumerable protocol. The release includes the exercise configuration, design documentation outlining learning objectives and prerequisites, and an exemplar solution demonstrating the expected implementation patterns.

exercises/concept/boutique-inventory/.meta · high confidence

New City Office concept exercise for Elixir documentation and typespecs

Adds a new concept exercise, 'City Office', which guides users through writing module and function documentation (\@moduledoc\, \@doc\) and type specifications (\@spec\) in Elixir. The exercise includes a starter implementation in \lib/form.ex\ with functions for handling form fields, along with comprehensive instructions, hints, and an introduction covering types, custom types, and documentation syntax.

exercises/concept/city-office/.docs · high confidence

New Elixir track tooling and CI scripts

The repository now includes a comprehensive set of shell and Elixir scripts in the bin/ directory to support the track's development workflow. These scripts automate the bootstrapping of new practice exercises, validate code formatting and autogenerated files, check concept coverage and exercise ordering, run the Dialyzer static analysis tool, and execute the full test suite against example solutions. A new script also fetches the latest version of the configlet tool, ensuring consistent tooling across environments.

bin · high confidence

New SGF parsing practice exercise for Elixir

A new practice exercise has been added for parsing Smart Game Format (SGF) files in Elixir. The \SgfParsing\ module provides a \parse/1\ function that accepts an encoded SGF string and returns either a parsed \Sgf\ tree structure or an error message. The exercise includes standard Elixir project scaffolding, such as a \.formatter.exs\ for code formatting and a \.gitignore\ file to exclude build artifacts and dependencies.

exercises/concept/high-score/.meta, exercises/concept/need-for-speed, exercises/practice/sgf-parsing · high confidence

New Top Secret exercise for learning Elixir ASTs

Added a new concept exercise, 'Top Secret', which teaches users how to work with Elixir's Abstract Syntax Tree (AST). The exercise requires implementing functions to convert code strings into ASTs, parse specific AST nodes to extract function names based on arity, and handle function definitions with guards, effectively introducing metaprogramming concepts like quoting and macro traversal.

exercises/concept/top-secret/.docs · high confidence

New concept exercise \`dancing-dots\` for learning Elixir behaviours and the \`use\` macro

A new concept exercise, \dancing-dots\, has been added to teach users how to define and use Elixir behaviours, including defining callbacks, providing default implementations with \@impl\, and using the \use\ macro. The exercise includes configuration files, design documentation outlining learning objectives, and an exemplar solution demonstrating how to implement the \DancingDots.Animation\ behaviour with modules like \DancingDots.Flicker\ and \DancingDots.Zoom\.

exercises/concept/dancing-dots/.meta · high confidence

New concept exercise \`dancing-dots\` introducing Elixir behaviours

A new concept exercise named \dancing-dots\ has been added to the track. This exercise teaches the use of Elixir behaviours, providing a \DotGroup\ module that demonstrates how to apply a list of animations to a group of dots via callback functions like \init/1\ and \handle\_frame/3\. The exercise includes stub modules (\DancingDots.Animation\, \DancingDots.Flicker\, \DancingDots.Zoom\) for learners to implement, along with a \Dot\ struct and standard project configuration files.

exercises/concept/dancing-dots · high confidence

New concept exercise for learning Elixir MapSets

Added the 'gotta-snatch-em-all' concept exercise, which teaches users how to use Elixir's \MapSet\ module for managing unique collections of trading cards. The exercise includes instructions, hints, and a stub implementation for functions that create, modify, and query sets, such as adding cards, trading, removing duplicates, and finding intersections or unions across multiple collections.

exercises/concept/gotta-snatch-em-all · high confidence

New concept exercise for library fees and date handling

Added a new concept exercise, \library-fees\, which introduces users to date and time manipulation in Elixir. The exercise provides a stub module with functions for parsing datetime strings, checking if a time is before noon, calculating return dates, determining days late, checking for Mondays, and calculating late fees. The addition includes standard project configuration files like \.formatter.exs\ and \.gitignore\ to support the exercise structure.

exercises/concept/library-fees · high confidence

New concept exercise: New Passport

Added a new concept exercise for the \with\ special form. The exercise guides users through implementing a passport renewal workflow that chains multiple function calls (\enter\_building\, \find\_counter\_information\, \stamp\_form\, \get\_new\_passport\_number\) and handles various outcomes, including happy paths and specific error cases like coffee breaks or closed offices.

exercises/concept/new-passport/.docs · high confidence

New concept exercise: Take-A-Number Deluxe for learning GenServers

A new concept exercise, \take-a-number-deluxe\, has been added to teach the use of GenServers in Elixir. This exercise guides users through implementing an embedded system for a 'Take-A-Number' machine, covering key GenServer concepts such as state management, callbacks (\init\, \handle\_call\, \handle\_cast\, \handle\_info\), timeouts, and error handling. The provided solution demonstrates best practices for structuring a GenServer-based application.

exercises/concept/take-a-number-deluxe/.meta · high confidence

New concept exercise: take-a-number-deluxe

Added a new concept exercise, \take-a-number-deluxe\, which guides users in implementing a GenServer-based number queue system. The exercise provides stubs for client API functions (\start\_link\, \report\_state\, \queue\_new\_number\, \serve\_next\_queued\_number\, \reset\_state\) and server callbacks in \lib/take\_a\_number\_deluxe.ex\, along with supporting modules for queue management (\TakeANumberDeluxe.Queue\) and state handling (\TakeANumberDeluxe.State\) that include validation logic and queue operations.

(repo-wide) · high confidence

New practice exercise for counting ASCII rectangles

A new practice exercise has been added for the \rectangles\ track, providing a starter module \Rectangles\ with a \count/1\ function stub intended to count ASCII rectangles in a string input. The exercise includes standard Elixir project configuration files, such as \.formatter.exs\ for code formatting and \.gitignore\ to exclude build artifacts and dependencies.

exercises/practice/rectangles · high confidence

Pascal's Triangle exercise metadata and example solution added

The Pascal's Triangle practice exercise now includes a canonical example solution in \.meta/example.ex\ and a structured configuration file (\config.json\) that defines the exercise's metadata, including authors, contributors, file paths, and a blurb. A \tests.toml\ file has also been added to map specific test cases to their descriptions, enabling better test selection and validation for learners.

exercises/practice/pascals-triangle/.meta · high confidence

Poker exercise solution and metadata added

The Poker practice exercise now includes a reference solution in \.meta/example.ex\ and configuration metadata in \.meta/config.json\. The solution implements the \best\_hand/1\ function to determine the highest scoring poker hand from a list, handling standard hand rankings (from high card to straight flush) and tie-breaking rules, including support for multiple decks and Ace-low straights. The metadata file defines the exercise's blurb, source, and file structure for the track.

exercises/practice/hexadecimal/.meta, exercises/practice/poker/.meta · high confidence

Scale Generator exercise scaffold and solution metadata added

The Scale Generator exercise now includes its complete project structure and metadata. This adds the \.meta/config.json\ file defining the exercise's authors, contributors, and file paths, alongside the \.meta/example.ex\ solution file that implements the \ScaleGenerator\ module (including functions for chromatic scales, flat scales, and pattern-based scale generation). The stub file \lib/scale\_generator.ex\ is provided with function signatures and documentation for users to implement, while \tests.toml\ maps the test cases to the problem specification, and standard Elixir configuration files (\.formatter.exs\, \.gitignore\) are included to support the local development environment.

exercises/practice/scale-generator/.meta · high confidence

Standardize exercise metadata and provide reference solutions

The run-length-encoding and scrabble-score exercises now include .meta/config.json files that define authors, contributors, file paths, and descriptions, alongside new .meta/example.ex files that provide official reference implementations for each exercise.

exercises/practice/run-length-encoding/.meta, exercises/practice/scrabble-score/.meta · high confidence

Behavioural changes

2 commits (0 fixes) modifying exercises/concept/file-sniffer/assets

A change to existing behaviour in exercises/concept/file-sniffer/assets — 2 commits, 6 files.

exercises/concept/file-sniffer/assets · medium confidence · unverified

Add documentation and hints for the freelancer-rates exercise

The freelancer-rates exercise now includes structured documentation files: instructions.md defines the four tasks (calculating daily rate, discounted price, monthly rate, and workdays in budget), introduction.md explains Elixir integers and floats, hints.md provides guidance on relevant Kernel and Float functions, and introduction.md.tpl serves as a template for concept integration.

exercises/concept/freelancer-rates/.docs · high confidence

Bank Account exercise updated with Elixir-specific GenServer implementation and test configuration

The Bank Account exercise now provides an example solution using Elixir's GenServer to handle concurrent transactions, replacing previous approaches that did not leverage process isolation. The \.meta\ directory has been restructured to include a \config.json\ defining the solution, test, and example file paths, a \tests.toml\ mapping specific test cases (including those for concurrency and error handling), and a \design.md\ explaining why certain state-transition tests (like reopening accounts) are skipped in this language. Users will now see an example implementation that manages account state via process messages, ensuring correct behavior for open, close, balance, deposit, and withdraw operations in a concurrent environment.

exercises/practice/bank-account/.meta · high confidence

Exercises relocated to exercises/practice directory

The existing exercise stubs, including their Elixir module files, formatter configurations, and gitignore rules, have been moved into the exercises/practice directory. This reorganization structures the repository to clearly separate practice exercises from other content.

(repo-wide) · high confidence

File Sniffer exercise documentation and hints added

The File Sniffer concept exercise now includes dedicated documentation files: \instructions.md\ defines the task of verifying file uploads by matching extensions and binary signatures against media types, \introduction.md\ explains Elixir's binary data handling and pattern matching, and \hints.md\ provides guidance on using pattern matching and binary literals. These files replace the previous inline or template-based documentation structure for this exercise.

exercises/concept/bird-count/.docs, exercises/concept/file-sniffer/.docs, exercises/concept/log-level/.docs · high confidence

File Sniffer exercise now returns nil for unknown file types

The File Sniffer concept exercise has been updated to handle unknown file inputs gracefully. The solution logic now returns \nil\ when a file extension or binary signature is not recognized, rather than raising an error or returning a default value. This change ensures that the exercise correctly tests pattern matching on binary data and edge cases where the file format cannot be identified.

exercises/concept/file-sniffer/.meta · high confidence

Gigasecond exercise metadata and example solution standardized

The Gigasecond exercise metadata has been updated to align with the v3 track structure. A new config.json file now explicitly defines the solution, test, and example file paths, lists the authors and contributors, and includes the exercise blurb and source information. The example solution has been moved to .meta/example.ex, and the tests.toml file has been regenerated to reflect the current test specifications, including the exclusion of the 'does not mutate the input' test case.

exercises/practice/gigasecond/.meta · high confidence

Hello World exercise stub now returns incorrect output

The starter code for the Hello World exercise in the \lib/hello\_world.ex\ file has been changed to return "Goodbye, Mars!" instead of the expected "Hello, World!". This behavioral change in the provided stub will cause tests to fail immediately upon running them, requiring users to manually correct the return value to complete the exercise.

exercises/practice/hello-world/.meta · high confidence

Lasagna exercise documentation restructured with new hints and introduction

The Lasagna concept exercise documentation has been reorganized to improve clarity and consistency. A new hints.md file has been added, providing specific guidance for each of the five tasks, including references to Elixir functions, integers, strings, and operators. The instructions.md file has been updated to clearly define the expected functions (expected\_minutes\_in\_oven, remaining\_minutes\_in\_oven, preparation\_time\_in\_minutes, total\_time\_in\_minutes, alarm) with their arguments and return values. The introduction.md file has been expanded to cover basics like variables, modules, named functions, arity, naming conventions, the standard library, and code comments, with a new introduction.md.tpl template file added to unify introduction contents across exercises.

exercises/concept/lasagna/.docs · high confidence

Lasagna exercise migrated to v3 concept structure

The Lasagna exercise has been restructured for the v3 curriculum, moving from a practice exercise to a concept exercise focused on 'basics'. The configuration now uses the 'exemplar' file for solution references instead of 'example', and includes a specific blurb describing the learning objectives. The design documentation has been updated to reflect the new scope, emphasizing variables, functions, and basic data types, while the analyzer rules have been refined to check for specific function calls within the solution.

exercises/concept/lasagna/.meta · high confidence

Lasagna exercise scaffold updated with formatter and gitignore

The Lasagna concept exercise now includes a \.formatter.exs\ file to enforce consistent code formatting via \mix format\, and a \.gitignore\ file to exclude build artifacts and dependencies. The main source file \lib/lasagna.ex\ has been updated to use polite instructional comments (replacing 'TODO:') for the functions students need to implement.

exercises/concept/lasagna · high confidence

Markdown exercise scaffold and solution updated

The Markdown practice exercise now includes a complete solution implementation in .meta/example.ex, which parses Markdown syntax (headers, bold, italic, lists) into HTML. The exercise metadata in .meta/config.json has been updated to define the solution, test, and example file paths, and includes contributor information. A new .formatter.exs file configures the Mix project for code formatting, and a .gitignore file excludes standard Elixir build artifacts. The test suite in tests.toml has been synchronized with canonical data, including specific test cases for various header levels, list handling, and edge cases like h7 headers being treated as paragraphs.

exercises/practice/markdown/.meta · high confidence

RPN Calculator exercise updated to use exemplar and new error-handling concepts

The RPN Calculator concept exercise has been restructured to align with the new v3 exercise format. The configuration now points to a dedicated exemplar solution file instead of the previous example structure, and includes a specific icon and blurb. The exercise design has been updated to focus on learning objectives for errors, raising, rescuing, and the \!\ suffix convention, while explicitly excluding exception definitions and \throw\/\catch\. The provided exemplar solution demonstrates these concepts by implementing \calculate!\, \calculate\, and \calculate\_verbose\ functions that handle operations using \try-rescue\ blocks.

exercises/concept/rpn-calculator/.meta · high confidence

Resistor Color exercise updated to use atoms and a single code function

The Resistor Color exercise has been refactored to align with the \resistor-color-duo\ and \resistor-color-trio\ exercises by removing the \colors\ function and requiring students to implement a \code/1\ function that accepts an atom (e.g., \:black\) and returns its corresponding integer value. The provided stub in \lib/resistor\_color.ex\ and the example solution in \.meta/example.ex\ now use a map keyed by atoms, and the test configuration in \.meta/tests.toml\ explicitly excludes the \Colors\ test case to reflect this behavioral change.

exercises/practice/resistor-color/.meta · high confidence

Space Age exercise now returns errors for invalid planets

The Space Age exercise has been updated to handle invalid input gracefully. Instead of crashing or returning undefined behavior, the \SpaceAge.age\_on/2\ function now returns an \{:error, "not a planet"}\ tuple when a planet name that is not one of the eight solar system planets is provided. This change aligns the exercise with the canonical test suite, which includes a specific test case for this error condition, and ensures users learn to implement proper error handling for unexpected inputs.

exercises/practice/space-age/.meta · high confidence

Standardize concept exercise stubs with formatter configs and comment-based instructions

Concept exercises now include .formatter.exs files to enforce consistent code formatting via mix format, and their lib stubs use comments instead of RuntimeErrors to guide implementation. This change improves the development experience by ensuring code style consistency and providing clearer, non-executing instructions for students.

(repo-wide) · high confidence

Standardize exercise stubs with Mix project structure and charlist syntax

The Hamming, Nucleotide Count, and RNA Transcription exercises have been updated to use the new charlist syntax (e.g., \~c"...") in their documentation examples and type specifications. Additionally, each exercise now includes a standard Mix project structure, featuring .formatter.exs for code formatting, .gitignore files tailored to the specific package name, and lib stubs that define the module interfaces for users to implement.

exercises/practice/hamming, exercises/practice/nucleotide-count, exercises/practice/rna-transcription · high confidence

Standardized default README template for Elixir exercises

A new default template for exercise READMEs has been introduced, providing a consistent structure for students. This template includes the exercise description, specific instructions for running tests using \mix test\, and guidance on handling pending tests (unskipping via \@tag :pending\ or \ExUnit.configure\). It also links to available resources and includes sections for source credits and submitting incomplete solutions, ensuring a uniform onboarding experience across Elixir exercises.

config · high confidence

Update concept exercise stubs to use comments instead of RuntimeErrors

The stub files for several concept exercises (including bird-count, community-garden, german-sysadmin, mensch-aergere-dich-nicht, name-badge, take-a-number, and wine-cellar) have been updated to replace RuntimeErrors with descriptive comments. This change improves the learning experience by providing clearer guidance on what needs to be implemented, rather than throwing errors when the stub code is run.

(repo-wide) · high confidence

Updated documentation for the RPG Character Sheet exercise

The documentation for the Elixir RPG Character Sheet exercise has been refreshed to align with the new IO concept. The introduction now explicitly covers \IO.puts\, \IO.write\, \IO.gets\, and \IO.inspect\ with examples. Hints have been added to guide learners through implementing the five steps (welcome, ask name, class, level, and combine) using standard IO functions and string manipulation. A new debug guide explains that IO tests require capturing output, making \IO.inspect\ debugging unavailable for this specific exercise.

exercises/concept/high-school-sweetheart/.docs, exercises/concept/language-list/.docs, exercises/concept/rpg-character-sheet/.docs · high confidence

Updated dot-dsl exercise configuration and example solution

The dot-dsl practice exercise now includes a dedicated .meta/config.json file that defines the file structure (solution, test, example, and editor files) and provides metadata such as the blurb and source attribution. Additionally, the example solution has been moved to .meta/example.ex, implementing the Dot module with a macro-based DSL to construct graphs, nodes, and edges using the Graph API.

exercises/practice/dot-dsl/.meta · high confidence

Updated metadata and example solution for Sum of Multiples exercise

The Sum of Multiples exercise metadata has been refreshed to align with the latest canonical data. The .meta/config.json file now explicitly lists authors, contributors, and the specific file paths for the solution, test, and example files, along with a blurb and source attribution. A new .meta/example.ex file provides a reference implementation for the exercise. Additionally, the tests.toml file has been updated to include all canonical test cases, ensuring that learners are tested against the complete set of requirements, including edge cases like factors of zero and large limits.

exercises/practice/flatten-array/.meta, exercises/practice/hamming/.meta, exercises/practice/sum-of-multiples/.meta · high confidence

Wordy exercise metadata and example solution added

The Wordy practice exercise now includes its canonical metadata configuration, an example solution, and a synchronized test manifest. The new config.json defines the exercise's blurb, source, and file structure, while the example.ex file provides a reference implementation for parsing and evaluating simple math word problems. The tests.toml file has been updated to reflect the current canonical test suite, ensuring that the exercise's test cases are aligned with the official problem specifications.

exercises/practice/luhn/.meta, exercises/practice/triangle/.meta, exercises/practice/wordy/.meta · high confidence

Test coverage

Add initial test suite for the Rational Numbers exercise; Add test helper for stack-underflow exercise; Add test suite for Community Garden concept exercise; Added Pig Latin exercise tests for Elixir; Added test helper to configure ExUnit and load example files; Added test suite for Boutique Inventory concept exercise; Added test suite for D&D character generation; Added test suite for Hamming distance exercise; Added test suite for Pascal's Triangle exercise; Added test suite for the Point of View exercise; Added test suite for the Sieve of Eratosthenes exercise; Added test suite for the new Affine Cipher practice exercise; Added test suites for Beer Song and Collatz Conjecture exercises; Added test suites for multiple practice exercises; Added tests for RPN Calculator exception handling; Added tests for RPN Calculator output handling; Added tests for the Mensch Ärgere Dich Nicht concept exercise; Added tests for the RPN Calculator Inspection concept exercise; Added tests for the take-a-number-deluxe GenServer exercise; Initial test suite for the RPN Calculator concept exercise.

Dependencies

Standardized Mix project configurations for exercises

Concept and practice exercises now include standardized mix.exs files, providing a consistent build environment for learners. These files define the application structure, set the version to 0.1.0 (with one exception at 1.0.0), and configure the project to start as permanent in production. Most exercises have a commented-out Elixir version requirement, while concept exercises omit this constraint entirely, ensuring a uniform starting point for all tracks.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 68.

Lenses

  • Code Health 98
  • Architecture 89
  • Maturity 52
  • Readiness 73
  • Security 90

Changes since last survey

  • 300 commits — 280 feature/other, 20 fixes

By area

  • exercises/practice — 141 commits
  • .github/workflows — 63 commits
  • exercises/concept — 57 commits
  • (root) — 13 commits
  • concepts/bitstrings — 2 commits
  • concepts/structs — 2 commits
  • .github/dependabot.yml — 1 commit
  • bin/check_autogenerated_files.sh — 1 commit
  • bin/check_formatting.sh — 1 commit
  • bin/fetch-configlet — 1 commit
  • bin/generate_practice_exercise.sh — 1 commit
  • bin/test_exercises.sh — 1 commit
  • concepts/access-behaviour — 1 commit
  • concepts/basics — 1 commit
  • concepts/binaries — 1 commit
  • concepts/bit-manipulation — 1 commit
  • concepts/enum — 1 commit
  • concepts/errors — 1 commit
  • concepts/floating-point-numbers — 1 commit
  • concepts/if — 1 commit

Notable commits

  • fix: Elixir - Language List - Fixed a shallow test (#1399)
  • fix: Fix AllYourBase to follow problem specs (#1370)
  • fix: Fix LSP dialyzer errors due to invalid Clock type (#1604)
  • fix: Fix Map.fetch return value (#1352)
  • fix: Fix printf usage with strings containing variables (#1335)
  • fix: Fix a wrong function signature (#1441)
  • fix: Fix binary shortcut notation name and link in hints (#1561)
  • fix: Fix dead links to hexdocs.pm (#1327)
  • fix: Fix decimal to binary youtube link (#1411)
  • fix: Fix failing link checks (#1558)
  • fix: Fix grammatical issue in introduction.md (#1412)
  • fix: Fix hint in kitchen calculator (#1496)
  • fix: Fix isbn_verifier test differs from problem-specifications (#1249)
  • fix: Fix misleading type_from_binary instructions in file-sniffer (#1638)
  • fix: Fix types in complex numbers (#1467)
  • fix: fix nth-prime typespec (#1634)
  • fix: fix(bottle-song): allow 0 as parameter in quantifier/1 and bottle/1 typespecs (#1375)
  • fix: fix(german-sysadmin): refer to diacritics as non-ASCII letters (#1645)
  • fix: fix: pin plot_2 in order to check equality (#1360)
  • fix: saddle-points: Fix row values in instructions (#1312)
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

exercism/elixir was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 18 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 29fb0ae99e6e37aa6433078eddf6694351b6ddde — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-5d04157a340d.