А ты уже научился заряжать левой ногой свой телефон?
Прога на прологе ))
domains
sost = integer
m_ch=char*
predicates
nondeterm next( char, sost, char, sost )
nondeterm avtomat( m_ch, sost, m_ch )
nondeterm put(sost,sost,integer,m_ch)
clauses
%переходы
next( 'a',1,'v',2 ).
next( 'b',2,'g',3 ).
next( 'b',2,'z',1).
next( 'b',2,'W',4).
next( 'c',3,'j',4 ).
next( 'e',3,'h',1).
next( 'd',4,'k',1).
%avtomat( A, B, C )
%при входных символах A и начальном состоянии B будут выходные символы B
avtomat( [],_,[] ).
avtomat( [A1|A2], S ,[B1|B2] ):- next( A1, S, B1, L ), avtomat( A2, L, B2 ).
%put(A,B,C,D)
%из состояния A можно попасть в состояние B за C переходов с помощью входных символов D
put(S1,S1,0,[]).
put( S1,S2,N,[M1|M2] ):- next(M1,S1,_,L),N>0,NP=N-1,put(L,S2,NP,M2).
goal
%avtomat( ['a','b'],1,X).
put( 1,1,3,X ).
domains
sost = integer
m_ch=char*
predicates
nondeterm next( char, sost, char, sost )
nondeterm avtomat( m_ch, sost, m_ch )
nondeterm put(sost,sost,integer,m_ch)
clauses
%переходы
next( 'a',1,'v',2 ).
next( 'b',2,'g',3 ).
next( 'b',2,'z',1).
next( 'b',2,'W',4).
next( 'c',3,'j',4 ).
next( 'e',3,'h',1).
next( 'd',4,'k',1).
%avtomat( A, B, C )
%при входных символах A и начальном состоянии B будут выходные символы B
avtomat( [],_,[] ).
avtomat( [A1|A2], S ,[B1|B2] ):- next( A1, S, B1, L ), avtomat( A2, L, B2 ).
%put(A,B,C,D)
%из состояния A можно попасть в состояние B за C переходов с помощью входных символов D
put(S1,S1,0,[]).
put( S1,S2,N,[M1|M2] ):- next(M1,S1,_,L),N>0,NP=N-1,put(L,S2,NP,M2).
goal
%avtomat( ['a','b'],1,X).
put( 1,1,3,X ).