7. TUZ_3-07 Очки за повторяющиеся числа


TUZ_3-07 Очки за повторяющиеся числа

TUZ_3-07 Очки за повторяющиеся числа
3.7. Очки за повторяющиеся числа
Представьте, что вы идете по улице и встречаете два такси. Одно с номером 1729, другое с номером 6666.
Очевидно, что число 6666 легче запомнить благодаря повторению цифр в последовательности.
Человеческий разум легче запоминает числа с повторяющимися цифрами.
Например, люди проще запоминают показания часов 12:12, чем показания, не имеющие повторяющихся цифр, например 10:23.
Целью этого задания является привлечение внимания к последовательности чисел, в которых есть повторяющиеся цифры.
Последовательности оцениваются по количеству повторяющихся цифр.
Если в последовательности есть две повторяющиеся цифры, то ей выставляется оценка 1.
Если в последовательности три повторяющиеся цифры, то она получает оценку 10.
Если в последовательности четыре повторяющиеся цифры, то ей начисляется 100 очков и т. д.
Более того, если последовательность заканчивается последовательностью повторяющихся цифр,
то полученное количество очков удваивается.
Например, число 12333 имеет повторяющиеся цифры и заканчивается последовательностью повторяющихся цифр.
Его оценка вычисляется по формуле 3.1.

Напишите функцию, которая принимает положительное целое число n, и если оно содержит последовательность повторяющихся цифр,
то за каждую такую последовательность число получает 10 (k–2) очков, а если n заканчивается последовательностью повторяющихся цифр,
то оценка за эту последовательность умножается на 2, т. е. 2 × 10 (k–2).
В табл. 3.7 показаны ожидаемые результаты для некоторых входных данных.
Таблица 3.7. Некоторые ожидаемые результаты для задачи начисления очков за последовательности повторяющихся цифр в числе
n Ожидаемый результат 
1233 2
1569 0
17777 200
588885515555 301

Алгоритм
Алгоритм принимает целое число, перебирает цифры во входном числе и проверяет, совпадает ли текущая цифра с предыдущей цифрой.
Если совпадает, то алгоритм увеличивает счетчик на количество повторяющихся цифр.
Если отличается, то алгоритм подсчитывает количество повторяющихся цифр на данный момент и сбрасывает счетчик для новой цифры.
Наконец, алгоритм подсчитывает все оставшиеся повторяющиеся цифры в конце числа.
Вот подробное описание шагов алгоритма.
1. Принимается целое число n.
2. Переменная score инициализируется нулем.
3. Переменная count инициализируется единицей.
4. Переменная prev_digit инициализируется значением None.
5. Число n преобразуется в строку, и выполняется перебор цифр:
а) если текущая цифра совпадает с предыдущей (prev_digit), то увеличивается переменная count;
б) если текущая цифра отличается от предыдущей цифры, то:
в) если count больше 1, то переменная score увеличивается на 10(count–2).
    Получается оценка, основанная на количестве повторяющихся цифр;
г) переменной count присваивается 1 для новой цифры;
д) переменной prev_digit присваивается текущая цифра для проверки наличия повторяющейся последовательности.
6. Если повторяющиеся цифры последние в числе, то к оценке score прибавляется 2×10(count – 2).
    Это дает дополнительные очки за повторяющиеся цифры.
7. Полученная оценка возвращается.


time 1000 ms
memory 256 Mb

Комментарий учителя