Вступление
В последнее время я привык печатать на Swype .
Я заметил, что некоторые слова могут быть получены путем рисования прямой линии от вашего начального до конечного или пропуская повторяющиеся буквы.
Например, я могу набрать слово с balloonпомощью Swyping через следующие буквы:
b> a> l> o> n.
Вызов
Давайте определим кратчайший путь Swype , или SSP, как минимальное количество различимых отрезков линии, необходимых для ввода строки. Сегмент прямой представляет собой непрерывную прямую линию между любыми двумя или более буквами. При любом изменении направления начинается новый отрезок линии - хотя некоторые слова можно поменять местами, нарисовав только одну прямую линию.
Используйте эту простую раскладку клавиатуры QWERTY :
q w e r t y u i o p
a s d f g h j k l
z x c v b n m
В приведенном выше примере, слово balloonбудет иметь SSPиз , 4как подробно описано в последовательности ниже:
1) Start at `b` (line segments = 0)
2) slide to `a` (line segments = 1)
3) slide to `l` (line segments = 2)
4) slide to `o` (line segments = 3)
5) slide to `n` (line segments = 4)
Строка qwertyимеет SSP= 1, так как при переключении этого слова изменение направления не требуется.
вход
Строка из одного слова, содержащая любое с a-zпомощью STDIN, аргумента функции или командной строки.
Выход
Напечатайте с помощью STDOUT, return или ваших ближайших альтернативных языков число, nпредставляющее строку SSP.
Один завершающий перевод новой строки необязателен в outut. Стандартные лазейки запрещены. Кратчайшая подача в байтах выигрывает.
Примечания
- Изменение направления запускает новый отрезок.
- Повторяющиеся буквы учитываются только один раз (например,
bookkeeperдолжны рассматриваться какbokeper). - Как правило, Swpye исправляет пропущенные буквы, просматривая соседние буквы и вводя свои лучшие предположения. Для этого предположим, что нет никаких дополнений на естественном языке, предиктивного текста или исправления ошибок.
- Прописные
A-Zвводы обрабатываются как их строчные аналоги. - Игнорировать любые цифры
0-9на входе. - Диагональные дорожки разрешены - то есть, прямая линия , которая охватывает буквы
o,k,n, например, считается1сегмент. Это правило относится к любым диагональная наклона (например , буквыc,h,iв строке).
Примеры
Input Output
---------------------
a 0
aa 0
aaaaaa 0
aaaaaabc 2
in 1
int 2
java 3
qwerty 1
chicago 5
balloon 4
BALLOON 4
typewriter 5
bookkeeper 6
stackexchange 11
2hello7 3
2HELLO7 3