Đọc tin tức thật nhàm chán. Giúp tôi ra!


22

Mọi người đều biết rằng tin tức là nhàm chán. Thực sự nhàm chán . Trừ khi đó là về Chính trị gia và vụ bê bối của họ. Đó là niềm vui! Nhưng than ôi, các chính trị gia chỉ có thể phạm rất nhiều vụ bê bối. Vì vậy, tôi đang sử dụng bạn để làm cho tin tức thú vị hơn.

Mục tiêu Đưa ra một đoạn mã HTML, thực hiện tất cả các thay thế được tìm thấy ở đây , nghĩa là, trong hình này:

NHƯNG bạn không nên tự chỉnh sửa bất kỳ thẻ HTML nào. Tôi gọi một từ hợp lệ bất kỳ từ nào không tìm thấy trong bất kỳ thẻ HTML hoặc thuộc tính của chúng. Đó là, bạn không nên thay thế<div class="smartphone">iPhone</div> bằng <div class="pokedex">iPhone</div>, nhưng nên thay thế <div>election</div>bằng <div>eating contest</div>.

Quy tắc phân tích cú pháp

  • EDIT Bạn chỉ nên ghép các từ được mô tả bằng một từ không. Đó là, bạn chỉ nên kết hợp các từ đầy đủ. (Ví dụ: khớp với "Xin chào nhân chứng" nhưng không phải "Hellowitness", "Hellow itness" hoặc "Witnesspacelection".
  • Nếu bạn không thể gõ ký tự trên bàn phím, bạn sẽ hiển thị tương đương gần nhất. (Ví dụ: "Điện thoại thông minh" thực sự sẽ trở thành "Pokedex")
  • Trường hợp chữ cái đầu tiên hoặc trường hợp tất cả các chữ cái phải được giữ lại. (Vd "Spaaace" và "XEM NGHIÊN CỨU" trở thành "bài đăng tumblr")
  • Tất cả các trường hợp phải được khớp. (Tức là bạn phải ghép một từ, bất kể viết hoa của nó.)
  • Bất kỳ trường hợp nào a <vowel>được đáp ứng sẽ trở thành an <vowel>ngược lại . (Ví dụ: "Một thượng nghị sĩ" trở thành "Một chúa tể") Bạn không cần phải làm điều này cho mọi trường hợp, nhưng ít nhất là cho sự thay thế của chính bạn.
  • Bất cứ điều gì số nhiều cũng phải giữ lại số nhiều trong bản dịch (Ví dụ: "Điện thoại thông minh" trở thành "pokingex" và "Spaces" trở thành "Spaaaces")
  • Bất cứ điều gì trong một thì nhất định phải ở trong thì đó trong bản dịch. (Ví dụ: "Rebuilt" trở thành "Avenged", "Rebuilds" trở thành "Avenges", v.v.)
  • Bất cứ điều gì trong số ít phải duy trì số ít trong bản dịch (Ví dụ: "Nhà lãnh đạo Quốc hội" trở thành "Tinh thần sông")
  • Nếu mục nhập kéo dài nhiều phần tử HTML, bạn vẫn nên khớp với phần tử đó, nhưng bạn có thể "vứt bỏ" mọi phần tử trung gian. (Ví dụ, S<b>pa</b>acenên trở thành đơn giản là "spaaace"). Nếu mục nhập được bao gồm trong một thành phần duy nhất, mục nhập đó phải được khớp chính xác và thẻ được giữ lại.
  • "Các nhân chứng" sẽ trở thành "Những anh chàng mà tôi biết"
  • "nhân chứng" sẽ trở thành "Anh chàng này tôi biết"
  • "Nhân chứng" sẽ trở thành "Anh chàng đó tôi biết"
  • "Không thể đưa ra bình luận" nên trở thành "Có tội và mọi người đều biết"
  • "Không thể đưa ra bình luận" nên trở thành "Có tội và mọi người đều biết điều đó"

Tiền thưởng

Nếu bạn gặp một -N%phần thưởng, của bạn new amount = (old amount) * (1 - N/100). Vì vậy, nếu bạn đã gặp một -5%phần thưởng với mã 500 byte, của bạn new amount = 500 * (1 - 5/100) = 500 * .95 = 475.

  • -5% tiền thưởng nếu, đối với mọi trường hợp "khoảng trắng" sau lần thay thế đầu tiên, thêm "a" được thêm vào. Vì vậy, thay thế đầu tiên sẽ là "spaaace", thứ hai sẽ là "spaaaace", thứ ba sẽ là "spaaaaace", v.v.
  • -5% tiền thưởng nếu, với mỗi số hợp lệ, bạn thay thế số đó bằng một liên kết đến truyện tranh XKCD tương ứng. (Nó không phải tồn tại). Nếu bạn đi cho tiền thưởng này, bạn phải phù hợp với số như 500, 3,000, 4 523, và 5.324. (Bạn có thể lựa chọn để thay thế, thay vào đó, số lượng với hình ảnh của truyện tranh. Nếu bạn làm điều này, thay vì một -5%tiền thưởng, bạn sẽ nhận được một -15% bonus. Một phụ -15%tiền thưởng nếu bạn có thể thêm tiêu đề văn bản vào bức tranh, nếu có .)
  • -25% tiền thưởng nếu bạn có thể thay thế đồng thời tất cả các trường hợp ở phía bên phải của hình ảnh bằng những người ở bên trái. (Ví dụ: "spaaace" trở thành "không gian", "cuộc thi ăn uống" trở thành "bầu cử", v.v.) Nếu bạn chọn bất kỳ phần thưởng nào, bạn sẽ có thể hoàn nguyên chúng cho các mục tương ứng của họ. (Ví dụ: http://www.xkcd.com/542nên trở thành "542" và "spaaaaaaaace" sẽ trở thành "không gian".)
  • Bạn có thể chọn thực hiện tối thiểu 6 lần thay thế, nhưng với mỗi lần thay thế không được thực hiện (không bao gồm các lần thay thế tiền thưởng), bạn sẽ nhận thêm hình phạt + 10%.

IOs ví dụ (không có tiền thưởng)

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

Đây là một , vì vậy chương trình ngắn nhất tính bằng byte sẽ thắng.


"Nhân chứng" nên trở thành gì?
lirtosiast

@ThomasKwa "Nhân chứng". Đừng ghép từ không hoàn chỉnh.
Conor O'Brien


3
Đây trông giống như một thử thách thú vị. Tôi sẽ phải cung cấp cho nó một shot ngay
Sam Weaver

1
@DomHastings Vâng, tôi có thể; sẽ không có đầu vào không hợp lệ và không có thẻ tự đóng (ví dụ <br/>)
Conor O'Brien

Câu trả lời:


8

Perl 5 , 850

Rất nhiều regex được sử dụng hoặc tạo ra.
Băm% l được sử dụng cho các từ lặp đi lặp lại.

%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.$/

Kiểm tra

$ 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

Chúc mừng vị trí đầu tiên!
Conor O'Brien

9

JavaScript ES6, 954 byte

Tôi nghĩ rằng điều này sẽ dễ dàng hơn nhiều so với nó! Ban đầu tôi đã sử dụng JavaScript để tôi chỉ có thể dễ dàng đi xuống các nút văn bản và thay thế văn bản ở đó, nhưng đó không phải là câu hỏi sau đó, vì vậy tôi đã kết thúc với sự quái dị này! Nó vượt qua tất cả các trường hợp kiểm tra ngoại trừ trường hợp <b>g</b><i>oo</i><s>g</s><u>le</u> glass is terrible. :(toàn bộ chuỗi trở lại trong một <b>thẻ do các thẻ được cân bằng. Phần lớn mã là bảng tra cứu và có lẽ tôi vẫn còn thiếu một số trường hợp cạnh, nhưng tôi không thể đưa ra một cách tốt hơn để xử lý căng thẳng một cách chính xác và tôi chắc chắn rằng tôi có thể nén nó nhiều hơn, nhưng tôi Tôi sắp hết ý tưởng rồi ... Tôi chắc chắn tôi sẽ quay lại vấn đề này sau. Nên sử dụng Perl, lựa chọn tốt hơn @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])

Tôi đã áp dụng một phần thưởng cho 5% spaaacenhận thêm asau mỗi trận đấu thành công. Sử dụng alert()theo đề xuất của @sysreq , cảm ơn!

Ví dụ

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.

Phần thưởng: bookmarklet

Chạy phần này trong bảng điều khiển của bạn để có văn bản cơ thể được cập nhật tại chỗ:

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
alertngắn hơn console.logchừng nào nó chạy trên trình duyệt.
mèo

Các <b>từ khóa "vấn đề" là hoàn toàn chấp nhận được, nếu không muốn nói nhiều hơn chấp nhận được. VÀ tôi yêu ví dụ cuối cùng. Tôi đã cố gắng nghĩ về một trong đó kết hợp hầu hết trong số họ. Chúc mừng câu trả lời đầu tiên! Tôi chắc chắn rằng nó cạnh tranh;)
Conor O'Brien
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.