W tym wyzwaniu Twoim zadaniem jest napisanie programu zawierającego mniej niż 300 znaków, który wymaga krótkiego akapitu lub kilku zdań, które wypowiedział kandydat, i wypowiedz, kto to powiedział.
Wejście : Może być traktowane jako parametr funkcji, dane wejściowe do programu itp. Będzie to krótki akapit, odpowiednio interpunkcyjny.
Wyjście : Kandydat, że myślisz, że jest. To może być jeden z nich
Ben Carson (1)
Ted Cruz (2)
John Kasich (3)
Marco Rubio (4)
Donald Trump (5)
Hillary Clinton (6)
Bernie Sanders (7)
Pominąłem nazwiska osób, które wypadły 1 marca. Możesz wypisać samą nazwę lub, wygodniej, numer, który odpowiada nazwie.
Punktacja: Twój wynik to odsetek poprawnych przypadków testowych. Najwyższy wynik wygrywa. Remisy (lub doskonałe wyniki) są dzielone według długości kodu, jak w golfie kodowym.
Przypadki testowe można pobrać z:
http://www.presidency.ucsb.edu/debates.php
Kliknij każdą debatę, zarówno demokratyczną, jak i republikańską, która miała miejsce dotychczas (przed 1 marca). Każdy akapit jest przypadkiem testowym, chyba że „akapit” ma mniej niż 20 znaków.
Oto kod, który wyciąga przypadki testowe z określonej strony:
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);
}
Następnie możesz zrobić, categ.SANDERS
aby uzyskać listę wszystkich akapitów, które powiedział senator Sanders.
Możesz odrzucić wszystko, co nie zostało powiedziane przez wyżej wymienionych kandydatów (np. categ.BUSH
Lub categ.CHRISTIE
).
Oto plik ze wszystkimi przypadkami testowymi: https://drive.google.com/file/d/0BxMn8--P71I-bDZBS2VZMDdmQ28/view?usp=sharing
Plik jest organizowany przez kandydata
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.
Przykładowym częściowym przesłaniem byłoby:
if (/ win | wall | great | beautiful/.test(p)) return 5;
if (/ percent | top one | rigged /.test(p)) return 7;
// etc. for all candidates
lub
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 */
Oto miejsce, w którym możesz przetestować rozwiązania javascript: https://jsfiddle.net/prankol57/abfuhxrh/
Kod używa parametru p
do reprezentowania frazy do sklasyfikowania. Przykładowy kod, który zdobędzie około 20% (zgadywanie dostanie około 11%):
if (/ rigged | top | percent | Wall Street /.test(p)) return 'Sanders';
return 'Trump';
Dokładnie o co pytam: napisz program / funkcję składającą się z mniej niż 300 znaków, który przyjmuje jako dane wejściowe wyrażenie wypowiedziane przez kandydata i zwraca jako wynik, który kandydat to powiedział. Twój wynik to odsetek przypadków testowych, które masz rację. Najwyższy wynik wygrywa.
Tak, wiem, że wiele linii ma [laughter]
lub [cheering]
w nich. Nie zostaną one usunięte. W najgorszym przypadku są to dodatkowe informacje, które można zignorować; w najlepszym razie są to dodatkowe informacje, z których możesz skorzystać (np. wymyśliłem to, ale może śmiech ludzi jest dowodem na to, że mówi Marco Rubio). Przypadki testowe są takie, jakie występują w pliku tekstowym.