소개
최근에 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)
이 단어를 Swyping 할 때 방향을 변경할 필요가 없으므로 문자열 qwerty
은 SSP
= 1입니다.
입력
a-z
via STDIN, 함수 인수 또는 명령 행을 포함하는 단일 단어 문자열 .
산출
n
문자열을 나타내는 숫자 인 STDOUT, return 또는 가장 가까운 언어로 인쇄하십시오 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