introduction
Dernièrement, je m'habitue à taper avec Swype .
J'ai remarqué que certains mots peuvent être produits en traçant une ligne droite de votre lettre de départ à votre lettre de fin, ou en sautant les lettres qui se répètent.
Par exemple, je peux taper le mot balloonpar Swyping dans les lettres suivantes:
b> a> l> o> n.
Défi
Définissons le chemin Swype le plus court , ou SSP, comme le nombre minimum de segments de ligne reconnaissables nécessaires pour taper une chaîne. Un segment de ligne est une ligne droite continue entre deux lettres ou plus. Tout changement de direction démarre un nouveau segment de ligne - bien que certains mots puissent être balayés en ne dessinant qu'une seule ligne droite.
Utilisez cette disposition de clavier QWERTY simple :
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
Dans l'exemple ci - dessus, le mot balloonaura un SSPde 4tel que décrit dans la séquence ci - dessous:
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)
La chaîne qwertya SSP= 1 car aucun changement de direction n'est requis lors du Swyping de ce mot.
Contribution
Une chaîne de mot unique contenant tout a-zvia STDIN, argument de fonction ou ligne de commande.
Production
Imprimez via STDOUT, return ou l'alternative la plus proche de votre langue, le nombre nreprésentant la chaîne SSP.
Un saut de ligne en option en sortie. Failles standard interdites. La soumission la plus courte en octets gagne.
Remarques
- Un changement de direction démarre un nouveau segment de ligne.
- Les lettres qui se répètent ne sont comptées qu'une seule fois (par exemple:
bookkeeperdoivent être traitées commebokeper). - Normalement, Swpye corrige les lettres manquées en regardant les lettres voisines et en remplissant sa meilleure estimation. Pour ce défi, supposez qu'il n'y a pas d'augmentation du langage naturel, de texte prédictif ou de correction d'erreur.
- Les
A-Zentrées en majuscules sont traitées comme leurs homologues en minuscules. - Ignorez les nombres
0-9dans l'entrée. - Chemins en diagonale sont autorisés - qui est, une ligne droite qui couvre les lettres
o,k,npar exemple, comptent comme1segment. Cette règle s'applique à toute pente diagonale (par exemple: lettresc,h,isont en ligne).
Exemples
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