130
правок
Изменения
→Псевдокод получения кода Грея
'''list'''< '''list'''<'''int'''> > perms = gray_code(n - 1) <font color=darkgreen> //perms {{---}} перестановки из n - 1 элемента</font color=darkgreen>
'''bool''' backward = ''false'' <font color=darkgreen> //переменная которая говорит с какой стороны заполнять перестановку</font color=darkgreen>
'''if''' backward
'''list'''<'''int'''> current = concat(perm, {n})<font color=darkgreen> //дописываем {n} в конец perm</font color=darkgreen>
result.append(current)<font color=darkgreen> //добавляем в ответ перестановку current</font color=darkgreen>
swap(current[i - 1], current[i])<font color=darkgreen> //переставляем n</font color=darkgreen>
result.append(current) <font color=darkgreen> //добавляем в ответ перестановку current</font color=darkgreen>
'''list'''<'''int'''> current = concat({n}, perm) <font color=darkgreen> //дописываем {n} в начало perm</font color=darkgreen>
result.append(current) <font color=darkgreen> //добавляем в ответ перестановку current</font color=darkgreen>
swap(current[i], current[i + 1]) <font color=darkgreen> //переставляем n</font color=darkgreen>
result.append(current) <font color=darkgreen> //добавляем в ответ перестановку current</font color=darkgreen>