Pintasan Menu
Secara tradisional, menu pengguna dapat diakses dengan cara pintas keyboard, seperti Alt + (a letter)
, atau bahkan hanya menekan huruf ketika semua kotak teks tidak fokus ( gaya gmail ).
Tugas Anda
Mengingat entri menu sebagai input, tugas Anda adalah memberikan setiap entri menu surat jalan pintas yang tepat.
Tulis fungsi atau program yang menerima serangkaian kata - entri menu (sebagai array string, atau padanan bahasa Anda), dan mengembalikan kamus, atau hashmap, dari satu huruf ke entri menu.
Anda bisa menggunakan parameter dan mengembalikan nilai, atau menggunakan STDIN dan output hasilnya ke STDOUT. Anda tidak boleh berasumsi bahwa variabel global / lingkup sudah diisi dengan input.
Algoritma untuk menentukan huruf yang tepat
- Pada dasarnya ini adalah huruf pertama yang tersedia. Lihat asumsi dan contoh di bawah ini.
- Jika semua huruf entri tidak tersedia, pintasannya akan
(a letter) + (a number)
. Surat mana yang Anda pilih dari entri adalah arbitrer. Angka harus dimulai dari 0 dan bertambah 1 - sehingga semua pintasan unik. Lihat contoh ketiga di bawah ini.
Asumsi
- Input akan menjadi Set, yaitu tanpa pengulangan, setiap entri adalah unik.
- Panjang input dapat berupa bilangan bulat non-negatif (hingga MAX_INT bahasa Anda).
- Sensitivitas kasus: Input peka huruf besar-kecil, (tetapi akan tetap unik saat mengabaikan huruf besar-kecil). Hasilnya harus berisi entri asli dengan casing aslinya. Namun, huruf pintasan keluaran tidak peka huruf besar-kecil.
- Semua kata input tidak akan diakhiri dengan angka.
- Tidak ada "input jahat" yang akan diuji. "Input jahat" adalah sedemikian rupa sehingga Anda harus menambah penghitung surat tertentu lebih dari 10 kali.
Contohnya
Contoh di bawah ini dalam JSON, tetapi Anda dapat menggunakan padanan bahasa Anda untuk array dan Kamus, atau - jika Anda menggunakan STD I / O - format yang dapat dibaca untuk input dan output Anda (seperti csv, atau bahkan space- nilai yang dipisahkan).
1.
Input: ['File', 'Edit', 'View', 'Help']
Output: {f:'File', e:'Edit', v:'View', h:'Help'}
2.
Input: ['Foo', 'Bar', 'FooBar', 'FooBars']
Output: {f:'Foo', b:'Bar', o:'FooBar', a:'FooBars'}
3.
Input: ['a', 'b', 'aa', 'bb', 'bbq', 'bbb', 'ba']
Output: {a:'a', b:'b', a0:'aa', b0:'bb', q:'bbq', b1:'bbb', b2:'ba'}
Kondisi menang
Kode terpendek menang. Hanya ASCII yang diizinkan.
['ab', 'a']
memberi{a:'ab', a0:'a'}
atau{b:'ab', a:'a'}
?Jawaban:
Javascript ( ES6 )
106105100Fungsi ini mengambil input sebagai array dan menampilkan objek javascript.
Hasil:
Tidak Terkumpul / Berkomentar:
sumber
['a', 'aa', 'aaa', 'aaaa', 'aaaaa', 'aaaaaa', 'aaaaaaa', 'aaaaaaaa', 'aaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaaa', 'aaaaaaaaaaaa']
, tapi saya pikir kita bisa mengabaikan kasus tepi seperti itu, bukan?11
? Anda tidak dapat menekan satu tombol dua kali dalam pintasan keyboard: PPython 2.x -
176 170 157114 bytePendekatan yang sangat sederhana, tetapi seseorang harus memulai permainan.
Contoh:
Saya pikir satu-satunya penjelasan yang diperlukan adalah kode yang tidak diklik. (Ini sebenarnya adalah versi asli)
sumber
JavaScript (ECMAScript 6) - 107 Karakter
Penjelasan:
Tes:
sumber
PHP> = 5,4 - 149 karakter
Menurut standar PHP (masukkan sniggers di sini) , input tersebut bukan JSON yang valid seperti yang digunakan
'
alih-alih"
, jadi saya sedikit kurang ajar dan saya menggunakan Input sebagai deklarasi variabel aktual:Menggunakan contoh-contoh:
Un-golfified itu cukup mendasar:
sumber
json_encode
doa).echo
tidak bekerja dengan array; tetapiprint_r($c);
akan melakukannya, menghemat 9 byte.str_split(strtoupper($w))
danucfirst($w[0])
dapat menyelesaikannya (+21); atau$s=strtoupper($w);
(+18)PowerShell ,
9183 byteCobalah online!
Ini melempar pengecualian jika pintasan yang tepat tidak ditemukan.
Belum dibuka:
sumber
PHP, 153 byte
jalankan dengan
php-r '<code>' <<EOF
+ Enter +<word1>
+ Enter +<word2>
+ Enter + ... +EOF
+ Enterbekerja pada argv untuk 155 byte :
jalankan bersama
php -r '<code>' <word1> <word2> ...
(-13 byte dengan global yang ditentukan:
foreach($i as$w)
alih-alihforeach($argv as$i=>$w)if($i)
)sumber