Files
elizagen.org/TuringCompleteness/palendrome.ez
T
jeffshrager c1d6400c00 no message
2022-11-13 20:37:59 -08:00

97 lines
3.1 KiB
Plaintext

(ELIZA CAN DECIDE IF A STRING OF LETTERS IS A PALINDROME.
TYPE THE WORD PALP FOLLOWED BY A STRING OF A AND B LETTERS,
WITH SPACES BETWEEN EACH LETTER. ELIZA WILL RESPOND TRUE IF
THE STRING IS A PALINDROME, OTHERWISE ELIZA RESPONDS FALSE.
EG. TYPE PALP A B B A AND ELIZA WILL RESPOND TRUE.)
(PALP
((PALP)
(PRE (* _ *) (=Q0))) ; position head at empty cell
((PALP A 0)
(PRE (* A * 3) (=Q0))) ; position head at first A
((PALP B 0)
(PRE (* B * 3) (=Q0))) ; position head at first B
((0)
(YOU MUST START WITH THE WORD PALP
AND FOLLOW THAT WITH ANY COMBINATION OF THE LETTERS
A AND B WITH SPACES BETWEEN EACH LETTER.)))
; Q=current state
; R=read this symbol at head
; W=write this symbol at head (blank means don't write anything)
; M=move head left (L) or right (R), or blank for don't move head
; Q'=new state
;
; In state Q, when the symbol at the head is R, then write W, move M
; and set the new state to Q'
; Q R W M Q'
(Q0
((* 0) (PRE (_ * 2) (=Q0)))
((0 *) (PRE (1 * _) (=Q0)))
((0 1 * A * 1 0) (PRE (1 2 _ * 6 * 7) (=Q1))) ; Q0 A _ R Q1
((0 1 * B * 1 0) (PRE (1 2 _ * 6 * 7) (=Q4))) ; Q0 B _ R Q4
((0 1 * _ * 1 0) (=QACCEPT))) ; Q0 _ QACCEPT
(Q1
((* 0) (PRE (_ * 2) (=Q1)))
((0 *) (PRE (1 * _) (=Q1)))
((0 1 * A * 1 0) (PRE (1 2 A * 6 * 7) (=Q1))) ; Q1 A R Q1
((0 1 * B * 1 0) (PRE (1 2 B * 6 * 7) (=Q1))) ; Q1 B R Q1
((0 1 * _ * 1 0) (PRE (1 * 2 * _ 6 7) (=Q2)))); Q1 _ L Q2
(Q2
((* 0) (PRE (_ * 2) (=Q2)))
((0 *) (PRE (1 * _) (=Q2)))
((0 1 * A * 1 0) (PRE (1 * 2 * _ 6 7) (=Q3))) ; Q2 A _ L Q3
((0 1 * B * 1 0) (=QREJECT)) ; Q2 B QREJECT
((0 1 * _ * 1 0) (=QACCEPT))) ; Q2 _ QACCEPT
(Q3
((* 0) (PRE (_ * 2) (=Q3)))
((0 *) (PRE (1 * _) (=Q3)))
((0 1 * A * 1 0) (PRE (1 * 2 * A 6 7) (=Q3))) ; Q3 A L Q3
((0 1 * B * 1 0) (PRE (1 * 2 * B 6 7) (=Q3))) ; Q3 B L Q3
((0 1 * _ * 1 0) (PRE (1 2 _ * 6 * 7) (=Q0)))); Q3 _ R Q0
(Q4
((* 0) (PRE (_ * 2) (=Q4)))
((0 *) (PRE (1 * _) (=Q4)))
((0 1 * A * 1 0) (PRE (1 2 A * 6 * 7) (=Q4))) ; Q4 A R Q4
((0 1 * B * 1 0) (PRE (1 2 B * 6 * 7) (=Q4))) ; Q4 B R Q4
((0 1 * _ * 1 0) (PRE (1 * 2 * _ 6 7) (=Q5)))); Q4 _ L Q5
(Q5
((* 0) (PRE (_ * 2) (=Q5)))
((0 *) (PRE (1 * _) (=Q5)))
((0 1 * A * 1 0) (=QREJECT)) ; Q5 A QREJECT
((0 1 * B * 1 0) (PRE (1 * 2 * _ 6 7) (=Q3))) ; Q5 B _ L Q3
((0 1 * _ * 1 0) (=QACCEPT))) ; Q5 _ QACCEPT
(QACCEPT
((0)
(TRUE)))
(QREJECT
((0)
(FALSE)))
(NONE
((0)
(TRY TYPING PALP A B A)
(TRY PALP A A A A)
(TRY PALP B A, ELIZA SHOULD RESPOND FALSE)
(TRY PALP B A B, ELIZA SHOULD RESPOND TRUE)))
(TURING
((0)
(MACHINE)))
(MEMORY TURING
(0 = TURING MACHINE)
(0 = TURING MACHINE)
(0 = TURING MACHINE)
(0 = TURING MACHINE))