ニュースを読むのは退屈です。助けて!


22

ニュースが退屈であることは誰もが知っています。本当につまらない。政治家とそのスキャンダルに関するものでない限り。それは楽しいです!しかし、悲しいかな、政治家は非常に多くのスキャンダルを犯すことができます。そこで、ニュースをもっと面白くするためにあなたを雇っています。

目的 HTMLスニペットが与えられたら、ここにあるすべての置換を実行します。つまり、次の図です。

ただし、HTMLタグ自体は編集しないでください。有効な単語とは、HTMLタグまたはその属性内にない単語をいいます。つまり、あなたが代わるべきではない<div class="smartphone">iPhone</div><div class="pokedex">iPhone</div>、しかし、交換する必要があります<div>election</div><div>eating contest</div>

解析ルール

  • 編集非単語で区切られた単語のみを一致させる必要があります。つまり、完全な単語のみを一致させる必要があります。(たとえば、「He​​llo witness」と一致しますが、「Hellowitness」、「Hellow itness」、または「Witnesspacelection」とは一致しません。
  • キーボードで文字を入力できない場合は、最も近いものを表示する必要があります。(たとえば、「スマートフォン」は実際には「ポケデックス」になります)
  • 最初の文字のケースまたはすべての文字のケースを保持する必要があります。(例えば、「彼らは死んだと思われる」は「おそらく金田、彼らは死んだ」、「彼らは死んだと思われる」は「おそらく彼らは死んだ」、「THE ELECTION!」は「THE EATING CONTEST!」、「SpAcE」は「Spaaace」と「nEW STUDY」は「tumblr post」になります)
  • すべてのケースが一致する必要があります。(つまり、大文字と小文字に関係なく、単語を一致させる必要があります。)
  • a <vowel>満たされるインスタンスはすべてan <vowel>その逆になります。(たとえば、「上院議員」は「エルフの領主」になります)すべてのインスタンスに対してこれを行う必要はありませんが、少なくともあなた自身の交換のために。
  • 複数形もすべて、翻訳で複数形を保持する必要があります(たとえば、「Smartphones」は「pokedex」になり、「Spaces」は「Spaaaces」になります)
  • 特定の時制にあるものはすべて、翻訳時にその時制に残っている必要があります。(たとえば、「再構築」は「復ven」に、「再構築」は「復ven」などになります。)
  • 翻訳では、単数形のすべてが単数形のままでなければなりません(たとえば、「議会の指導者」は「川の精神」になります)
  • エントリが複数のHTML要素にまたがる場合、一致する必要がありますが、中間要素は「破棄」できます。(たとえば、S<b>pa</b>ace単に「spaaace」になるはずです)。エントリが単一の要素内に自己完結している場合、エントリは適切に照合され、タグは保持されます。
  • 「証人」は「私が知っている男」になるはずです
  • 「目撃者」は「私が知っているこの男」になるはずです
  • 「証人」は「私が知っているあの男」になるはずです
  • 「コメントが届かない」は「有罪であり、誰もが知っている」になります。
  • 「コメントが届かない」は「有罪であり、誰もが知っている」になります

ボーナス

-N%ボーナスに出会ったら、あなたのnew amount = (old amount) * (1 - N/100)。だから、あなたが満たされた場合に-5%500バイトコードとボーナスを、あなたnew amount = 500 * (1 - 5/100) = 500 * .95 = 475

  • 最初の置換後の「スペース」のすべてのインスタンスに対して、余分な「a」が追加された場合、-5%のボーナス。したがって、最初の置換は「spaaace」、2番目は「spaaaace」、3番目は「spaaaaace」などとなります。
  • 有効な番号ごとに、その番号をそれぞれのXKCDコミックへのリンクに置き換えた場合、-5%のボーナス。(まだ存在する必要はありません)。あなたはこのボーナスのために行く場合は、数字のような一致している必要があり5003,0004 523、とします5.324。(番号を漫画の画像に置き換えることもできます。これを行うと、-5%ボーナスの代わりに、もしあれば、画像にタイトルテキストを追加できる場合は-15% bonusもう1つの追加の-15%ボーナスがあります。)
  • 画像の右側のすべてのインスタンスを左側のインスタンスで同時に置き換えることができる場合、-25%のボーナス。(たとえば、「spaaace」は「space」に、「eating contest」は「election」などになります。)ボーナスのいずれかを選択した場合、それらをそれぞれのエントリに戻すことができるはずです。(たとえば、http://www.xkcd.com/542「542」になり、「spaaaaaaaace」は「space」になります。)
  • 最低6回の交代を行うことを選択できますが、交替を行わなかった場合(ボーナス交代を除く)、追加の+ 10%のペナルティを受け取ります。

IOの例(ボーナスなし)

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

これはであるため、バイト単位の最短プログラムが優先されます。


「ウィットネススペース」はどうなるのでしょうか?
リルトシアスト

@ThomasKwa「ウィットネススペース」。不完全な単語と一致しないでください。
コナーオブライエン


3
これは興味深い挑戦のようです。私はすぐにそれを撮影する必要があります
サムウィーバー

1
@DomHastingsはい、できます。無効な入力や自己閉鎖タグはありません(例<br/>
コナーオブライエン

回答:


8

Perl 5、850

使用または生成された多くの正規表現。
%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

おめでとうございます!
コナーオブライエン

9

JavaScript ES6、954バイト

これは以前よりずっと簡単になると思いました!私はもともとJavaScriptを使用していたので、テキストノードにのみ簡単に降りてそこのテキストを置き換えることができましたが、それは質問の後ではなかったので、この怪物になってしまいました!タグのバランスが取れているため<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])

マッチが成功するたびにspaaace追加の5%を獲得するために1つのボーナスを適用aしました。@sysreqがalert()示唆する使用方法、ありがとう!

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
alertconsole.logブラウザで実行されている場合よりも短くなります。

<b>タグ「問題は」完全に受け入れ、そうでない場合で、より許容できます。そして、私は愛する最後の例を。それらのほとんどを組み込んだものを考えようとしていました。最初の回答おめでとうございます!競争力があると確信しています;)
コナーオブライエン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.