2014-05-20 3 views
1

파이썬에서 NFA를 구현하려고하지만 일부 진전을 보였습니다. 그러나 3d 배열을 사용해야하고 배열의 인덱스가 현재 상태와 현재 처리 할 문자. 배열의 인덱스로 정수를 사용해야하고 문자열 데이터 형식을 int로 변환하려고합니다. 그러나, 나는 오류가 나타납니다 : "목록 색인은 정수가 아닌 문자열이어야합니다", 어떤 도움을 많이 주시면 감사하겠습니다.Python에서 NFA 구현

글쎄 코드의 나머지를 가정
"""Initialize States""" 
q0=0 
q1=1 
q2=2 

i=0 

finstate=q2 #final state is q2 

array=[[[0],[0,1]],[[2],[2]],[[],[]]] #3d array for state transitions 

def accepts(state, word): 
    global i 
    if i==len(word): 
     return state==finstate #if last state is final state accept 

    char=word[i] 
    i+=1 
    int(char) #covert char to int 

    nextstates=array[state][char] 

    for i in range(len(word)): 
     if accepts(nextstates, word): #recursion 
      return True 
    return False 

def main(): 
    string= "01" #sample input 
    if accepts(q0, string): 
     print("accepts") 
    else: 
     print("rejects") 

main() 
+0

'INT (문자) 같은 것을해야한다''문자가 발생하지 않습니다 : 여기에 지금까지 작성한 코드는 'int가 될 수 있습니다. 'int (char)'는 int입니다. 'char'는 영향을받지 않습니다. – user2357112

답변

1

이 올바른지, 당신은

char = word[i] 
i += 1 
intval = int(char) 
nextstates=array[state][intval] 
+0

답장을 보내 주셔서 감사합니다.하지만 지금 말씀 드렸듯이 다음과 같은 오류가 발생합니다 : "목록 색인은 목록이 아닌 정수 여야합니다."나는 목록으로 intval 변수를보고 생각하지 않는다고 생각합니다. 받아 들인다 – user3655617