Concours de programmation: négociation (résultats intermédiaires et annonces)

Un grand merci à tous les participants au concours de programmation ! Le processus décisionnel n'est pas encore terminé, mais à minuit le 17 juillet, nous avons pris l'ensemble des décisions qui étaient à ce moment-là et avons organisé un mini-tournoi entre elles. Il a atteint 82 décisions.

Mais d'abord, quelques annonces.

Le concours est prolongé d'une semaine


Le délai pour prendre des décisions est prolongé jusqu'au 27 juillet 2018 , 23:59:59 UTC. De plus, les dates limites pour l'annonce des résultats du concours sont décalées d'une semaine à l'avance. Nous avons prolongé la compétition pour améliorer la couverture pendant la période des fêtes.

Clarifications du test final


Après l'acceptation des travaux, les tests seront plus approfondis que les préliminaires actuels.

Valeurs initiales


Nous publions une méthode que nous promettons d'utiliser pour sélectionner les valeurs de départ pour les tests finaux. Cette méthode doit être sans ambiguïté et facilement vérifiable, mais imprévisible. Nous allons donc prendre le premier tweet de ce Twitter qui apparaîtra après la date limite. Il est difficile de croire que nous avons comploté avec Jerry Springer, non? Du tweet, nous prenons uniquement le texte, sans images ni vidéo. S'il n'y a pas de texte dans le tweet, mais seulement une image, prenez le tweet suivant. Les retweets comptent. Le nom du compte retweet n'est pas pris.

Du texte du tweet, nous obtenons les valeurs de départ comme ceci:

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()); 

Les éléments de la séquence résultante avec des nombres impairs , lors de la numérotation à partir de 1 (c'est-à-dire le premier, le troisième, le cinquième, etc.), seront utilisés comme valeurs de départ pour le premier tour, et avec pairs comme valeurs de départ supplémentaires pour la finale.

Au premier tour, chaque paire de solutions commandée sera lancée sur chacune d'au moins 100 valeurs de départ (plus si nous avons le temps). Au moins 100 valeurs de semences supplémentaires seront utilisées lors de la finale. Les sessions tenues au premier tour entre les décisions qui ont atteint la finale seront utilisées dans la finale (mais pas les sessions entre le finaliste et la décision qui n'a pas atteint la finale). Ainsi, au moins 200 valeurs de départ décideront du résultat de la finale.

Sélection des finalistes


Après le premier tour, toutes les décisions seront triées en fonction du nombre de points marqués. Un certain nombre de décisions, à commencer par le leader de la liste, seront admises en finale.

Les règles suivantes s'appliqueront à la sélection des finalistes. Le nombre de finalistes décidera laquelle des règles se révèle être la plus stricte (c'est-à-dire qui sautera le moins ) au nombre de décisions.

  • Pas plus de la moitié des solutions.
  • Pas plus de 50 solutions.
  • Seules les solutions affichant de meilleurs résultats que example.js .

Résultats intermédiaires


Pour les tests intermédiaires, nous avons utilisé des nombres naturels de 1 à 50 inclus comme valeurs de graines. Chaque paire ordonnée, composée de différentes solutions, a été exécutée sur chacune de ces valeurs. Ainsi, pour 82 participants, le tournoi s'est composé de 332100 sessions; chacune des solutions a participé à 8100 sessions.

Jusqu'à présent, au lieu des noms des participants - identificateurs de solutions. Votre identifiant se trouve dans la lettre automatique que vous avez reçue après l'envoi de la décision. Il n'est pas interdit de divulguer dans les commentaires de cet article que telle ou telle décision vous appartient.

Veuillez noter qu'à 59, 60 et 61 emplacements se trouvent des copies du script example.js . Fait intéressant, 21 des 82 solutions ont montré des résultats inférieurs à notre exemple primitif. (Pourquoi trois copies du même script ont-elles montré des résultats légèrement différents? Parce que certaines solutions utilisent Math.random et que les résultats des sessions les impliquant ne sont pas reproductibles.)

Un tableau des résultats intermédiaires peut être vu sur GitHub . Légende:

  • S : Nombre de points marqués (c'est le sujet du concours)
  • S / N : Résultat de session moyen
  • A : Nombre de séances convenues
  • A / N : Pourcentage de sessions avec accord atteint
  • S / A : Résultat moyen de la session avec accord atteint
  • X : nombre de sessions terminées par ce participant (en raison d'exceptions ou de résultats incorrects)

Bien sûr, il reste encore du temps avant la fin de la compétition, au cours de laquelle l'alignement des forces peut changer. Allez-y!

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


All Articles