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 balloon
dengan 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 balloon
akan memiliki SSP
dari 4
yang 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 qwerty
memiliki SSP
= 1 karena tidak ada perubahan arah yang diperlukan saat Swyping kata ini.
Memasukkan
Satu string kata yang berisi apa saja a-z
melalui STDIN, argumen fungsi, atau baris perintah.
Keluaran
Cetak melalui STDOUT, return, atau alternatif terdekat bahasa Anda, nomor yang n
mewakili 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:
bookkeeper
harus 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-Z
Input huruf besar diperlakukan seperti rekan-rekan huruf kecil mereka.- Abaikan angka apa pun
0-9
dalam input. - Jalur diagonal diperbolehkan - yaitu, garis lurus yang mencakup huruf
o
,k
,n
, misalnya, dihitung sebagai1
segmen. Aturan ini berlaku untuk setiap lereng diagonal (misalnya: hurufc
,h
,i
sejalan).
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
Jawaban:
CJam,
7876736862 bytePerhatikan bahwa kode tersebut mengandung karakter yang tidak dapat dicetak.
Meminjam ide pintar isaacg menggunakan RLE untuk menghitung jalur yang disimpan 6 byte.
Cobalah online di penerjemah CJam . Jika tautan tidak berfungsi, salin kode dari tempel ini .
Bagaimana itu bekerja
sumber
Pyth,
535049 byteFormat kompresi keyboard berkat @Dennis.
Jawaban ini mengandung beberapa karakter yang tidak patut dicetak. Lihat tautan di bawah untuk kode yang benar.
Demonstrasi . Uji Harness.
Penjelasan:
sumber