A logbook for curious waters

Explorations

Algorithms

An algorithm is a sequence of steps for solving a problem. Change the input, follow the data, and watch each decision unfold.

Searching and pathfinding

Explore connections and discover routes through a weighted graph.

Open the pathfinding playground

Sorting

Put values in order and inspect every comparison, swap, and write.

Open the sorting playground

String matching

Locate every occurrence of a pattern and see how prefix reuse avoids repeated work.

Open the string matching playground

Number theory

Follow remainders, prime elimination, integer coefficients, and repeated squaring.

Open the number theory playground

Dynamic programming

Build answers from stored subproblems, then recover the choices behind an optimum.

Open the dynamic programming playground

Release journal

· Ten algorithms, four new families

Array search, string matching, number theory, and dynamic programming join the collection. Inspect search intervals, KMP prefix reuse, Euclidean identities, prime elimination, exact powers, Fibonacci dependencies, and knapsack choices.

· Five ways to sort

A new sorting family adds bubble sort, selection sort, insertion sort, merge sort, and quicksort. Compare the same input with reversible playback, item identities, operation counts, temporary merge storage, and highlighted pseudocode.

· Three new search strategies

Depth-first search reveals its call stack and backtracking. Bidirectional breadth-first search shows two queues and two predecessor trees. Greedy best-first search demonstrates what happens when remaining distance guides a search without considering the cost already paid.

· First expedition

Three graph-search algorithms share an editable map, reversible playback, live distances and predecessors, and highlighted pseudocode. Compare equal costs, weighted routes, and a destination that cannot be reached.