Не получается решить задачу ЕГЭ

Выполняя авто-код для 1 задачи, столкнулся с проблемой:

Traceback (most recent call last):
  File "C:\Users\mainuser\PycharmProjects\PythonProject1\main.py", line 8, in <module>
    if all(str(var.index(x) + 1) in tab[var.index(y)] for x, y in pic):
       ~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\mainuser\PycharmProjects\PythonProject1\main.py", line 8, in <genexpr>
    if all(str(var.index(x) + 1) in tab[var.index(y)] for x, y in pic):
                                        ~~~~~~~~~^^^
ValueError: tuple.index(x): x not in tuple
    

Вот сам код:

from itertools import *

tab = "23 168 158 578 347 27 456 234".split()
pic = "ea af fc cg gh he de db bh bg df fa fc".split()

print(*range(1, 8))
for var in permutations("abcdefg"):
    if all(str(var.index(x) + 1) in tab[var.index(y)] for x, y in pic):
        print(*var)

Условия задачи:

Условия задачи


Ответы (2 шт):

Автор решения: geo

Я бы добавил бы на вашем месте условие:

from itertools import *

tab = "23 168 158 578 347 27 456 234".split()
pic = "ea af fc cg gh he de db bh bg df fa fc".split()

print(*range(1, 8))
for var in permutations("abcdefg"):
    if all(str(var.index(x) + 1) in tab[var.index(y)] for x, y in pic if var.count(y)>0 and var.count(x)>0):
        print(*var)
→ Ссылка
Автор решения: geo

@Stanislav Volodarskiy указал, на возможность того, что автор задачи некорректно составлял символьный литерал и в его задачу не входит обработка ошибки нахождения символа. Поэтому, как альтернативное решение данной задачи предлагается такое, которое избавляет от ручного ввода литерала, как итерируемого объекта для перебора.

from itertools import *

tab = "23 168 158 578 347 27 456 234".split()
pic = "ea af fc cg gh he de db bh bg df fa fc".split()

for var in permutations(set((''.join(pic)))):
    if all(str(var.index(x) + 1) in tab[var.index(y)] for x, y in pic):
        print(*var)
→ Ссылка