introduzione
Ultimamente mi sono abituato a scrivere con Swype .
Ho notato che alcune parole possono essere prodotte tracciando una linea retta dalla tua lettera iniziale alla lettera finale o saltando le lettere che si ripetono.
Ad esempio, posso digitare la parola balloonSwyping tra le seguenti lettere:
b> a> l> o> n.
Sfida
Definiamo il percorso swype più breve o SSP, come il numero minimo di segmenti di linea distinguibili necessari per digitare una stringa. Un segmento di linea è una linea retta continua tra due o più lettere. Qualsiasi cambio di direzione avvia un nuovo segmento di linea, sebbene alcune parole possano essere scambiate disegnando una sola linea retta.
Usa questo semplice layout di tastiera 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
Nell'esempio sopra, la parola balloonavrà un SSPof 4come dettagliato nella sequenza seguente:
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 stringa qwertyha SSP= 1 poiché non è richiesto alcun cambio di direzione quando si scambia questa parola.
Ingresso
Una stringa di singola parola contenente qualsiasi a-ztramite STDIN, argomento della funzione o riga di comando.
Produzione
Stampa tramite STDOUT, return o l'alternativa più vicina alla tua lingua, il numero che nrappresenta la stringa SSP.
Una nuova riga finale facoltativa in uscita. Scappatoie standard non consentite. Vince l'invio più breve in byte.
Appunti
- Un cambio di direzione avvia un nuovo segmento di linea.
- Le lettere che si ripetono vengono contate una sola volta (ad esempio:
bookkeeperdevono essere trattate comebokeper). - Normalmente, Swpye corregge le lettere perse osservando le lettere vicine e compilando la sua ipotesi migliore. Per questa sfida, supponiamo che non ci siano aumenti del linguaggio naturale, testo predittivo o correzione degli errori.
- Gli
A-Zinput maiuscoli sono trattati come le loro controparti minuscole. - Ignora qualsiasi numero
0-9nell'input. - Percorsi diagonali sono consentiti - che è, una linea retta che copre le lettere
o,k,n, per esempio, contano come1segmento. Questa regola vale per qualsiasi pendenza diagonale (es: letterec,h,isono in linea).
Esempi
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