
1)
from turtle import*
up()
goto(30, 20)
down()
goto(30, 60)
goto(80, 60)
goto(80, 30)
goto(150, 30)
goto(150, 50)
goto(160, 30)
goto(170, 20)
goto(30, 20)
up()
goto(40, 30)
down()
goto(40, 30)
goto(70, 50)
goto(70, 30)
goto(40, 30)
2)
from turtle import*
shape("triangle")
forward(200)
stamp()
write("x")
home()
left(90)
forward(180)
stamp()
write("y")
home()
right(90)
forward(40)
home()
left(180)
forward(50)
home()
up()
goto(10, 10)
down()
for i in range(3):
forward(80 - i*20)
left(90)
forward(80 - i*20)
left(90)
forward(80 - i*20)
left(90)
forward(80 - i*20)
left(90)
up()
goto(20 + i*10, 20 + i*10)
down()
Объяснение:
Примечание:
Если к числу в двоичной системе счисления приписывать в конец цифры, то число увеличивается и никак не может уменьшится. Поэтому, n<f(n). Следовательно, перебор различных чисел, принадлежащих отрезку [90;160], можно смело ставить до 160 (можно и меньше, но лень расписывать вычисления).
ToBinary - функция перевода числа из десятичной СС в двоичную. Можно писать любой алгоритм, необязательно в точности использовать мой.
FromBinary - функция перевода числа из двоичной СС в десятичную. Можно писать любой алгоритм, необязательно в точности использовать мой.
func - функция, которая выполняет преобразования числа согласно условию (пункты 1, 2, 3, 4).
Код кажется большим только из-за процедур и begin/endов. Без них - всего то 7 строчек :). В скринах можно проверить, действительно ли 19 (40-22+1).
Пример работы:

