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