WA#7 please help!
Posted by 
micrus 9 Dec 2017 21:49
example = {'i': 1, 'j': 1, 'a': 2, 'b': 2, 'c': 2,
           'd': 3, 'e': 3, 'f': 3, 'g': 4, 'h': 4,
           'k': 5, 'l': 5, 'm': 6, 'n': 6, 'p': 7,
           'r': 7, 's': 7, 't': 8, 'u': 8, 'v': 8,
           'w': 9, 'x': 9, 'y': 9, 'o': 0, 'q': 0, 'z': 0}
 
 
def create_words(number, amount):
    words = {}
 
    for i in range(int(amount)):
 
        word = str(input())
        key = ""
 
        key = "".join([str(example.get(j)) for j in word])
 
        if key in str(number):
            words[key] = word
 
    return words
 
 
def create_answers(number, words):
    answers = {}
 
    for i in words.keys():
 
        if i != number[:len(i)]:
            continue
 
        answer = [words[i]]
        answer_key = i
 
        copy = number[len("".join(answer)):]
        x = len(copy)
        while x > 0:
            if copy[:x] in words.keys():
                answer.append(words[copy[:x]])
                answer_key += copy[:x]
                copy = copy[x:]
                x = len(copy) + 1
            x -= 1
 
        if len(answer) == 0:
            continue
        elif len(answer) in answers.keys():
            continue
        elif answer_key == n:
            answers[len(answer)] = answer
        else:
            continue
 
    return  answers
 
while True:
    n = input()
 
    if int(n) == -1:
        break
 
    a = input()
 
    i = create_answers(n, create_words(n, a))
 
    if len(i) == 0:
        print("No solution.")
    else:
        y = min(i.keys())
        print(" ".join(i[y]))
 
Edited by author 09.12.2017 22:06