INPUT: Setiap string yang hanya terdiri dari huruf kecil melalui argumen fungsi, argumen baris perintah, STDIN, atau yang serupa.
OUTPUT: Cetak atau kembalikan angka yang akan mewakili jumlah jarak huruf sesuai dengan metrik berikut:
Anda mengambil huruf pertama dan kedua dan menghitung jarak di antara mereka. Jarak ditentukan oleh tata letak keyboard QWERTY, di mana setiap huruf yang berdekatan di baris yang sama memiliki jarak 1 dan setiap huruf yang berdekatan di kolom yang sama memiliki jarak 2. Untuk mengukur jarak antara huruf yang tidak berdekatan, Anda mengambil jalur terpendek antara keduanya.
Contoh:
q->w is 1 distance apart
q->e is 2 distance
q->a is 2 distance
q->s is 3 distance (q->a->s or q->w->s)
q->m is 10 distance
Kemudian Anda mengambil huruf kedua dan ketiga, lalu yang ketiga dan keempat, dll, hingga Anda mencapai akhir input. Outputnya adalah jumlah dari semua jarak tersebut.
Contoh input dan output:
INPUT: qwer
OUTPUT: 3
INPUT: qsx
OUTPUT: 5
INPUT: qmq
OUTPUT: 20
INPUT: tttt
OUTPUT: 0
Berikut adalah gambar yang menunjukkan huruf mana yang berada di kolom yang sama:
Ini kode golf, jadi kode terpendek dalam byte menang!
Jawaban:
CJam, 50 byte
Perhatikan bahwa kode tersebut mengandung karakter yang tidak dapat dicetak.
Cobalah online di penerjemah CJam . Jika permalink tidak berfungsi, salin kode dari tempel ini .
Latar Belakang
Kami mulai menetapkan posisi 0 hingga 9 untuk huruf-huruf di baris atas, 10 hingga 18 untuk huruf-huruf di baris rumah, dan 20 hingga 26 untuk huruf-huruf di baris bawah.
Posisi semua 26 huruf, dalam urutan abjad, adalah
Ini adalah array dengan panjang 26. Karena array membungkus dalam CJam, dan titik kode huruf h adalah 104 = 4 × 26 , kami memutar array 7 unit ke kiri, sehingga setiap posisi huruf dapat diakses dengan nya titik kode.
Sekarang kita menyandikan array ini dengan mempertimbangkan digit elemennya dari nomor basis 27 dan mengkonversi bilangan bulat yang dihasilkan menjadi basis 257.
Dengan mengganti setiap bilangan bulat dengan karakter Unicode yang sesuai, kami memperoleh string dari kode sumber.
Bagaimana itu bekerja
sumber
Python 2,
220...124119 BytesTerima kasih banyak kepada Sp3000 karena telah menghemat banyak byte.
Pemakaian:
Lihat disini.
+ Penjelasan sedikit berubah warna:
sumber
Java, 266 byte
Versi tidak disatukan:
sumber
int v=0,l=q.length(),p[][]=new int[l][2];
SWI-prolog, 162 byte
Contoh:
a(`qmq`)
output20
(Dantrue
setelah itu tetapi tidak ada yang bisa saya lakukan tentang itu).Edit: harus menggunakan 3 byte lagi. Program asli saya melewati test case yang diberikan tetapi sebenarnya salah (nilai absolut salah tempat / hilang)
Catatan: jika Anda ingin menggunakannya di say Ideone , Anda harus mengganti semua backquote
`
tanda kutip menjadi dua tanda kutip"
. Backquotes dalam kasus saya (yang merupakan standar saat ini di SWI-Prolog) mewakili daftar kode untuk string, dan string karakter tanda kutip ganda, tetapi ini berbeda pada versi SWI-Prolog yang lebih lama.sumber