/kata-machine

DSA's

Primary LanguageTypeScript

Developed live on twitch

ThePrimeagen

Naming

Lig-Machine

Lengthy Instrumentation Generating Massive Anticompetitive Computational Help for Intermediate Coders // n9

Ligmata

Literal Improvement Gaining Master and Tutelage on Algorithms Let's Intelligently Generate Multiple Algorithm Training Assessments // permdaddy

Sugma Nuts

Studious Users Get Major Abilities. New Useful Training for Students

Ligma Farts

Learn Intermediate Groundbreaking Massive Algorithms. Free Algorithm Research & Training System

If you have a suggestion

make an issue and we will come up with the potential name.

WARNING

I have just started to add algorithms, so the number of supported algorithms is limited at the moment, but will grow fairly quick.

WARNING

OUT OF DATE. We have quite a few more. need to update

Supported Algorithm

  • Insertion sort
  • Merge sort
  • QuickSort
  • Prim's MST (Adjacency List)
  • Dijkstra's Shortest Path (Adjacency List)

Supported Data Structures

  • Singly linked list
  • Doubly linked list
  • Queue
  • Stack
  • Graph with Adjacency List
  • Graph with Adjacency Matrix (untested)

How It Works

Make sure you have Node.js and yarn installed: npm install --global yarn

clone the repo and install the dependencies

yarn install

edit the ligma.config.js file

module.exports = {
    dsa: [
        "InsertionSort",
        "MergeSort",
        "Queue",
        "Stack",
        "QuickSort",
        "DijkstraList",
        "PrimsList",
    ],
}

create a day of katas, this will use the list in the ligma.config.js.

yarn generate

this will progressively create folders named

src/day1
src/day2
...

yarn generate will also update the tsconfig.json and jest.config to point the latest day folder via tspaths. This allows us to avoid updating anything for testing each day.

Testing

yarn test

I have yet to create a testing strategy for next sets of algorithms, but we will get there when i cross that bridge.

Help wanted

A simple way to specify test, thinking something like tests.json and cat test.json 2> /dev/null to specify the tests to run. tests.json wouldn't be committed.