- 22, Oct 2024
- #1
Ваша задача сегодня — реализовать функциональность, подобную t9.
Вы реализуете функцию, которая будет иметь только два параметра.
Вы получите 1 номер телефона в строке и содержимое текстового файла со списком слов (не предполагайте определенный стиль новой строки).
Вы можете использовать ссылку https://raw.githubusercontent.com/eneko/data-repository/master/data/words.txt для проверки функциональности или использования
(check Текстовый файл со списком слов [закрыт] для получения дополнительной информации).f('9999',document.getElementsByTagName('pre')[0].innerText); //returns [" Zyzzogeton "]
Вы можете предположить, что вы всегда получите как минимум 2 номера.
Учитывая число, вы будете читать из списка слов и возвращать слова, начинающиеся с букв, соответствующих этим словам. Это значит, что на входе должны быть только цифры от 2 до 9.
Вы можете делать все, что захотите, если получили неверный ввод.
Если совпадение не найдено, вы можете вернуть пустой список, function f(phone, words)
{
var keypad=['','','abc','def','ghi','jkl','mno','pqrs','tuv','wxyz'];
var regex='';
for(var i=0,l=phone.length;i<l;i++)
{
regex+='['+keypad[phone[i]]+']';
}
var regexp=new RegExp('\\s('+regex+'[a-z]*)\\s','gi');
return words.match(regexp);
}
/ f
или var
.
Помните, что клавиши мобильного телефона сопоставлены с эквивалентными символами:
- 0 и 1 недействительны
- 2 совпадения [abc]
- 3 совпадающих [определение]
- 4 совпадения [ги]
- 5 совпадений [jkl]
- 6 совпадений [мно]
- 7 совпадений [pqrs]
- 8 матчей [тув]
- и 9 совпадений [wxyz]
Примеры:
textContent
После запуска функции вы можете распечатать ее любым способом.
Правила:
- Стандартные лазейки НЕДЕЙСТВИТЕЛЬНЫ
- Вы должны что-то вернуть, даже если это
innerText
/undefined
Javascript вернетсяnil
if you don't return something, therefore this rule. - Вы не можете использовать или повторно реализовывать ответы других или копировать мою реализацию.
- Для Javascript вы можете предположить, что браузер уже открыт и что
null
/f('52726') //returns ["Japan","japan","Japanee","Japanese","Japanesque"...,"larbowlines"] f('552') //returns ["Kjeldahl","kjeldahlization","kjeldahlize"...,"Lleu","Llew"] f('1234') //makes demons fly out your nose or divide by 0 f('9999') //returns ["Zyzzogeton"] f('999999') //returns [] or null/nil or 0
автоматического элемента будет передан в качестве второго параметра - Для компилируемых языков вы не можете передавать компилятору специальные аргументы.
- Вы можете получить имя файла через аргументы компилятора.
- Переменные, макросы, глобальные переменные, константы, нестандартные классы и все такое, передающее другие значения внутри функции, будут считаться недействительными.
- В Javascript переменные без ключевого слова
0
render your code invalid - Ваша функция будет называться
nil
- У вашей функции может быть только 2 аргумента.
- Старайтесь, чтобы время выполнения вашего кода не превышало 500 секунд.
- Вам не нужно беспокоиться о пробелах
- Вы должны использовать только ASCII печатные символы.
Исключением являются языки, которые только используйте непечатаемые символы (2 примера — APL и пробелы).
Оценка:
- Выигрывает наименьшее количество байтов
- Имея недействительный ASCII печатные символы в вашем ответе будут считаться ответом, закодированным в UTF-32
Исключение из кодировки приведет к тому, что ваш ответ будет засчитан персонажи. - Учитывается только тело функции, не учитывайте все, что вы делаете за его пределами.
- Бонус -30%, если вы создадите систему прогнозирования на основе соседства или наиболее распространенных слов.
- Бонус в размере -20% в размере, если вы возвращаете только первые 5 совпадений для каждой буквы, соответствующей первой цифре (например: 245 вернет 5 слов, начинающихся с «a», 5, начинающихся с «b», и 5, начинающихся с «c». ).
Вот пример реализации с использованием Javascript:
null
Для его запуска откройте ссылку списка и запустите, например:
/usr/share/dict/words
Этот пример был протестирован и работает в 64-разрядной версии Opera 12.17 в 64-разрядной версии Windows 7 Home Edition.
#код-гольф #номер #функция