Wprowadzenie
Ostatnio przyzwyczaiłem się do pisania na Swype .
Zauważyłem, że niektóre słowa można wytworzyć, rysując prostą linię od litery początkowej do litery końcowej lub pomijając powtarzające się litery.
Na przykład mogę wpisać słowo balloon, przesuwając między następującymi literami:
b> a> l> o> n.
Wyzwanie
Zdefiniujmy Najkrótszą Ścieżkę Swype lub SSP, jako minimalną liczbę możliwych do odróżnienia segmentów linii potrzebną do wpisania łańcucha. Segment linii jest ciągłą linią prostą między dowolnymi dwiema lub więcej literami. Każda zmiana kierunku rozpoczyna nowy segment linii - choć niektóre słowa można przesuwać, rysując tylko jedną linię prostą.
Użyj tego prostego układu klawiatury 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
W powyższym przykładzie, słowo balloonbędzie mieć SSPod 4jak wyszczególniono w poniższej kolejności:
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)
Łańcuch qwertyma SSP= 1, ponieważ podczas przesuwania tego słowa nie jest wymagana zmiana kierunku.
Wejście
Ciąg jednego słowa zawierający dowolny parametr a-zSTDIN, argument funkcji lub wiersz poleceń.
Wynik
Drukuj przez STDOUT, return lub w najbliższych językach, liczba nreprezentująca ciąg SSP.
Jeden końcowy nowy wiersz jest opcjonalny w outut. Standardowe luki zabronione. Najkrótsze przesłanie w bajtach wygrywa.
Notatki
- Zmiana kierunku rozpoczyna nowy segment linii.
- Powtarzające się litery są liczone tylko raz (np .:
bookkeeperpowinny być traktowane jakbokeper). - Zwykle Swpye koryguje brakujące litery, patrząc na sąsiednie litery i wypełniając swoje najlepsze domysły. W przypadku tego wyzwania załóżmy, że nie ma żadnych rozszerzeń języka naturalnego, tekstu predykcyjnego ani korekcji błędów.
- Wielkie
A-Zlitery są traktowane jak ich małe odpowiedniki. - Zignoruj dowolne liczby
0-9na wejściu. - Ukośne ścieżki mogą - to jest linia prosta, która obejmuje litery
o,k,nna przykład, liczone jako1segment. Zasada ta dotyczy wszelkich nachylenia przekątnej (np literc,h,isą zgodne).
Przykłady
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