В этой задаче ваша задача состоит в том, чтобы написать программу длиной менее 300 символов, которая содержит короткий параграф или несколько предложений, которые сказал кандидат, и выдает их.
Ввод : может быть взят в качестве параметра для функции, для ввода в программу и т. Д. Это будет короткий абзац, отмеченный должным образом.
Вывод : кандидат, который, как вы думаете, есть. Это может быть одним из
Ben Carson (1)
Ted Cruz (2)
John Kasich (3)
Marco Rubio (4)
Donald Trump (5)
Hillary Clinton (6)
Bernie Sanders (7)
Я исключил имена людей, которые выпали из 1 марта. Вы можете вывести само имя или, что более удобно, номер, соответствующий имени.
Подсчет баллов: ваш балл - это процент тестовых случаев, которые вы получили. Самый высокий балл выигрывает. Галстуки (или отличные результаты) разбиваются по длине кода, как в коде гольфа.
Контрольные примеры могут быть получены из:
http://www.presidency.ucsb.edu/debates.php
Нажмите на каждую дискуссию, как демократов, так и республиканцев, которые произошли до сих пор (до 1 марта). Каждый абзац является тестовым примером, если только «абзац» не содержит менее 20 символов.
Вот код, который вытаскивает контрольные примеры с определенной страницы:
var t = $(".tools").parentNode.querySelectorAll("p");
var categ = {}, cur = 0;
for (var i = 0; i < t.length; ++i) {
var p = t[i], str = p.innerText;
if (p.querySelector("b")) {
cur = p.querySelector("b").innerText.replace(':', '');
str = str.replace(/^.*?:\s/, '');
}
str = str.replace(/\[applause\]/g, '')
if (str.length < 20) continue;
if (categ[cur] == null) categ[cur] = [];
categ[cur].push(str);
}
Затем вы categ.SANDERS
можете получить список всех абзацев, которые сказал сенатор Сандерс.
Вы можете отказаться от всего, что не сказано кандидатами, перечисленными выше (например, categ.BUSH
или categ.CHRISTIE
).
Вот файл со всеми тестами: https://drive.google.com/file/d/0BxMn8--P71I-bDZBS2VZMDdmQ28/view?usp=sharing
Файл организован кандидатом
CANDIDATE CANDIDATE_LAST_NAME
(empty line)
Series of statements. Each paragraph is separated by (NEW PARAGRAPH)-
(empty line)
CANDIDATE NEXT_CANDIDATE_LAST_NAME
(empty line)
etc.
Пример частичного представления будет:
if (/ win | wall | great | beautiful/.test(p)) return 5;
if (/ percent | top one | rigged /.test(p)) return 7;
// etc. for all candidates
или
var words = p.split(' ');
// majority of words have less than 5 characters
if (words.length - words.filter(a => a.length < 5).length < 4) evidence[5]++;
// at the end
return /* index with the most evidence */
Вот место, где вы можете протестировать решения javascript: https://jsfiddle.net/prankol57/abfuhxrh/
Код использует параметр p
для представления фразы для классификации. Пример кода, который набирает около 20% (угадывание получит около 11%):
if (/ rigged | top | percent | Wall Street /.test(p)) return 'Sanders';
return 'Trump';
Именно то, что я спрашиваю: напишите программу / функцию длиной менее 300 символов, которая принимает в качестве входных данных фразу, которую сказал кандидат, и возвращает в качестве выходной информации, какой кандидат сказал это. Ваша оценка - это процент тестовых случаев, которые вы получили правильно. Самый высокий балл выигрывает.
Да, я знаю, что много строк есть [laughter]
или [cheering]
в них. Они не будут удалены. В худшем случае это дополнительная информация, которую вы можете игнорировать; в лучшем случае это дополнительная информация, которую вы можете использовать (например, я придумал это, но, может быть, смех людей свидетельствует о том, что говорит Марко Рубио). Контрольные примеры, как они появляются в текстовом файле.