Задание 3. Выполнить в тетради. Запиши программу на поворот робота на 180 градусов по часовой стрелке в тетрадь. В текстовом виде. Пример есть в начале плана урока и в видеоматериале (ссылка выше).
a = '0333333333322222111111111111111111111111111111111111111111111'
print(a)
while a.find('01') != -1 or a.find('02') != -1 or a.find('03') != -1:
a=a.replace('01', '30')
a=a.replace('02','101')
a=a.replace('03','202')
print(a)
print(f'1 = {a.count(str(1))}')
print(f'2 = {a.count(str(2))}')
print(f'3 = {a.count(str(3))}')
Получается, после первого нуля каждая цифра 3 увеличивает количество результирующих 1 2 и 3 на 1 по каждой:
a = '03'
2130
1 = 1
2 = 1
3 = 1
a='033'
2132130
1 = 2
2 = 2
3 = 2
И так далее. Следовательно, я набрал 10 двоек с десяти цифр 3 после первого нуля.
Далее, если после тройки идёт двойка, то увеличивается количество цифр 1 и 2:
a = '033333333332'
213213213213213213213213213213130
1 = 11
2 = 10
3 = 11
Набрал 5 двоек, чтобы получилось 15 единиц. Ну и далее, цифра 1 в конце добавляет количество единиц в результате, то есть чтобы получилось 60 единиц, я к 15 добавил 45:
a = '0333333333322222111111111111111111111111111111111111111111111'
def print_digit_sum(a):
print(f'Сумма цифр числа {a} равна {sum([int(i) for i in str(a)])}')
while True:
try:
print_digit_sum(int(input('Введите целое число:')))
break
except ValueError:
print('Неверный формат входных данных')
sum([int(i) for i in str(a)]) - здесь мы выполняем следующие действия:
1. Преобразуем число в строку с str(a)
2. Пробегаемся по символам строки от первого до последнего и создаём массив, преобразуя каждый строковый символ в число - [int(i) for i in str(a)]
3. Ну и наконец с оператора sum вычисляем сумму всех элементов получившегося массива
Методом подбора нашёл (на Питоне):
a = '0333333333322222111111111111111111111111111111111111111111111'
print(a)
while a.find('01') != -1 or a.find('02') != -1 or a.find('03') != -1:
a=a.replace('01', '30')
a=a.replace('02','101')
a=a.replace('03','202')
print(a)
print(f'1 = {a.count(str(1))}')
print(f'2 = {a.count(str(2))}')
print(f'3 = {a.count(str(3))}')
Получается, после первого нуля каждая цифра 3 увеличивает количество результирующих 1 2 и 3 на 1 по каждой:
a = '03'
2130
1 = 1
2 = 1
3 = 1
a='033'
2132130
1 = 2
2 = 2
3 = 2
И так далее. Следовательно, я набрал 10 двоек с десяти цифр 3 после первого нуля.
Далее, если после тройки идёт двойка, то увеличивается количество цифр 1 и 2:
a = '033333333332'
213213213213213213213213213213130
1 = 11
2 = 10
3 = 11
Набрал 5 двоек, чтобы получилось 15 единиц. Ну и далее, цифра 1 в конце добавляет количество единиц в результате, то есть чтобы получилось 60 единиц, я к 15 добавил 45:
a = '0333333333322222111111111111111111111111111111111111111111111'
21321321321321321321321321321313131313133333333333333333333333333333333333333333333330
1 = 15
2 = 10
3 = 60
ОТВЕТ: 45 единиц!