Concurso de programación: Trading (Resultados provisionales y anuncios)

¡Muchas gracias a todos los participantes en el concurso de programación ! El proceso de toma de decisiones aún no se ha completado, pero a la medianoche del 17 de julio tomamos el conjunto de decisiones que estaba en ese momento y celebramos un mini torneo entre ellos. Golpeó 82 decisiones.

Pero primero, algunos anuncios.

La competencia se extiende por una semana.


La fecha límite para tomar decisiones se extiende hasta el 27 de julio de 2018 a las 23:59:59 UTC. Además, los plazos para anunciar los resultados de la competencia se modifican con una semana de anticipación. Hemos extendido la competencia para mejorar la cobertura durante la temporada de vacaciones.

Aclaraciones de prueba final


Después de la aceptación del trabajo, las pruebas serán más exhaustivas que las preliminares actuales.

Valores de semillas


Estamos publicando un método que prometemos usar para seleccionar valores iniciales para la prueba final. Este método debe ser inequívoco y fácilmente verificable, pero impredecible. Entonces, tomaremos el primer tweet de este Twitter que aparecerá allí después de la fecha límite. Es difícil creer que conspiramos con Jerry Springer, ¿verdad? Del tweet tomamos solo el texto, sin imágenes ni video. Si no hay texto en el tweet, sino solo una imagen, tome el siguiente tweet. Retweets cuentan. El nombre de la cuenta retweet no se toma.

Del texto del tweet obtenemos los valores semilla como este:

const random_js = require('random-js'); const text = 'The tweet goes here'; const bytes = Array.from(new Buffer(text)); const random = new random_js(random_js.engines.mt19937().seedWithArray(bytes)); for (let i = 0; i<200; i++) //  ,   console.log(random.uint32()); 

Los elementos de la secuencia resultante con números impares , cuando la numeración comience desde 1 (es decir, el primero, el tercero, el quinto, etc.), se utilizarán como valores semilla para la primera ronda, y con los pares como valores semilla adicionales para la final.

En la primera ronda, cada par de soluciones ordenadas se lanzará en cada uno de al menos 100 valores semilla (más si tenemos tiempo). Se utilizarán al menos 100 valores de semilla adicionales en la final. Las sesiones celebradas en la primera ronda entre las decisiones que llegaron a la final se utilizarán en la final (pero no las sesiones entre el finalista y la decisión que no llegó a la final). Por lo tanto, al menos 200 valores de semillas decidirán el resultado final.

Selección de finalistas


Después de la primera ronda, todas las decisiones se ordenarán por la cantidad de puntos anotados. Varias decisiones, comenzando por el líder de la lista, serán admitidas a la final.

Las siguientes reglas se aplicarán a la selección de finalistas. El número de finalistas decidirá cuál de las reglas resulta ser la más estricta (es decir, saltará menos ) al número de decisiones.

  • No más de la mitad de las soluciones.
  • No más de 50 soluciones.
  • Solo soluciones que muestran mejores resultados que example.js .

Resultados intermedios


Para las pruebas intermedias, utilizamos números naturales del 1 al 50 inclusive como valores de semillas. Cada par ordenado, que consta de diferentes soluciones, se ejecutó en cada uno de estos valores. Así, para 82 participantes, el torneo consistió en 332100 sesiones; cada una de las soluciones participó en 8100 sesiones.

Hasta ahora, en lugar de los nombres de los participantes: identificadores de soluciones. Su identificador está en la carta automática que recibió después de enviar la decisión. No está prohibido revelar en los comentarios a esta publicación que tal y tal decisión es suya.

Tenga en cuenta que en 59, 60 y 61 lugares se encuentran copias del script example.js . Curiosamente, 21 de las 82 soluciones mostraron resultados más bajos que nuestro ejemplo primitivo. (¿Por qué tres copias del mismo script muestran resultados ligeramente diferentes? Debido a que algunas soluciones usan Math.random , y los resultados de las sesiones que los involucran no son reproducibles).

Se puede ver una tabla de resultados intermedios en GitHub . Leyenda:

  • S : Cantidad de puntos anotados (este es el tema de la competencia)
  • S / N : Resultado promedio de la sesión
  • A : Número de sesiones alcanzadas acuerdo
  • N / A : Porcentaje de sesiones con acuerdo alcanzado
  • S / A : resultado promedio de la sesión con el acuerdo alcanzado
  • X : Número de sesiones finalizadas por este participante (debido a excepciones o resultados incorrectos)

Por supuesto, todavía queda tiempo antes del final de la competencia, durante el cual la alineación de las fuerzas puede cambiar. ¡A por ello!

Source: https://habr.com/ru/post/es417645/


All Articles