Это основано на этой задаче и идее Geobits / CarpetPython по ее улучшению:
Для этой задачи расстояние между двумя числами измеряется в цикле, поэтому, например, расстояние между 0 и 999 равно 1. Это должно помешать стратегиям, таким как всегда выбирать самое низкое или наибольшее число, почти каждый раз выигрывая. Единственное другое изменение заключается в том, что самое низкое число, которое можно выбрать, теперь равно 0 вместо 1.
Я подведу итог здесь:
- Напишите функцию на Java, Python или Ruby, которая принимает три аргумента:
- количество сыгранных раундов
- количество игроков
- числа, выбранные в предыдущих раундах, как массив строк, разделенных пробелом
- Должен возвращать целое число от 0 до 999 включительно
- Оценка для программы каждого раунда является суммой квадратных корней расстояний до чисел, выбранных каждой другой программой
- Программа с наибольшим количеством очков после 100 раундов выигрывает.
- Один ответ на человека
Управляющая программа здесь:
https://github.com/KSFTmh/src/
Leaderboard
NumberOne от TheBestOne побеждает.
- NumberOne - 9700
- NumberOnePlusFourNineNine - 9623
- Древнеисторический - 9425
- FindCampers - 9259
- WowThisGameIsSoDeep - 9069
- Пробоотборник - 9014
- SabotageCampers - 8545
Видимо, саботаж моего туриста ... э-э (?) Не очень хорошо работает.
Вот полные результаты: https://github.com/KSFTmh/src/blob/master/results-3
Я думаю, что это достаточно отличается, чтобы не быть дубликатом.
Кстати, я впервые задаю вопрос на Stack Exchange, поэтому дайте мне знать, если я что-то не так делаю.
источник
Ответы:
Python 2, Sampler
Эта запись основана на том же коде для « Сохраняйте дистанцию», «Запись сэмплера» . Я надеюсь, что это будет лучше здесь, где преимущества 1 и 999 не существуют.
Из списка мест выберите тот, который находится дальше всего от недавно использованных чисел, игнорируя предыдущий ход (поскольку другие записи могут прогнозироваться на основе только предыдущего хода).
источник
Номер OnePlusFourNineNine, Java
Логика действительно проста. Если кто-то не найдет реальный алгоритм, который учитывает предыдущие оценки, этот ответ довольно оптимизирован.
Теперь, когда мы посчитаем расстояние по кругу, максимальное расстояние любых двух точек может быть 500. Теперь, если бы все записи генерировали случайные числа (или псевдослучайные по некоторому алгоритму), этот ответ не имел бы никакого преимущества вообще , Но есть по крайней мере 1 запись, которая дает постоянный ответ, почти максимальное расстояние. При этом счет набирает 500 баллов, поскольку в каждом раунде есть фиксированный источник максимальной дистанции :)
источник
Древнеисторический - питон
Это тот же алгоритм из предыдущего, за исключением того, что при расчете потенциальных баллов он использует круговое расстояние. Поскольку я ужасно проигрываю и не могу заставить контроллер скомпилироваться, я просто пробую новую стратегию, в которой я использую худшее из предыдущих раундов.
источник
i
является элементомscores.split(' ')
, то есть это строка, а не int.SabotageCampers - Python
Туристы все еще побеждают. Дайте мне знать, если у вас есть предложения по этому поводу.
источник
FindCampers - Python 2
Найдите всех отдыхающих за последние 10 раундов и держитесь подальше от них. Я надеюсь, что предикторы убегут от меня. Теперь я буду игнорировать мой старый выбор.
источник
Номер один, Java
Первый ответ. Скопировано из моего предыдущего ответа .
источник
WowThisGameIsSoDeep, Java
Я анализировал игру в течение 10 лет на кластере с 1 миллионным ядром и нашел оптимальное решение.
источник
Random.nextInt(int)
.Цилинейный Экстраполятор, Рубин
источник
NoMethodError: undefined method `split' for #<Array:0x720f56e2> choose at CircilinearExtrapolator.rb:2
previous_choices
это массив значений как["1 6 500","2 8 503"]
?