Code Monkey home page Code Monkey logo

highloadcup's People

Contributors

mr2dark avatar sannikovdmitry avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

highloadcup's Issues

Explore request: Code = 503, Message = service unavailable

Так как сервер после этого ответа не подымается, предлагаю заканчивать решение досрочно, чтобы освобождать машину и возвращать результат решения раньше.

Wrong /explore bounds error message

Привет,
Если запросить /explore от Area(0, 0, 3600, 3600), то получим такое сообщение. По условию должно быть X: 0-3499. Должно быть, опечатка

422 "{"code":1000,"message":"wrong coordinates: X 0-3599 outside 0-3499"}

На что конкретно влияет SEED?

Из спецификации:

При генерации мира используется параметр SEED. Он определяет сколько кладов и на каком этаже будет сгенерировано, какая будет ценность каждого клада и какой этаж будет оптимальным по соотношению ценности кладов к стоимости их добычи.

Вопросы:

  1. Влияет ли SEED на поведение/длительность API сервера? Можно ли полагаться, что они будут такими же на финальных SEED какие они сейчас?
  2. Влияет ли SEED на цену и закономерность платных лицензий?

Одинаковый SEED выдает разные поля!

SEED. Он определяет сколько кладов и на каком этаже будет сгенерировано, какая будет ценность каждого клада и какой этаж будет оптимальным по соотношению ценности кладов к стоимости их добычи.

Это условие не выполняется - используя только бесплатные лицензии, при одинаковых SEED и абсолютно одинаковых раскапываемых точках (полностью на 10 этажей), но раскапываемых в разном порядке, выдает разные ценности кладов, и, как результат, разный заработок в конце.

Любой может проверить.

SEED: 2000

1 набор точек (X, Y, получаемая ценность) (порядок точек важен):

3001, 3042, 26
3004, 3033, 30
3003, 3027, 20
3000, 3020, 31
3004, 3019, 23
3000, 3013, 24
3000, 3012, 24
3003, 3010, 20
3002, 3004, 20
3002, 3003, 8
3001, 3001, 10
3004, 3000, 35

Итого: 271.

2 набор точек (X, Y, получаемая ценность) (порядок точек важен):

3004, 3000, 36
3000, 3020, 30
3004, 3033, 17
3004, 3019, 31
3000, 3013, 23
3001, 3042, 21
3003, 3027, 22
3000, 3012, 22
3002, 3003, 22
3003, 3010, 7
3001, 3001, 10
3002, 3004, 25

Итого: 266.

Видно, что 266 != 271.

Совместно с #26 это срочный критический баг, прошу организаторов отреагировать. @SannikovDmitry

POST /cash response time

What affects response time for /cash. Is it allways the same for all treasurues and depends only on seed, or it's affected by the load of the server or it's allwayes random(distict values for each treasure)?

Obtain current time

Is it prohibited to obtains system time? My submit sha256:a3e18c0c520ed4f2b11664254e3b100bdc762d344e54f5708271ade8529b0374 requests system time with

    auto currentTime = std::chrono::duration_cast<std::chrono::milliseconds>(
            std::chrono::steady_clock::now().time_since_epoch()
    ).count();

and it fails with waiting for first API request: timeout. Without it it seems to work.

Дополнение к правилам

Хотелось бы видеть в правилах следующие моменты:

  1. Как зависит длительность explore от площади
  2. Как зависит длительность dig от глубины

`/[0-9]m/` silently dropped from logs

/[0-9]m/ regex matches silently dropped from logs.

print("TEST: duration=123ms '1m' 'am' '123MS' ") becomes TEST: duration=12s '' 'am' '123MS' in logs.

Looks like failed attempt to remove ANSI escape sequences.

Не работает запуск на пользовательском SEED

При попытке запуска существующего решения на пользовательском SEED, на вкладке "Пользовательские" после статуса отправлено в систему обсчета появялется ошибка "Ошибка! Error in the launch system.".

Алгоритм команды explore / расположение кладов.

Выдержка из правил: "Чем глубже раскопки, тем больше нужно времени на один вызов API. При этом есть шанс, что количество золота в кладе будет больше. При этом максимальная глубина не гарантирует большую стоимость сокровища по сравнению с другими этажами." Вроде как идея выглядит красиво - копай вглубь, и находи золото, но при текущей реализации команда explore выдаёт количество закопанных кладов и сами клады располагаются один на клетке. Что сводит весь алгоритм копания к тому, что если explore сказала, что клад есть, то копай пока до него не доберешься.
На мой взгляд, было бы интереснее если кладов было бы несколько в одной клетке, например, по количеству монет на этажах: 0, 0, 4, 7, 0, 10, 6, 15, 0, 0, при этом explore говорила бы о наличии клада в ячейке (в первоначальном варианте). Тогда участникам после каждой раскопки предстояло бы решать задачу - стоит ли копать дальше?

Ошибка! Error in the launch system

Требуется подробное описание ошибки.
Docker-образ локально работает, в связи с чем не понятно, что пошло не так.
Если какая-то проблема на серверах, то вопрос следующий: будет ли считаться данная попытка потраченной из 10 в день?
Можно ли как-то запустить отправленное решение повторно? (если по новой отправлять образ, то он не воспринимается, т.к. идентичен предыдущему, но менять в программе по сути не чего, т.к. не известно, как она себя ведёт на сервере.
Возможен ли автоматический запуск системы через некоторое время, если известно, что проблема была не в отправленном решении?

Explore -> 503 Service Unavailable

На запросы к /explore (0, 0, 2499, 2499) сервер кидается 503 Service Unavailable, см посылку sha256:296cb821838e66f88fa003287b016d76f302004f17277993ebb50383fd4c5e9f

Это не часть правил

"Чем глубже раскопки, тем больше времени..." - не выполняется

Из спеков:

Чем глубже раскопки, тем больше нужно времени на один вызов API.

В данный момент это условие не выполняется на тестовом сервере. Все вызовы dig занимают одинаковое количество времени вне зависимости от этажа.

Алгоритм команды Dig / Dig command algorithm

С учётом того, что поле может раскапываться только по одной клетке в глубину, то предлагаю следующие варианты использования команды Dig:

  1. Передача точки копания без глубины, т.к. сервер всё равно знает, на какой глубине были раскопки.
  2. Использование глубины копания для передачи количества уровней, на которые нужно прокопать (от текущих раскопок). Соответственно один уровень копания тратит лицензию. Таким образом при передачи новой лицензии одной командой пользователь может прокопать до 3х уровней (бесплатная лицензия) /до 5ти уровней (платная лицензия).

Considering that the field can only be dug one cell deep, I suggest the following options for using the Dig command:

  1. Transfer of the digging point without depth, because the server still knows at what depth the excavations were.
  2. Using the depth of digging to convey the number of levels to be dug (from the current excavation). Accordingly, one level of digging wastes a license. Thus, when transferring a new license with one command, the user can dig up to 3 levels (free license) / up to 5 levels (paid license).

Рейтинговый SEED не содержит гарантированных 23 030 000 монет

Набор моих рейтинговых запусков и анализ всего поля полностью говорят о том, что поле содержит 490 000 кладов (как и обещано), но лишь 12 280 652 монет из обещанных 23 030 000! Такое же поведение наблюдается и на некоторых пользовательских SEED, но похоже не на всех.

Мое решение абсолютно "тупое", копающее медленно, но абсолютно всё и вся и бесплатно - я сделал кучу запусков для полной проверки всего поля, чтобы подтвердить свои подозрения.

  1. Прошу прокоментировать организаторов этот баг.
  2. В текущем раунде, запускаются ли решения всех участников на одном и том же SEED для всех? Или для каждого он свой, но неизменный на протяжении рейтингового раунда? Судя по очкам участников, есть подозрение, что некоторых это не коснулось.

Выводить первую строчку логов

В данный момент очень сложно различать решения между собой. Было бы реально круто выводить первую строчку из логов где-нибудь на самом решении. Например надо кнопкой "Посмотреть лог решения" переименовав его в "Посмотреть полный лог решения"

Как это можно использовать участникам удобно (пример).
В Dockerfile добавить:

ARG HELLO_MSG=""
ENV HELLO_MSG=$HELLO_MSG

В main.cpp:

int main(int argc, char **argv) {
  const char *hello_msg = std::getenv("HELLO_MSG");
  if (hello_msg) {
    mortido::log() << hello_msg << std::endl;
  }

в Makefile:

IMAGE=dima_molodec
RELEASE_TAG=stor.highloadcup.ru/rally/diggy_diggy_hole

build:
	docker build -t $(IMAGE) . --build-arg HELLO_MSG='$(msg)'

push:	build
	docker tag $(IMAGE):latest $(RELEASE_TAG)
	docker push $(RELEASE_TAG)

После чего для отправки "помеченных" версий можно будет вызывать make push msg="Hello, Dima!"

Container run command

It'd be useful to know exact command that you use to run container with solution.

Передаваемые environments

Сейчас в условиях задачи указаны следующие передаваемые environments:

ADDRESS: default
Port: 8000;
Schema: http

Но есть подозрение, что Port и Schema не передаются. Просьба это проверить, а также уточнить формат данных, т.к. "8000;" выглядит ошибкой.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.