Главная » Хабрахабр » Конкурс по программированию: Торговля (промежуточные результаты и объявления)

Конкурс по программированию: Торговля (промежуточные результаты и объявления)

Большое спасибо всем участникам конкурса по программированию! Приём решений ещё не закончен, но в полночь на 17 июля мы взяли тот набор решений, который был на тот момент, и провели между ними мини-турнир. В него попали 82 решения.

Но сначала — несколько объявлений.

Конкурс продлевается на неделю

Срок приёма решений продлевается до 27 июля 2018, 23:59:59 UTC. Также на неделю вперёд сдвигаются сроки, в которые будут объявлены результаты конкурса. Мы продлили конкурс для того, чтобы улучшить охват в сезон отпусков.

Уточнения по окончательному тестированию

После окончания приёма работ тестирование будет более тщательным, чем нынешнее предварительное.

Затравочные значения

Мы публикуем способ, который обещаем использовать для выбора затравочных значений для финального тестирования. Этот способ должен быть однозначным и легко проверяемым, но непредсказуемым. Итак, мы возьмём первый твит из этого Твиттера, который появится там после наступления дедлайна. Трудно поверить, что мы сговорились с Джерри Спрингером, правда? Из твита берём только текст, без картинок и видео. Если в твите нет текста, а только картинка, то берём следующий твит. Ретвиты считаются. Имя ретвитнутого аккаунта не берётся.

Из текста твита мы получим затравочные значения так:

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

Элементы получшившейся последовательности с нечётными номерами, при нумерации начиная с 1 (то есть первый, третий, пятый и так далее) будут использованы как затравочные значения для первого раунда, а с чётными — как дополнительные затравочные значения для финала.

В финале будет использовано не менее 100 дополнительных затравочных значений. В первом раунде каждая упорядоченная пара решений будет запущена на каждом из не менее 100 затравочных значений (больше, если успеем). Таким образом, исход финала решат не менее 200 затравочных значений. Сеансы, проведённые в первом раунде между решениями, вышедшими в финал, будут использованы и в финале (но не сеансы между финалистом и решением, не вышедшим в финал).

Отбор финалистов

После первого раунда все решения будут упорядочены по сумме набранных очков. Некоторое количество решений, начиная с лидера списка, будут допущены в финал.

Число финалистов решит то из правил, которое окажется наиболее строгим (то есть пропустит в финал наименьшее) число решений. Для отбора финалистов будут применяться следующие правила.

  • Не более половины решений.
  • Не более 50 решений.
  • Только решения, показавшие лучший результат, чем example.js.

Промежуточные результаты

Для промежуточного тестирования мы использовали в качестве затравочных значений натуральные числа от 1 до 50 включительно. Каждая упорядоченная пара, состоящая из различных решений, была запущена на каждом из этих значений. Таким образом, для 82 участников турнир состоял из 332100 сеансов; каждое из решений поучаствовало в 8100 сеансах.

Ваш идентификатор — в автоматическом письме, которое Вы получили после отправки решения. Пока что вместо имён участников — идентификаторы решений. Не возбраняется в комментариях к этому посту раскрывать, что такое-то решение — Ваше.

Интересно, что 21 из 82 решений показали более низкий результат, чем наш примитивный пример. Обратите внимание, что на 59, 60 и 61 местах расположились копии скрипта example.js. Потому что некоторые решения используют Math.random, и результаты сеансов с их участием не воспроизводимы.) (Почему три копии одного и того же скрипта показали слегка разные результаты?

Условные обозначения: Таблицу промежуточных результатов можно увидеть на GitHub.

  • S: Сумма набранных очков (это и есть предмет соревнования)
  • S/N: Средний результат сеанса
  • A: Число сеансов с достигнутым соглашением
  • A/N: Процент сеансов с достигнутым соглашением
  • S/A: Средний результат сеанса с достигнутым соглашением
  • X: Число сеансов, прерванных данным участником (по причине исключений или некорректных результатов)

Разумеется, до окончания конкурса ещё осталось время, за которое расстановка сил может измениться. Дерзайте!


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

[Из песочницы] WiX.Py: cобираем MSI пакет «в три строчки»

Хотите собирать инсталлер, описывая его простыми и понятными терминами, в несколько строк? Нет времени и желания изучать километровые файлы WiX, чтобы собрать MSI инсталлер для своего проекта, погружаясь при этом в бездны MSDN? Ну тогда вам под кат! Есть клиническая ...

[Из песочницы] Определяем спелость арбуза с помощью Keras: полный цикл, от идеи до программы на Google Play

С чего все началось Все началось с Эппл Маркета — я обнаружил, что у них есть программа, позволяющая определить спелость арбуза. Программа… странная. Чего стоит, хотя бы, предложение постучать по арбузу не костяшками пальцев, а… телефоном! Тем не менее, мне ...