<s> import re <EOL> _known = { <EOL> '<STR_LIT>' : <NUM_LIT:0> , <EOL> '<STR_LIT>' : <NUM_LIT:1> , <EOL> '<STR_LIT>' : <NUM_LIT:2> , <EOL> '<STR_LIT>' : <NUM_LIT:3> , <EOL> '<STR_LIT>' : <NUM_LIT:4> , <EOL> '<STR_LIT>' : <NUM_LIT:5> , <EOL> '<STR_LIT>' : <NUM_LIT:6> , <EOL> '<STR_LIT>' : <NUM_LIT:7> , <EOL> '<STR_LIT>' : <NUM_LIT:8> , <EOL> '<STR_LIT>' : <NUM_LIT:9> , <EOL> '<STR_LIT>' : <NUM_LIT:10> , <EOL> '<STR_LIT>' : <NUM_LIT:11> , <EOL> '<STR_LIT>' : <NUM_LIT:12> , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : <NUM_LIT:15> , <EOL> '<STR_LIT>' : <NUM_LIT:16> , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : <NUM_LIT:20> , <EOL> '<STR_LIT>' : <NUM_LIT:30> , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : <NUM_LIT:50> , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : <NUM_LIT> <EOL> } <EOL> def spoken_word_to_number ( n ) : <EOL> """<STR_LIT>""" <EOL> n = n . lower ( ) . strip ( ) <EOL> if n in _known : <EOL> return _known [ n ] <EOL> else : <EOL> inputWordArr = re . split ( '<STR_LIT>' , n ) <EOL> assert len ( inputWordArr ) > <NUM_LIT:1> <EOL> if inputWordArr [ - <NUM_LIT:1> ] == '<STR_LIT>' : <EOL> inputWordArr . append ( '<STR_LIT>' ) <EOL> inputWordArr . append ( '<STR_LIT>' ) <EOL> if inputWordArr [ - <NUM_LIT:1> ] == '<STR_LIT>' : <EOL> inputWordArr . append ( '<STR_LIT>' ) <EOL> inputWordArr . append ( '<STR_LIT>' ) <EOL> inputWordArr . append ( '<STR_LIT>' ) <EOL> if inputWordArr [ <NUM_LIT:0> ] == '<STR_LIT>' : <EOL> inputWordArr . insert ( <NUM_LIT:0> , '<STR_LIT>' ) <EOL> if inputWordArr [ <NUM_LIT:0> ] == '<STR_LIT>' : <EOL> inputWordArr . insert ( <NUM_LIT:0> , '<STR_LIT>' ) <EOL> inputWordArr = [ word for word in inputWordArr if word not in [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] ] <EOL> currentPosition = '<STR_LIT>' <EOL> prevPosition = None <EOL> output = <NUM_LIT:0> <EOL> for word in reversed ( inputWordArr ) : <EOL> if currentPosition == '<STR_LIT>' : <EOL> number = _known [ word ] <EOL> output += number <EOL> if number > <NUM_LIT:9> : <EOL> currentPosition = '<STR_LIT>' <EOL> else : <EOL> currentPosition = '<STR_LIT>' <EOL> elif currentPosition == '<STR_LIT>' : <EOL> if word != '<STR_LIT>' : <EOL> number = _known [ word ] <EOL> if number < <NUM_LIT:10> : <EOL> output += number * <NUM_LIT:10> <EOL> else : <EOL> output += number <EOL> currentPosition = '<STR_LIT>' <EOL> elif currentPosition == '<STR_LIT>' : <EOL> if word not in [ '<STR_LIT>' , '<STR_LIT>' ] : <EOL> number = _known [ word ] <EOL> output += number * <NUM_LIT:100> <EOL> currentPosition = '<STR_LIT>' <EOL> elif word == '<STR_LIT>' : <EOL> currentPosition = '<STR_LIT>' <EOL> else : <EOL> currentPosition = '<STR_LIT>' <EOL> elif currentPosition == '<STR_LIT>' : <EOL> assert word != '<STR_LIT>' <EOL> if word != '<STR_LIT>' : <EOL> number = _known [ word ] <EOL> output += number * <NUM_LIT:1000> <EOL> else : <EOL> assert "<STR_LIT>" == None <EOL> return ( output ) </s>
