Dada la entrada de una cadena que consiste en cualquier mensaje de la sala de chat de nuestro sitio tomado de la lista descrita y vinculada a continuación, genera un valor verdadero o falso que intenta predecir si ese mensaje fue destacado o no en 50 bytes o menos.
Puede usar cualquier valor verdadero o falso , pero deben ser idénticos (es decir, solo debe haber dos resultados posibles, uno verdadero y otro falso). La entrada se dará como HTML sin formato con nuevas líneas eliminadas, y puede contener caracteres Unicode que no sean ASCII. Si necesita una entrada en algo que no sea UTF-8, dígalo en su respuesta.
La presentación ganadora para este desafío será la que predice el porcentaje más alto de mensajes de chat correctamente, fuera de la lista vinculada a continuación. Si dos presentaciones dadas tienen la misma tasa de éxito, la presentación más corta ganará.
Proporcione instrucciones para ejecutar su código en todo el conjunto de mensajes y calcular el porcentaje correcto. Idealmente, esto debería ser un poco de código repetitivo (sin contar para sus 50 bytes) que recorre los casos de prueba positivos y genera cuántos de ellos su código se corrigió y luego hace lo mismo para los casos de prueba negativos. (La puntuación general se puede calcular manualmente a través de (correctPositive + correctNegative) / totalMessages).
Para que su código sea razonablemente verificable, debe completarse en 5 minutos o menos para la lista completa de mensajes de chat en hardware razonable de hoy en día.
La lista completa de mensajes de chat se puede encontrar aquí , y consta de los 1000 últimos mensajes destacados como casos de prueba verdaderos y los 1000 últimos mensajes sin estrellas como casos de prueba falsos. Tenga en cuenta que hay dos archivos en la esencia; desplácese hasta la mitad hacia abajo para ver los mensajes sin estrellas
fuente

O2Don'?t star\^Respuestas:
Retina , 50 bytes,
71.8%72.15%Probé un poco de golf regex a sugerencia de @ MartinBüttner. Esto coincide con 704 mensajes destacados y no coincide con 739 mensajes sin estrellas.
El
^.*( ... )objetivo es asegurarse de que siempre haya 0 o 1 coincidencia, ya que Retina genera el número de coincidencias de forma predeterminada. Puede calificar el programa en los archivos de entrada anteponiendo elm`modo multilínea y luego ejecutandoy del mismo modo para
unstarred.txt.Análisis / explicación
Generé los fragmentos anteriores (y muchos más) usando un programa, luego seleccioné los que quería manualmente. Aquí hay una idea de por qué funcionan los fragmentos anteriores:
C: PartidosPPCG,@CᴏɴᴏʀO'BʀɪᴇɴE: Partidos@ETHproductions,@El'endiaStarman;: Debido a que los casos de prueba son HTML, esto coincide<y>ಠ-ﭏ: Coincide con una gama de caracteres Unicode, principalmente paraಠ_ಠy@Doorknob冰tar: Coincide con las variaciones destar,@El'endiaStarman(nuevamente) y tambiéngravatarque aparece en los oneboxes publicados por nuevos botsol: Coincidenciasrel="nofollow"que se encuentran en muchos enlaces y oneboxesl.x: Partidos@AlexA.,@trichoplaxeo: Principalmente coincidepeople, pero también tres casos para@Geobitsa.u: Principalmente partidosgraduation,status,featureyabusepin: Coincidenciaspingy palabras que terminan enping. También coincide con algunas publicaciones en una discusión sobrepineapple, como un ejemplo de sobreajuste.nu: Coincide con una mezcla de palabras, la más común de las cuales esnumbero.f: Partidosgolf,conf(irm|use)"$: Coincide con una comilla doble como último carácter, p. Ej.@phase He means "Jenga."No
[tiene nada de especial: solo me quedaba un personaje, así que pensé que podría usarlo para combinar un caso más.fuente
JavaScript ES6, 50 bytes, 71.10%
Identifica correctamente 670 destacados y 752 no destacados.
¡Ahora a través de la barrera del 70% y superando a todos excepto a Retina!
Devuelve
truesi el mensaje contiene alguna de estas cosas:D,E,R, ov;tar(generalmentestar);ayucon un char en el medio;lyxcon un personaje intermedio (generalmentealex);eoool;C, un punto y coma o aಠ.Aquí hay algunas coincidencias más fructíferas que no parecen valer la pena deshacerse de otros:
nfnuypn.mEsto se ha ido acercando cada vez más a la respuesta de Retina, pero he encontrado la mayoría de las mejoras por mi cuenta.
Pruébelo en la consola de una de estas páginas: textos en estrella , textos sin estrella
Aquí hay una versión alternativa.
/a/.testes técnicamente una función, pero no cumple con nuestros criterios :Este puntaje es 71.90% (697 con estrella, 741 sin estrella).
He estado realizando algunos análisis en las listas para ver qué grupos de expresiones regulares coinciden con las publicaciones más destacadas y menos destacadas. Los análisis se pueden encontrar en este Gist . Hasta ahora, he comprobado
aaya.acoincide.a.uestá en torno al # 50 con una puntuación de 28, pero es la combinación más eficiente de su formato ...fuente
/regexp/.test()? Creo que es posible exprimir algunos casos más con eso.Pyth, 50 bytes, 67.9%
Esto divide la entrada en uno de los 322 depósitos y elige el valor booleano en función de ese depósito.
Tanteo
fuente
CJam, 45 bytes, 65.55%
Esto verifica si el primer carácter está en una lista específica o si la suma de todos los puntos de código es mayor que 8,672.
Tanteo
fuente
foldcomando, junto con la respuesta real.Matlab / Octave, 17 bytes 60.15%
Clasifica correctamente 490 mensajes como fijos, 713 mensajes como no fijos
Versión actual:
Solo comprobando la longitud.
Versión antigua:
Podría ser traducido a cualquier otro idioma. Simplemente comprueba si el mensaje contiene las palabras estrella o no.
score: 59/911/52.5%Resultados para casos de prueba usando este código:
fuente
CJam, 32 bytes, puntaje general de 0.5605 (56%).
Identifica correctamente 428 mensajes destacados y 693 mensajes no destacados. La puntuación total es
(360+730)/2000=0.545.Sin esperar ganar, veré cómo funciona. Arriba está el código para un solo mensaje, para ejecutar con uso múltiple esta versión modificada que devuelve la cantidad de mensajes destacados:
Simplemente pruébelo con STDIN como texto sin formato de cualquier archivo. Devuelve verdadero si el mensaje contiene "estrella" o si
length + 1 mod 4 = 0.fuente
JavaScript ES6, 0.615 = 61.5%
342 correctamente identificados como destacados, 888 correctamente identificados como no destacados,
(342+888)/2000 = 0.615Prueba así en esto o en esto :
¡TODAVÍA PUEDO OBTENERTE, MI BONITA!
fuente
Retina, 46 bytes, 68.55
679 estrellas: 692 sin estrellas
Cambió a Retina para obtener más expresiones regulares en ... Todavía no está hecho.
fuente
C # 6.0 (.NET Framework 4.6), 50 bytes, 63,60%
Programa que utilicé para fines de prueba:
fuente