Типичным заданием для новичка является выравнивание списка. Здесь вы найдете много вопросов об этом, и в основном это превратит '(A and (not B or C))
в (A and not B or C)
. Тогда ты почти у цели.
В принципе, нет никакой разницы между переменной и оператором, так как, например. not
может прийти раньше, а and
может оказаться между. Я думаю, вы не можете иметь имена переменных, которые совпадают с вашими операторами, и вам нужно знать операторы заранее. Затем вы можете отфильтровать плоский список, чтобы удалить операторов. тогда вы останетесь с (A B C)
.
Трудно помочь со спецификой, когда у вас даже нет кода в вашем вопросе, так что это насколько я могу вам помочь. Удачи.