В этой задаче ваша задача состоит в том, чтобы написать программу длиной менее 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]в них. Они не будут удалены. В худшем случае это дополнительная информация, которую вы можете игнорировать; в лучшем случае это дополнительная информация, которую вы можете использовать (например, я придумал это, но, может быть, смех людей свидетельствует о том, что говорит Марко Рубио). Контрольные примеры, как они появляются в текстовом файле.