Giter Club home page Giter Club logo

ts-automata's Introduction

Comms established. Welcome to my profile! ๐Ÿ‘‹

email: [email protected]

My name is Kiril Panayotov. I'm 20 years old. I am:

  • TU Delft CSE Honours Student - Year 2
  • Currently doing academic research on:
    • "Technical Debt analysis in the era of AI"
  • Front-end Developer:
  • Contributor to:
    • Andy - added several checks and tests
    • uplot-wrappers - created the Svelte wrapper for uPlot
  • QA Enthusiast
  • Knowledgable of the programming languages:
    • Java, Scala
    • JavaScript, TypeScript...
  • Participant and winner of several competitions (on local, national and global level)
  • The actual leader of the Team Praxidike

Some statements I will leave right here:


About Praxidike

Praxidike is an IT team with great experience and knowledge in AI and Web Development. We take details and desires into consideration and finalize a covet project. We excel in working with passion. We excel in pursuing self-improvement.

๐Ÿชโญ

Praxidike /prรฆkหˆsษชdษ™kiห/, also known as Jupiter XXVII, is a retrograde irregular satellite of Jupiter.


Projects & Activity

As an JavaScript dev

  • Developed Kokicoin Discord Bot: Repo.

As a Full-Stack dev

  • Creator of the web app Crowd Density Estimator, a project made by Praxidike that has won ๐Ÿฅ‡First place in:

    • ๐Ÿค– Hackathon "AI for City"
    • ๐Ÿš€ Hackathon NASA Space Apps Ruse
    • ๐Ÿ’ฉ Stoicho's Competition
  • Creator of the web app Helti, a project made by Praxidike that has won ๐Ÿฅ‡First place in:

    • ๐Ÿง‘โ€โš•๏ธ Hackathon "Online Healthcare"
  • Front-end Developer (together w/ThijsH04) of ๐Ÿ”— RoTUer

Skills

  • Programming Languages: JavaScript, TypeScript, Java, C, C++, Python
  • "Frameworks": Svelte, SvelteKit, OpenGL
  • IDEs: WebStorm, IntelliJ
  • Project Management: Git (incl. GitHub), GitLab
  • Languages: Bulgarian (native), English (C1), South Slavic Languages (conversational), Russian (A2)

Likes

  • act
๐™ž๐™› (๐™˜๐™ค๐™ข๐™ฅ๐™ก๐™–๐™ž๐™ฃ๐™ž๐™ฃ๐™œ === ๐™ฉ๐™ง๐™ช๐™š) . . . {๐™–๐™˜๐™๐™ž๐™š๐™ซ๐™–๐™—๐™ž๐™ก๐™ž๐™ฉ๐™ฎ = ๐™›๐™–๐™ก๐™จ๐™š}
Amor et melle et felle est fecundissimus.

Solus cum sis voluntarie immaturus, magna consequi potes.

ts-automata's People

Contributors

zakrok09 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

ts-automata's Issues

FEAT: More utilities

Problem

There are only a limited number of utils available. Many actions with automata require converting between types, creating new automata etc.

Related: #13

Solution:

Introduce utilities for:

  • Parsing DFAs #13
  • Defining a NFA for a language that is the reverse of another NFA language
  • DFA/NFA to regex.

FEAT: NFA to DFA

Problem

There is no way to convert a NFA in to a DFA.

Possible solutions

Create an algorithm to convert NFAs to DFAs using the Sipser's algorithm described in "Introduction to the Theory of Computation"

REFACTOR: Improve types of Exceptions

Problem

The exceptions present are not helpful. Currently there are only two IllegalArgument IllegalAutomatonState.

Solution

Introduce more exceptions.

Extending from IllegalArgument:

  • InputNotInAlphabet(c:char) - to deal with situations where the character is not part of the automaton alphabet
  • UnkownState(stateName:string) - to deal with when the input state does not exist
  • StateAlreadyExists(stateName:string) - to deal with adding of state if it already exists

CI: Continuous integration setup

Problem

There are numerous action flows that are currently being done manually, such as running the test suite on pull requests and manually publishing the package on new tag release. There should be a CI to deal with this issue.

Possible solution

Add workflows to deal with this.

  • Tag release to npm publish
  • Running Jest on pull request

REFACTOR: Alphabets

Problem

The creation of alphabets is very awkward and bloated. There must be instead an Alphabet class with according methods to add and remove characters.

This however opens an issue as the Alphabet remains mutable which could introduce problems with concurrency in the DFA.

Possible solutions

Create an Alphabet class. Disallow mutation of the alphabet once the DFA has been created with it.

FEAT: Context Free Languages and Pushdown Automata

Problem

Having covered regular languages and algorithms for them, the package should be upgraded to encompass context free languages and stack based automata

Solution

Define a PDA class, update the Alphabet to employ different types of input (to allow for pushing and reading from the stack)

REFACTOR: Creational patterns for automata

Problem

The creation of a finite automaton, especially the definition of the transition function, is bloated and requires a lot of lines of code for simple automata.

Possible solution

Introduce a Builder design pattern for the Finite Automata.

FEAT: DFA Parsing

Problem:

As suggested by @vesk4000, there could be a DFA / Automata parser from some string that represents the DFA. This could come particularly handy (naive to say) when TM are introduced into the package.

Solution:

  • introduce a DFA parser to construct DFAs from a string representing it
  • make it fail on illegal, ill-formatted input.
  • OPTIONAL: make it possible to choose the delimiter symbols to support other ways of representing DFAs as a stringr

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.