pengantar
Akhir-akhir ini, saya sudah terbiasa mengetik dengan Swype .
Saya perhatikan kata-kata tertentu dapat dihasilkan dengan menggambar garis lurus dari huruf awal Anda ke huruf akhir Anda, atau dengan melewatkan huruf yang diulang.
Misalnya, saya bisa mengetikkan kata balloondengan Menggeser huruf-huruf berikut:
b> a> l> o> n.
Tantangan
Mari kita mendefinisikan Jalur Swype Terpendek , atau SSP, sebagai jumlah minimum segmen garis yang dapat dibedakan yang diperlukan untuk mengetik string. Segmen garis adalah garis lurus terus menerus antara dua, atau lebih, huruf. Setiap perubahan arah memulai segmen garis baru - meskipun beberapa kata mungkin di-Swip dengan menggambar hanya satu garis lurus.
Gunakan tata letak keyboard QWERTY sederhana ini :
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
Dalam contoh di atas, kata balloonakan memiliki SSPdari 4yang termaktub dalam urutan di bawah ini:
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)
String qwertymemiliki SSP= 1 karena tidak ada perubahan arah yang diperlukan saat Swyping kata ini.
Memasukkan
Satu string kata yang berisi apa saja a-zmelalui STDIN, argumen fungsi, atau baris perintah.
Keluaran
Cetak melalui STDOUT, return, atau alternatif terdekat bahasa Anda, nomor yang nmewakili string SSP.
Satu trailing newline opsional di outut. Celah standar tidak diijinkan. Pengajuan terpendek dalam byte menang.
Catatan
- Perubahan arah memulai segmen garis baru.
- Surat yang diulang hanya dihitung satu kali (misalnya:
bookkeeperharus diperlakukan sebagaibokeper). - Biasanya, Swpye mengoreksi surat yang terlewat dengan melihat surat tetangga dan mengisi tebakan terbaiknya. Untuk tantangan ini, anggap tidak ada penambahan bahasa alami, teks prediksi atau koreksi kesalahan.
A-ZInput huruf besar diperlakukan seperti rekan-rekan huruf kecil mereka.- Abaikan angka apa pun
0-9dalam input. - Jalur diagonal diperbolehkan - yaitu, garis lurus yang mencakup huruf
o,k,n, misalnya, dihitung sebagai1segmen. Aturan ini berlaku untuk setiap lereng diagonal (misalnya: hurufc,h,isejalan).
Contohnya
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