Ищете векторное произведение двух соседних ребер полигона. Получаете нормаль. Затем эту нормаль скалярно умножаете на вектор (из начала координат) общей вершины этих двух ребер. Если скалярное произведение больше нуля, то все ок, если меньше - то инвертируйте нормаль.
Bavashi, в задаче как раз таки описаны правила, как происходят замены - по одной букве. Соответствие
это не достаточное условие.
Пример: алфавит из 0 и 1. Элементарными заменами нельзя из слова 01 сделать 10, хотя соответствие есть.
Bavashi, конечно, задача и состоит в том, чтобы определить, можно ли используя элементарные однобуквенные замены прербразовать строку в строку. Для тех строк, что вы привели - нельзя. Если считаете что это не так - приведите первую замену, как в примере.
Bavashi, вы не поняли: имеется ввиду то, что строку состоящую из всех символов алфавита 'абв...эюя' нельзя перевести заменами в 'яюэ...вба', а такую же строку из меньшего числа символов 'бвг...эюя' в 'яюэ...гвб' - можно.
Да, mult = mult + list[sum] не суммирует нулевой элемент списка, поэтому на единицу и меньше.
И еще совет: не называйте переменные именами встроенных функций.
Зачем кварцевое? оно как раз будет хуже из-за рекристаллизации и пузырьков воздуха. Лучше стеклянный красный светофильтр, который пропускает 780 нм, а все остальное, что ниже -режет.