在这个挑战中,您的任务是编写一个少于300个字符的程序,该程序包含应试者说过的简短段落或几句话,并输出说出它的人。
输入:可以作为函数的参数,也可以作为程序的输入等。它将是一个简短的段落,正确标点。
输出:您认为是的候选人。这可能是其中之一
Ben Carson (1)
Ted Cruz (2)
John Kasich (3)
Marco Rubio (4)
Donald Trump (5)
Hillary Clinton (6)
Bernie Sanders (7)
从3月1日起退学的人的名字,我已经省略了。您可以输出名称本身,或者更方便地输出与名称相对应的数字。
评分: 您的分数是您正确的测试用例的百分比。最高分获胜。领带(或完美分数)会像编码高尔夫球一样被编码长度打断。
测试用例可以从以下方面获取:
http://www.presidency.ucsb.edu/debates.php
单击到目前为止(3月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]
在其中。这些将不会被删除。最糟糕的是,它们是您可以忽略的额外信息。充其量,它们是您可以使用的额外信息(例如,我编造了这个信息,但也许人们的欢笑是Marco Rubio在讲话的证据)。测试用例与文本文件中显示的一样。