ในการท้าทายนี้งานของคุณคือการเขียนโปรแกรมที่มีอักขระน้อยกว่า 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 */
ที่นี่เป็นสถานที่ที่คุณสามารถทดสอบโซลูชันจาวาสคริปต์ได้ที่: https://jsfiddle.net/prankol57/abfuhxrh/
รหัสใช้พารามิเตอร์p
เพื่อแสดงวลีเพื่อจัดประเภท ตัวอย่างรหัสที่ให้คะแนนประมาณ 20% (การคาดเดาจะได้ประมาณ 11%):
if (/ rigged | top | percent | Wall Street /.test(p)) return 'Sanders';
return 'Trump';
สิ่งที่ฉันถาม:เขียนโปรแกรม / ฟังก์ชั่นที่มีความยาวน้อยกว่า 300 ตัวอักษรที่ใช้เป็นวลีที่ผู้สมัครได้พูดและส่งกลับเป็นผลลัพธ์ที่ผู้สมัครบอกว่ามัน คะแนนของคุณคือเปอร์เซ็นต์ของกรณีทดสอบที่คุณได้รับ คะแนนสูงสุดชนะ
ใช่ฉันรู้ว่ามากของสายมี[laughter]
หรือ[cheering]
ในพวกเขา สิ่งเหล่านี้จะไม่ถูกลบ ที่แย่ที่สุดคือข้อมูลเพิ่มเติมที่คุณสามารถเพิกเฉยได้ อย่างดีที่สุดพวกเขาเป็นข้อมูลเพิ่มเติมที่คุณสามารถใช้ได้ (เช่นฉันสร้างมันขึ้นมา แต่บางทีคนหัวเราะก็เป็นหลักฐานว่ามาร์โกรูบิโอกำลังพูด) กรณีทดสอบเป็นตามที่ปรากฏในไฟล์ข้อความ