뉴스를 읽는 것은 지루합니다. 도와주세요!


22

누구나 뉴스가 지루하다는 것을 알고 있습니다. 정말 지루 합니다. 정치인과 스캔들에 관한 것이 아니라면. 재밌어요! 그러나 아쉽게도 정치인들은 너무 많은 스캔들을 저지를 수 있습니다. 뉴스를 더 재미있게 만들기 위해 당신을 고용하고 있습니다.

목표 HTML 스 니펫 이 있으면 여기 에서 찾은 모든 대체 , 즉이 그림에서 수행하는 모든 대체를 수행 하십시오 .

그러나 HTML 태그 자체를 편집해서는 안됩니다. HTML 태그 또는 해당 속성에없는 단어를 유효한 단어라고합니다. 즉, 당신은 대체 안 <div class="smartphone">iPhone</div>으로 <div class="pokedex">iPhone</div>만 교체해야합니다 <div>election</div>함께 <div>eating contest</div>.

파싱 ​​규칙

  • 편집 단어가 아닌 단어로 표시된 단어 만 일치시켜야합니다. 즉, 전체 단어 만 일치시켜야합니다. 예를 들어 "Hellowitness", "Hellow itness"또는 "Witnesspacelection"과 "Hello witness"는 일치하지 않습니다.
  • 키보드에서 문자를 입력 할 수 없으면 가장 가까운 문자를 표시해야합니다. (예 : "스마트 폰"은 실제로 "Pokedex"가됩니다)
  • 첫 글자 또는 모든 문자를 유지해야합니다. (예를 들어, "죽은 것으로 추정 됨"은 "Kinda 아마 죽었다"가되고, "그들이 죽었다"는 "그들은 아마 죽었을 것"이되고, "선거!"는 "THE EATING CONTEST!"가되고, "SpAcE"는 "Spaaace"및 "NWW STUDY"가 "tumblr post"가 됨)
  • 모든 경우가 일치해야합니다. (즉, 대문자와 상관없이 단어를 일치시켜야합니다.)
  • a <vowel>충족 되는 모든 인스턴스 가 an <vowel>되고 그 반대도 마찬가지 입니다. (예 : "상원 의원"은 "자족"이 됨) 모든 인스턴스에 대해이 작업을 수행 할 필요는 없지만 최소한 자체 교체 작업에는이 작업을 수행해야합니다.
  • 복수형도 번역에서 복수형을 유지해야합니다 (예 : "스마트 폰"은 "pokedex"가되고 "공백"은 "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.

  • 첫 교체 후 "공간"의 모든 인스턴스에 대해 추가 "a"가 추가되면 -5 % 보너스. 따라서 첫 번째 교체는 "spaaace", 두 번째는 "spaaaace", 세 번째는 "spaaaaace"등입니다.
  • 유효한 모든 숫자에 대해 해당 숫자를 해당 XKCD 만화에 대한 링크로 바꾸면 -5 % 보너스. (아직 존재할 필요는 없습니다). 이 보너스에 갈 경우, 당신은 번호 등 일치해야합니다 500, 3,000, 4 523,와 5.324. (대신 대신 만화 이미지로 숫자를 바꾸도록 선택할 수 있습니다. -5%보너스 대신에 이렇게하면 보너스 대신 -15% bonus. -15%타이틀 텍스트를 그림에 추가 할 수있는 경우 추가 보너스가 표시됩니다 . .)
  • 이미지의 오른쪽에있는 모든 인스턴스를 왼쪽에있는 인스턴스와 동시에 교체 할 수있는 경우 -25 % 보너스. (예 : "스패 어스"는 "공간"이되고 "먹는 콘테스트"는 "선거"가됩니다.) 보너스 중 하나를 선택하면 해당 항목을 해당 항목으로 되돌릴 수 있습니다. (예 : 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

이것은 이므로 바이트 단위의 가장 짧은 프로그램이 승리합니다.


"증인 공간"은 무엇이되어야합니까?
lirtosiast

@ThomasKwa "Witnessespace". 불완전한 단어와 일치하지 않습니다.
Conor O'Brien


3
이것은 흥미로운 도전처럼 보입니다. 나는 곧 그에게 주사를해야합니다
샘 위버에게

1
@DomHastings 예, 가능합니다. 유효하지 않은 입력없이 자동 폐쇄 태그가 없을 것 (예 <br/>)
코너 오브라이언

답변:


8

펄 5 , 850

많은 정규 표현식이 사용되거나 생성되었습니다.
% 1 해시는 반복되는 단어에 사용됩니다.

%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

자바 스크립트 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브라우저에서 실행되는 것보다 짧습니다 .
cat

<b>태그 "문제는"완벽하게 수용, 경우없는 허용. 그리고 나는 마지막 예를 좋아 합니다. 나는 그들 중 대부분을 통합 한 것을 생각하려고했습니다. 첫 번째 답변을 축하합니다! 경쟁이 확실합니다;)
Conor O'Brien
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.