การอ่านข่าวน่าเบื่อ ช่วยฉันด้วย


22

ทุกคนรู้ว่าข่าวน่าเบื่อ น่าเบื่อจริงๆ เว้นแต่จะเป็นเรื่องของนักการเมืองและเรื่องอื้อฉาวของพวกเขา นั่นคือความสนุก! แต่อนิจจานักการเมืองสามารถกระทำเรื่องอื้อฉาวจำนวนมากเท่านั้น ดังนั้นฉันจ้างคุณเพื่อทำให้ข่าวน่าสนใจยิ่งขึ้น

วัตถุประสงค์รับตัวอย่าง HTML ดำเนินการทดแทนทั้งหมดที่พบที่นี่นั่นคือในภาพนี้:

แต่คุณไม่ควรแก้ไขแท็ก HTML ด้วยตนเอง ฉันเรียกคำที่ถูกต้องคำใด ๆ ที่ไม่พบในแท็ก HTML หรือคุณลักษณะของพวกเขา นั่นคือคุณไม่ควรเปลี่ยน<div class="smartphone">iPhone</div>ด้วย<div class="pokedex">iPhone</div>แต่ควรเปลี่ยนด้วย<div>election</div><div>eating contest</div>

การแยกกฎ

  • แก้ไขคุณควรจับคู่คำที่วิเคราะห์โดยไม่ใช่คำเท่านั้น นั่นคือคุณควรจับคู่คำเต็มเท่านั้น (เช่นจับคู่ "Hello พยาน" แต่ไม่ใช่ "Hellowitness", "Hellow itness" หรือ "Witnesspacelection"
  • หากคุณไม่สามารถพิมพ์อักขระบนแป้นพิมพ์ของคุณคุณควรแสดงค่าที่ใกล้เคียงที่สุด (เช่น "สมาร์ทโฟน" จะกลายเป็น "Pokedex")
  • กรณีตัวอักษรตัวแรกหรือตัวอักษรทั้งหมดจะต้องถูกเก็บรักษาไว้ (เช่น "พวกเขาถูกกล่าวหาว่าตาย" กลายเป็น "คินดาพวกเขาตาย" "พวกเขาถูกกล่าวหาว่าตาย" กลายเป็น "พวกเขาอาจตาย" และ "การเลือกตั้ง!" กลายเป็น "การประกวดกิน!" ในขณะที่ "SpAcE" "Spaaace" และ "nEW STUDY" กลายเป็น "tumblr post")
  • ทุกกรณีจะต้องตรงกัน (เช่นคุณต้องจับคู่คำโดยไม่คำนึงถึงตัวพิมพ์ใหญ่)
  • อินสแตนซ์ใด ๆ ในการที่a <vowel>จะพบควรจะเป็นan <vowel>และในทางกลับกัน (เช่น "วุฒิสมาชิก" กลายเป็น "เอลฟ์ - ลอร์ด") คุณไม่จำเป็นต้องทำเช่นนี้ทุกครั้ง แต่อย่างน้อยก็เพื่อทดแทนของคุณเอง
  • พหูพจน์ใด ๆ จะต้องคงไว้เป็นพหูพจน์ในการแปล (เช่น "สมาร์ทโฟน" กลายเป็น "pokedex" และ "Spaces" กลายเป็น "Spaaaces")
  • สิ่งใดในกาลที่แน่นอนจะต้องคงอยู่ในนั้นในการแปล (เช่น "สร้างใหม่" กลายเป็น "ล้างแค้น", "สร้างใหม่" กลายเป็น "ล้างแค้น" ฯลฯ )
  • สิ่งใดในเอกพจน์จะต้องคงอยู่เป็นเอกเทศในการแปล (เช่น "ผู้นำรัฐสภา" กลายเป็น "แม่น้ำวิญญาณ")
  • หากรายการครอบคลุมองค์ประกอบ HTML หลายรายการคุณควรยังคงจับคู่ แต่คุณอาจ "ทิ้ง" องค์ประกอบกลางใด ๆ (เช่นS<b>pa</b>aceควรกลายเป็น "สปา") หากรายการมีข้อมูลในตัวเองภายในองค์ประกอบเดียวรายการนั้นควรมีการจับคู่อย่างถูกต้องและแท็กยังคงอยู่
  • "พยาน" ควรกลายเป็น "บรรดาคนที่ฉันรู้จัก"
  • "พยาน" ควรเป็น "เพื่อนที่ฉันรู้จัก"
  • "พยาน" ควรเป็น "เพื่อนที่ฉันรู้จัก"
  • "ไม่สามารถเข้าถึงความคิดเห็นได้" ควรกลายเป็น "มีความผิดและทุกคนรู้"
  • "ไม่สามารถเข้าถึงความคิดเห็นได้" ควรกลายเป็น "มีความผิดและทุกคนรู้"

โบนัส

หากคุณตอบสนองความโบนัสของคุณ-N% new amount = (old amount) * (1 - N/100)ดังนั้นถ้าคุณได้พบกับ-5%โบนัสที่มีรหัส 500 new amount = 500 * (1 - 5/100) = 500 * .95 = 475ไบต์ของคุณ

  • -5% โบนัสหากสำหรับ "เว้นวรรค" ทุกครั้งหลังจากการแทนที่ครั้งแรกจะมีการเพิ่ม "a" เป็นพิเศษ ดังนั้นการแทนที่ครั้งแรกจะเป็น "Spaaace" ที่สองจะเป็น "Spaaaace" ที่สามจะเป็น "Spaaaaace" ฯลฯ
  • โบนัส -5% ถ้าทุกหมายเลขที่ถูกต้องคุณแทนที่หมายเลขนั้นด้วยลิงก์ไปยังการ์ตูน XKCD ที่เกี่ยวข้อง (ยังไม่ได้มีอยู่) ถ้าคุณไม่ไปสำหรับโบนัสนี้คุณควรจะตรงกับตัวเลขเช่น500, 3,000, และ4 523 5.324(คุณอาจเลือกที่จะแทนที่ตัวเลขด้วยภาพของการ์ตูนแทนหากคุณทำเช่นนี้แทนที่จะเป็น-5%โบนัสคุณจะได้รับ a -15% bonus. -15%โบนัสพิเศษอีกอย่างถ้าคุณสามารถเพิ่มชื่อ - ข้อความลงในรูปภาพถ้ามี .)
  • โบนัส -25% หากคุณสามารถแทนที่อินสแตนซ์ทั้งหมดพร้อมกันทางด้านขวาของภาพด้วยสิ่งที่อยู่ทางซ้าย (เช่น "สปา" กลายเป็น "พื้นที่", "การประกวดกิน" กลายเป็น "การเลือกตั้ง" ฯลฯ ) หากคุณเลือกที่จะรับโบนัสใด ๆ คุณควรจะสามารถเปลี่ยนกลับไปเป็นรายการที่เกี่ยวข้องได้ (เช่นhttp://www.xkcd.com/542ควรเป็น "542" และ "spaaaaaaaace" ควรกลายเป็น "space")
  • คุณอาจเลือกที่จะทำการทดแทนอย่างน้อย 6 ครั้ง แต่สำหรับการทดแทนแต่ละครั้งที่ไม่ได้ทำ (ไม่รวมการทดแทนโบนัส) คุณจะได้รับการลงโทษเพิ่ม + 10%

ตัวอย่าง IOs (ไม่มีโบนัส)

Input: Witnesses allegedly used their smartphones to commit the crime.
Output: These dudes I know kinda probably used their pokedex to commit the crime.

Input: Mayor Golfalot rebuilt the city after the fatal election.
Output: Mayor Golfalot avenged the city after the fatal eating contest.

Input: This <b>new study</b> shows that people in <span class="space">space</span> cannot be reached for comment.
Output: This <b>tumblr post</b> shows that people in <span class="space">spaaace</span> are guilty and everyone knows it.

Input: <b>g</b><i>oo</i><s>g</s><u>le</u> glass is terrible. :(
Output: virtual boy is terrible. :(

Input: Electric SMARTPHONES have been shown to be more productive when not used by Senators and when not used in cars.
Output: Atomic POKEDEX have been shown to be more productive when not used by Elf-lords and when not used in cats.

Input: Homeland Security has been established as an evil foundation, especially in space.
Output: Homestar runner has been established as an evil foundation, especially in spaaace.

Input: The congressional leaders are testy today.
Output: The river spirits are testy today.

Input: SPACE is not a Senator or a cAR.
Output: SPAAACE is not an Elf-lord or a cat.

Input: Mr. Biz is running for reelection.
Output: Mr. Biz is running for reelection.

Input: Google   glass !
Output: Virtual boy !

Input: New (or old) study
Output: New (or old) study

นี่คือดังนั้นโปรแกรมที่สั้นที่สุดในหน่วยไบต์ชนะ


"Witnessespace" ควรเป็นอย่างไร
lirtosiast

@ThomasKwa "Witnessespace" อย่าจับคู่คำที่ไม่สมบูรณ์
Conor O'Brien


3
นี่เป็นความท้าทายที่น่าสนใจ ฉันจะต้องให้มันยิงในไม่ช้า
Sam Weaver

1
@ DomHastings ใช่ฉันสามารถ; จะไม่มีการป้อนข้อมูลที่ไม่ถูกต้องและไม่มีแท็กปิดตัวเอง (เช่น<br/>)
Conor O'Brien

คำตอบ:


8

Perl 5 , 850

regex จำนวนมากที่ใช้หรือสร้างขึ้น
แฮช% l ใช้สำหรับคำซ้ำ ๆ

%l=qw(A avenge B _be_reached_for_comment C could D dude E pokedex G google_glass I _I_know K river_spirit L congressional_leader P smartphone 4 rebuil N new_stud T tumblr_post V virtual_boy W witness Y _guilty_and_everyone_knows_it);$t="G,V;Ges,Vs;Ps,E;P,E;4d,A;4t,Ad;Nies,Ts;Ny,T;Wes,these DsI;W,this DI;allegedly,kinda probably;cannotB,areY;car,cat;cars,cats;Ls,Ks;L,K;C notB,isY;Cn'tB,isY;election,eating contest;electric,atomic;homeland Security,homestar runner;senator,elf-lord;senators,elf-lords;space,spaaace";$o=$s=$_;$s=~s/\s\s*/ /g;map{$t=~s/$_/$l{$_}/g}keys%l;$t=~s/_/ /g;@L=split/;/,$t;map{my@T=split/,/;push@W,\@T}@L;map{$e=$a=$W[$_][0];$b=$W[$_][1];$U=uc$a;$u=ucfirst$a;$s=~s/(?<![\w"])$U(?![\w"])/\U$b/g;$s=~s/(?<![\w"])$u(?![\w"])/\u$b/g;$s=~s/(?<![\w"])$a(?![\w"])/$b/gi;$e=~s@.@(<.*?>)?$&(</.*?>)?@g;$s=~s/$e /$b /ig;}0..@W;$_=$s.$/

ทดสอบ

$ cat news.txt |perl -p readingnews.pl
These dudes I know kinda probably used their pokedex to commit the crime.
Mayor Golfalot avenged the city after the fatal eating contest.
This <b>tumblr post</b> shows that people in <span class="space">spaaace</span> are guilty and everyone knows it.
virtual boy is terrible. :(
Atomic POKEDEX have been shown to be more productive when not used by Elf-lords and when not used in cats.
Homestar runner has been established as an evil foundation, especially in spaaace.
The river spirits are testy today.
SPAAACE is not a Elf-lord or a cat.
Mr. Biz is running for reelection.
Virtual boy !
New (or old) study

ขอแสดงความยินดีกับสถานที่แรก!
Conor O'Brien

9

JavaScript ES6, 954 ไบต์

ฉันคิดว่ามันจะง่ายกว่านี้มาก! ตอนแรกฉันใช้จาวาสคริปต์ดังนั้นฉันสามารถลงไปที่โหนดข้อความได้อย่างง่ายดายและแทนที่ข้อความในนั้น แต่นั่นไม่ใช่คำถามหลังจากนั้นฉันก็เลยลงเอยด้วยความประหลาดใจ! มันผ่านกรณีทดสอบทั้งหมดยกเว้น<b>g</b><i>oo</i><s>g</s><u>le</u> glass is terrible. :(ที่สตริงทั้งหมดกลับมาใน<b>แท็กเนื่องจากแท็กได้รับความสมดุล ส่วนใหญ่ของรหัสคือตารางการค้นหาและฉันอาจยังคงหายไปกรณีขอบบาง แต่ฉันไม่สามารถหาวิธีที่ดีกว่าในการจัดการกับกาลเวลาได้อย่างถูกต้องและฉันแน่ใจว่าฉันสามารถบีบอัดที่มากขึ้น แต่ฉัน หมดความคิด ... ฉันแน่ใจว่าฉันจะกลับมาที่นี่อีกในภายหลัง ควรใช้ Perl ตัวเลือกที่ดีกว่า@LukStorms !

d=document.createElement`div`,u='toUpperCase'
d[i='innerHTML']=prompt``;`the ${w='witness'}es,those dudes I know|${w}es,these dudes I know|the ${w},this dude I know|${w},dude I know|allegedly,kinda probably|new study,tumblr post|new studies,tumblr posts|rebuild,avenge|rebuilt,avenged|space,spaaace|${g='google glass'},virtual boy|${g}es,virtual boys|smartphones,pokédex|smartphone,pokédex|electric,atomic|senator,elf-lord|car,cat|election,eating contest|congressional leader,river spirit|homeland security,homestar runner|could not ${b='be reached for comment'},is${g=' guilty and everyone knows it'}|couldn't be reached for comment,is${g}|cannot be reached for comment,are${g}`[v='split']`|`.map(w=>d[i]=d[i][r='replace'](eval(`/(<[^>]+)?\\b${(w=w[v]`,`)[0][v]``.join`(?:<\\/?[^>]+>)*`[r](/ /g,'\\s+')}(s?)\\b/gi`),(s,q,t)=>[q?s:((!s.match(/[^A-Z]/)?w[1][u]():s.match(/^[A-Z]/)?w[1][r](/^./,q=>q[u]()):w[1])+t),q?0:w[1]=w[1][r](/ce$/,'ace')][0])[r](/\ba(?= [aeiou])/gi,s=>s=="a"?"an":"AN"))
alert(d[i])

ฉันใช้หนึ่งโบนัสสำหรับ 5% ของspaaaceการได้รับเพิ่มaหลังจากการแข่งขันแต่ละนัดสำเร็จ ใช้alert()ตามที่แนะนำโดย@sysreqขอบคุณ!

ตัวอย่าง

Input: <b>g</b><i>oo</i><s>g</s><u>le</u> glass is terrible. :(
Output: <b>virtual boy is terrible. :(</b>
Input: space. Space? Space! SPACE!
Output: spaaace. Spaaaace? Spaaaaace! SPAAAAAACE!
Input: Smartphones aren't really smart phones, but: SMARTPHONES!
Output: Pokédex aren't really smart phones, but: POKÉDEX!
Input: Senator John Doe was arrested today after attempting to write a new study on the danger of smartphones being used in the car, on his smartphone whilst driving his car. A witness testified to having seen the senator committing the crime. When questioned, Senator Doe "could not be reached for comment". It's unknown if his reputation can be rebuilt and this puts new doubts on the upcoming election. Congressional leaders have yet to comment.
Output: Elf-lord John Doe was arrested today after attempting to write a tumblr post on the danger of pokédex being used in the cat, on his pokédex whilst driving his cat. A dude I know testified to having seen the elf-lord committing the crime. When questioned, Elf-lord Doe "is guilty and everyone knows it". It's unknown if his reputation can be avenged and this puts new doubts on the upcoming eating contest. River spirits have yet to comment.

โบนัส: ที่คั่นหนังสือ

รันสิ่งนี้ในคอนโซลของคุณเพื่ออัพเดตเนื้อความในสถานที่:

d=document.body;`the ${w='witness'}es,those dudes I know|${w}es,these dudes I know|the ${w},this dude I know|${w},dude I know|allegedly,kinda probably|new study,tumblr post|new studies,tumblr posts|rebuild,avenge|rebuilt,avenged|space,spaaace|${g='google glass'},virtual boy|${g}es,virtual boys|smartphones,pokédex|smartphone,pokédex|electric,atomic|senator,elf-lord|car,cat|election,eating contest|congressional leader,river spirit|homeland security,homestar runner|could not ${b='be reached for comment'},is${g=' guilty and everyone knows it'}|couldn't be reached for comment,is${g}|cannot be reached for comment,are${g}`[v='split']`|`.map(w=>d[i='innerHTML']=d[i][r='replace'](eval('/(<[^>]+)?\\b'+(w=w[v]`,`)[0][v]``.join`(?:<\\/?[^>]+>)*`[r](/ /g,'\\s+')+'(s)?\\b/gi'),(s,q,t)=>[q?s:((s.match(/^[A-Z]+$/)?w[1].toUpperCase():s.match(/^[A-Z]/)?w[1][r](/^./,q=>q.toUpperCase()):w[1])+(t||"")),q?0:w[1]=w[1][r](/ce$/,'ace')][0])[r](/\ba ([aeiou])/gi,(s,t)=>s[0]=="a"?"an "+t:"AN "+t))

2
alertสั้นกว่าconsole.logตราบเท่าที่มันทำงานในเบราว์เซอร์
แมว

<b>แท็ก "ปัญหา" เป็นที่ยอมรับอย่างสมบูรณ์หากไม่ได้มากขึ้นได้รับการยอมรับ และฉันรักตัวอย่างสุดท้าย ฉันพยายามคิดถึงสิ่งที่รวมไว้เป็นส่วนใหญ่ ขอแสดงความยินดีกับคำตอบแรก! ฉันแน่ใจว่ามันแข่งขัน;)
Conor O'Brien
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.