Add finite-state machine
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Stale
- Tech stack
- typescript
- Domain
- compilers
Research direction
Start by reading the existing Turing machine implementation and how it accepts transition tables and input. Use the supplied q0/q1/q2 table and input aabaab as the behavioral example. Done means the project supports a finite-state machine with right-only, read-only transitions and halts at the end of input.
Written by the indexing model from the issue text.
Description
Describe the feature
Finite-state machine is a less powerful subset of a Turing machine, which has a simpler configuration and can recognize regular languages.
Finite-state machine compared to Turing machine can only:
- Move right - cannot move left or stay in the same cell.
- Is read-only.
Therefore, the transition table is simpler and consists of:
current state, current value -> next state.
Special rule:
Finite-automata stops when reaching last non-blank symbol on the right.
It has final states as classical Turing machine but reaching the final state does not cause the finite-state machine to halt. Only reaching the end of input causes the machine to halt.
Task: implement finite-state machine.
Describe alternatives you've considered (optional)
Although user could use classical Turing machine the Finite-state machine has simplified setup for simpler problems and therefore it is good to have it.
Additional context
Example of what finite-state machine can recognize:
Does input of multiple letters a and b and with ab?
With this instruction table the finite-state machine prints the answer:
q0,a,q1
q0,b,q0
q1,a,q1
q1,b,q2
q2,a,q1
q2,b,q0
You can check it with input aabaab
- Dominant language
- TypeScript
- Stars
- 0
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from EvalVis/TuringMachine
-
enhancement good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
EvalVis/TuringMachine#1 ·
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 30/100
EvalVis/TuringMachine#7 ·
-
Add tests Openenhancement good first issue
Difficulty 4/5 3-5 days Newbie friendliness 35/100
EvalVis/TuringMachine#6 ·
-
enhancement good first issue
Difficulty 5/5 Over a week Newbie friendliness 35/100
EvalVis/TuringMachine#5 ·
-
enhancement good first issue
Difficulty 3/5 1-2 days Newbie friendliness 45/100
EvalVis/TuringMachine#4 ·
All issues in EvalVis/TuringMachine
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
ontola/atomic-server#1625 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
melgarafael/DeskcommCRM#1451 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 82/100
-
bug via-triage
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
bot:ai-assisted component:compact-js status:untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
midnightntwrk/midnight-sdk#403 ·