Einführung
In letzter Zeit habe ich mich daran gewöhnt, mit Swype zu tippen .
Ich habe bemerkt, dass bestimmte Wörter erzeugt werden können, indem eine gerade Linie vom Anfangsbuchstaben zum Endbuchstaben gezogen wird oder indem Buchstaben, die sich wiederholen, übersprungen werden.
Zum Beispiel kann ich das Wort ballooneingeben, indem ich über die folgenden Buchstaben tippe:
b> a> l> o> n.
Herausforderung
Definieren wir den kürzesten Swype-Pfad oder SSPdie Mindestanzahl unterscheidbarer Liniensegmente, die zum Eingeben einer Zeichenfolge erforderlich sind. Ein Liniensegment ist eine durchgehende gerade Linie zwischen zwei oder mehr Buchstaben. Bei jeder Richtungsänderung wird ein neues Liniensegment erstellt. Einige Wörter können jedoch durch Ziehen einer einzelnen geraden Linie vertauscht werden.
Verwenden Sie dieses einfache QWERTZ- Tastaturlayout:
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
In dem obigen Beispiel wird das Wort balloonwird eine hat SSPvon 4so detailliert in der folgenden Reihenfolge:
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)
Die Zeichenfolge qwertyhat SSP= 1, da beim Swippen dieses Wortes keine Richtungsänderung erforderlich ist.
Eingang
Eine einzelne Wortfolge, die a-züber STDIN, ein Funktionsargument oder eine Befehlszeile eine beliebige Zeichenfolge enthält .
Ausgabe
Drucken Sie über STDOUT, return oder die nächstgelegene Alternative Ihrer Sprache, wobei die Zahl ndie Zeichenfolge darstellt SSP.
Eine abschließende Newline optional in outut. Standardlücken sind nicht erlaubt. Kürzeste Einreichung in Bytes gewinnt.
Anmerkungen
- Ein Richtungswechsel startet ein neues Liniensegment.
- Buchstaben, die sich wiederholen, werden nur einmal gezählt (zB:
bookkeepersollten als behandelt werdenbokeper). - Normalerweise korrigiert Swpye fehlende Buchstaben, indem es benachbarte Buchstaben ansieht und die bestmögliche Schätzung eingibt. Nehmen Sie für diese Herausforderung an, dass es keine natürlichen Spracherweiterungen, Textvorhersagen oder Fehlerkorrekturen gibt.
A-ZEingaben in Großbuchstaben werden wie ihre Gegenstücke in Kleinbuchstaben behandelt.- Ignorieren Sie alle Zahlen
0-9in der Eingabe. - Diagonal Pfade erlaubt - das heißt, eine gerade Linie, die Abdeckungen Buchstaben
o,k,n, beispielsweise als zählen1Segment. Diese Regel gilt auch für alle diagonalen Neigung (zB Buchstabenc,h,isind in Zeile).
Beispiele
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