Menü Kısayolları
Geleneksel olarak, kullanıcı menülerine, Alt + (a letter)tüm metin kutuları odaklanmamışken ( gmail stili) klavye kısayollarıyla veya hatta harflere dokunarak erişilebilir .
Senin görevin
Menü girişleri giriş olarak verildiğinde, göreviniz her menü girişine uygun bir kısayol harfi vermektir.
Bir sözcük grubunu kabul eden bir işlev veya program yazın - menü girişleri (dizeler dizisi veya dil eşdeğeri olarak) ve tek bir harften bir menü girişine bir sözlük veya hashmap döndürür.
Bir parametre kullanabilir ve bir değer döndürebilir veya STDIN'i kullanabilir ve sonuçlarınızı STDOUT'a gönderebilirsiniz. Sen edilir değil zaten giriş doldurulur küresel / kapsam değişkeni varsaymak izin verdi.
Uygun mektubu belirleme algoritması
- Temel olarak kelimenin ilk harfidir. Aşağıdaki varsayımlara ve örneklere bakın.
- Tüm girdilerin harfleri mevcut değilse, kısayol kullanılacaktır
(a letter) + (a number). Girişten hangi harfi seçeceğiniz keyfi olur. Sayı 0'dan başlamalı ve 1 ile artırılmalıdır - böylece tüm kısayollar benzersizdir. Aşağıdaki üçüncü örneğe bakın.
Varsayımlar
- Giriş bir Set olacaktır, yani tekrarlama olmaz, her giriş benzersizdir.
- Girişin uzunluğu herhangi bir negatif olmayan tamsayı olabilir (dilinizin MAX_INT kadarı).
- Büyük / küçük harf duyarlılığı: Giriş büyük / küçük harfe duyarlıdır (ancak büyük / küçük harf göz ardı edilirken benzersiz kalır). Sonuçlar orijinal muhafazaları ile birlikte orijinal girişleri içermelidir. Ancak, çıkış kısayol harfleri büyük / küçük harfe duyarlı değildir.
- Tüm giriş sözcükleri sayılarla bitmez.
- Hiçbir "kötü girdi" test edilmeyecektir. "Kötülük girdisi" belli bir harfin sayacını 10 kattan fazla artırmanız gerektiği şekildedir.
Örnekler
Aşağıdaki örnekler JSON'dadır, ancak bir dizi ve Sözlük için dil eşdeğerini kullanabilirsiniz veya - STD G / Ç kullanıyorsanız - giriş ve çıktınız için okunabilir herhangi bir biçim (csv, hatta boşluk gibi) ayrılmış değerler).
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'}
Kazanma koşulları
En kısa kod kazanır. Yalnızca ASCII'ye izin verilir.
['ab', 'a']vermek {a:'ab', a0:'a'}veya {b:'ab', a:'a'}?