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 balloon
par 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 balloon
aura un SSP
de 4
tel 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 qwerty
a 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-z
via STDIN, argument de fonction ou ligne de commande.
Production
Imprimez via STDOUT, return ou l'alternative la plus proche de votre langue, le nombre n
repré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:
bookkeeper
doivent ê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-Z
entrées en majuscules sont traitées comme leurs homologues en minuscules. - Ignorez les nombres
0-9
dans l'entrée. - Chemins en diagonale sont autorisés - qui est, une ligne droite qui couvre les lettres
o
,k
,n
par exemple, comptent comme1
segment. Cette règle s'applique à toute pente diagonale (par exemple: lettresc
,h
,i
sont 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
Réponses:
CJam,
7876736862 octetsNotez que le code contient des caractères non imprimables.
Emprunter l'idée intelligente de @ isaacg d'utiliser RLE pour compter les chemins enregistrés 6 octets.
Essayez-le en ligne dans l' interpréteur CJam . Si le lien ne fonctionne pas, copiez le code de cette pâte .
Comment ça fonctionne
la source
Pyth,
535049 octetsFormat de compression du clavier grâce à @Dennis.
Cette réponse contient des caractères non imprimables. Voir les liens ci-dessous pour le code correct.
Démonstration . Harnais de test.
Explication:
la source