@@ -437,34 +437,35 @@ def __init__(self, problem):
437437 self .result = {}
438438
439439 def __call__ (self , percept ):
440- current_state = self .update_state (percept )
441- if self .problem .goal_test (current_state ):
440+ s1 = self .update_state (percept )
441+ if self .problem .goal_test (s1 ):
442442 self .a = None
443443 else :
444- if current_state not in self .untried .keys ():
445- self .untried [current_state ] = self .problem .actions (
446- current_state )
444+ if s1 not in self .untried .keys ():
445+ self .untried [s1 ] = self .problem .actions (s1 )
447446 if self .s is not None :
448- if current_state != self .result [(self .s , self .a )]:
449- self .result [(self .s , self .a )] = current_state
450- unbacktracked [current_state ].insert (0 , self .s )
451- if len (self .untried [current_state ]) == 0 :
452- if len (self .unbacktracked [current_state ]) == 0 :
447+ if s1 != self .result [(self .s , self .a )]:
448+ self .result [(self .s , self .a )] = s1
449+ unbacktracked [s1 ].insert (0 , self .s )
450+ if len (self .untried [s1 ]) == 0 :
451+ if len (self .unbacktracked [s1 ]) == 0 :
453452 self .a = None
454453 else :
455454 # else a <- an action b such that result[s', b] = POP(unbacktracked[s']) # noqa
456- unbacktracked_pop = self .unbacktracked [current_state ].pop (0 ) # noqa
455+ unbacktracked_pop = self .unbacktracked [s1 ].pop (0 ) # noqa
457456 for (s , b ) in self .result .keys ():
458457 if self .result [(s , b )] == unbacktracked_pop :
459458 self .a = b
460459 break
461460 else :
462- self .a = self .untried [current_state ].pop (0 )
463- self .s = current_state
461+ self .a = self .untried [s1 ].pop (0 )
462+ self .s = s1
464463 return self .a
465464
466465 def update_state (self , percept ):
467- raise NotImplementedError
466+ ''' To be overriden in most cases. The default case
467+ assumes th percept to be of type state'''
468+ raise percept
468469
469470# ______________________________________________________________________________
470471
0 commit comments