Skip to content

Instantly share code, notes, and snippets.

@Frazi1
Last active February 15, 2019 19:00
Show Gist options
  • Save Frazi1/b1ae9eb3e9b5aa0121ee4c290346bd9f to your computer and use it in GitHub Desktop.
Save Frazi1/b1ae9eb3e9b5aa0121ee4c290346bd9f to your computer and use it in GitHub Desktop.
input: '2222+1'
blank: ' '
start state: right
table:
right:
[0,1,2,+,A,B,C]: R
' ' : {L: seek_right_digit}
seek_right_digit:
0: {write: X, L: seek_separator_to_left}
1: {write: Y, L: seek_separator_to_left}
2: {write: Z, L: seek_separator_to_left}
'+': {L: answer}
seek_separator_to_left:
[0,1,2]: {L}
'+': {L: seek_left_digit}
seek_left_digit:
0: {write: X, R: take_digit_from_right}
1: {write: Y, R: take_digit_from_right}
2: {write: Z, R: take_digit_from_right}
[A,B,C]: {L}
' ': {write: 'X', R: take_digit_from_right}
take_digit_from_right:
[0,1,2,+,A,B,C]: {R}
X: {write: ' ', L: carry_0}
Y: {write: ' ', L: carry_1_find}
Z: {write: ' ', L: carry_2}
carry_0:
[0,1,2,+,A,B,C]: {L}
X: {write: 'A', R: right}
Y: {write: 'B', R: right}
Z: {write: 'C', L: right}
carry_1_find:
[0,1,2,+,A,B,C]: {L}
X: {write: 'B', R: right}
Y: {write: 'C', R: right}
Z: {write: 'A', L: carry1_transfer}
carry1_transfer:
[0,' ']: {write: 1, R: right}
1: {write: 2, R: right}
2: {write: 0, L: carry1_transfer}
A: {write: B, R: right}
B: {write: C, R: right}
C: {write: A, L: carry1_transfer}
carry_2:
[0,1,2,+,A,B,C]: {L}
X: {write: 'C', R: right}
Y: {write: 'A', L: carry1_transfer}
Z: {write: 'B', L: carry1_transfer}
answer:
A: {write: 0, L}
B: {write: 1, L}
C: {write: 2, L}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment