Todos saben que las noticias son aburridas. Muy aburrido . A menos que se trate de políticos y sus escándalos. ¡Esto es divertido! Pero, por desgracia, los políticos solo pueden cometer tantos escándalos. Entonces, te estoy empleando para que las noticias sean más interesantes.
Objetivo Dado un fragmento de HTML, realice todas las sustituciones que se encuentran aquí , es decir, en esta imagen:
PERO no debe editar ninguna etiqueta HTML. Llamo a una palabra válida cualquier palabra que no se encuentre dentro de ninguna etiqueta HTML o sus atributos. Es decir, no debe reemplazar <div class="smartphone">iPhone</div>
con <div class="pokedex">iPhone</div>
, pero debe reemplazar <div>election</div>
con <div>eating contest</div>
.
Reglas de análisis
- EDITAR Solo debe hacer coincidir palabras delineadas por una no palabra. Es decir, solo debe coincidir con palabras completas. (Por ejemplo, haga coincidir "Hola testigo" pero no "Hellowitness", "Hellow itness" o "Witnesspacelection".
- Si no puede escribir el carácter en su teclado, debe mostrar el equivalente más cercano. (Por ejemplo, "Smartphone" realmente se convertiría en "Pokedex")
- Se debe conservar el caso de primera letra o el de todas las letras. (Por ejemplo, "Supuestamente, murieron" se convierte en "Probablemente murieron", "Supuestamente murieron" se convierte en "¡Probablemente murieron", y "¡LA ELECCIÓN!" Se convierte en "¡EL CONCURSO DE COMER!", Mientras que "ESPACIO" se convierte en "Spaaace" y "NUEVO ESTUDIO" se convierten en "publicación de tumblr")
- Todos los casos deben coincidir. (Es decir, debe coincidir con una palabra, independientemente de su capitalización).
- Cualquier instancia en la que
a <vowel>
se cumpla debe convertirsean <vowel>
y viceversa . (Por ejemplo, "Un senador" se convierte en "Un señor elfo") No tiene que hacer esto para cada caso, sino al menos para sus propios reemplazos. - Cualquier cosa en plural también debe conservar la pluralización en la traducción (por ejemplo, "Smartphones" se convierte en "pokedex" y "Spaces" se convierte en "Spaaaces")
- Cualquier cosa en cierto tiempo debe permanecer en ese tiempo en la traducción. (Por ejemplo, "Reconstruido" se convierte en "Avenged", "Rebuilds" se convierte en "Avenges", etc.)
- Cualquier cosa en singular debe permanecer singular en la traducción (por ejemplo, "líder del Congreso" se convierte en "espíritu del río")
- Si la entrada abarca varios elementos HTML, aún debe hacerla coincidir, pero puede "tirar" cualquier elemento intermedio. (Por ejemplo,
S<b>pa</b>ace
debería convertirse simplemente en "spaaace"). Si la entrada es autónoma dentro de un solo elemento, debe coincidir correctamente y la etiqueta debe conservarse. - "Los testigos" deberían convertirse en "Esos tipos que conozco"
- "testigo" debería convertirse en "Este tipo lo sé"
- "El testigo" debería convertirse en "Ese tipo que conozco"
- "No se pudo contactar para hacer comentarios" debería convertirse en "Es culpable y todos lo saben"
- "No se puede contactar para hacer comentarios" debería convertirse en "Son culpables y todos lo saben"
Bonos
Si cumple con un -N%
bono, su new amount = (old amount) * (1 - N/100)
. Entonces, si conociste un -5%
bono con un código de 500 bytes, tu new amount = 500 * (1 - 5/100) = 500 * .95 = 475
.
- -5% de bonificación si, por cada instancia de "espacio" después del primer reemplazo, se agrega una "a" adicional. Entonces, el primer reemplazo sería "spaaace", el segundo sería "spaaaace", el tercero sería "spaaaaace", etc.
- -5% de bonificación si, por cada número válido, reemplaza ese número con un enlace al cómic XKCD respectivo. (Todavía no tiene que existir). Si tienes que ir a esta bonificación, debe coincidir con los números tales como
500
,3,000
,4 523
, y5.324
. (En su lugar, puede optar por reemplazar el número con la imagen del cómic. Si hace esto, en lugar de un-5%
bono, obtendrá un-15% bonus
. Otro-15%
bono extra si puede agregar el texto del título a la imagen, si corresponde .) - -25% de bonificación si puede reemplazar simultáneamente todas las instancias en el lado derecho de la imagen con las de la izquierda. (Por ejemplo, "spaaace" se convierte en "espacio", "concurso de comida" se convierte en "elección", etc.) Si opta por alguno de los bonos, debería poder revertirlos a sus respectivas entradas. (Por ejemplo,
http://www.xkcd.com/542
debería convertirse en "542" y "spaaaaaaaace" debería convertirse en "espacio"). - Puede elegir hacer un mínimo de 6 sustituciones, pero por cada sustitución que no se realice (excluyendo las sustituciones de bonificación), recibirá una penalización adicional de + 10%.
Ejemplo de E / S (sin bonificaciones)
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
Este es un código de golf , por lo que gana el programa más corto en bytes.
<br/>
)Respuestas:
Perl 5 , 850
Muchas expresiones regulares usadas o generadas.
El% l hash se usa para palabras repetidas.
Prueba
fuente
JavaScript ES6, 954 bytes
¡Pensé que esto sería mucho más fácil de lo que era! Originalmente usé JavaScript para poder descender fácilmente solo a nodos de texto y reemplazar el texto allí, pero esa no era la pregunta que buscaba, ¡así que terminé con esta monstruosidad! Pasa todos los casos de prueba, excepto
<b>g</b><i>oo</i><s>g</s><u>le</u> glass is terrible. :(
donde toda la cadena vuelve a aparecer en una<b>
etiqueta debido a que las etiquetas se equilibran. La mayor parte del código es la tabla de búsqueda, y probablemente todavía me faltan algunos casos extremos, pero no pude encontrar una mejor manera de manejar el tiempo correctamente y estoy seguro de que podría comprimirlo más, pero Me estoy quedando sin ideas ... Sin embargo, estoy seguro de que volveré a esto más tarde. Debería haber usado Perl, ¡mejor opción @LukStorms !Apliqué un bono por el 5% de
spaaace
obtener un adicionala
después de cada partida exitosa. Utilizaalert()
según lo sugerido por @sysreq , ¡gracias!Ejemplos
Bono: bookmarklet
Ejecute esto en su consola para tener el texto del cuerpo actualizado en el lugar:
fuente
alert
es más corto que elconsole.log
tiempo que se ejecuta en un navegador.<b>
etiqueta "problema" es perfectamente aceptable, si no más aceptable. Y me encanta el último ejemplo. Estaba tratando de pensar en uno que incorporara la mayoría de ellos. ¡Felicitaciones por la primera respuesta! Estoy seguro de que es competitivo;)