В таком случае, получается, что сместился акцент конкурса. Вместо соревнования на определение максимума слов, получилось соревнование на скорость, с которой достигается максимум. А сам максимум будет зависеть от количества тестов. Это как в спорте. Вместо того, чтобы соревноваться, в весе поднимаемой штанги, будут соревнования по количеству подъема штанги определенного веса. А все участники, кто вообще не может поднять этот вес, автоматически отсеиваются. Я из тех, кто отсеился ) Буду с интересом наблюдать за поднимающими штангу )
Да! Главное — это соревновательный дух. Решать задачу в одиночку скучно и уныло. А когда ее решают сотни других людей, хочется, чтобы именно твое решение оказалось лучшим.
Кстати, есть же открытые задачи, за которые даже есть награды. Например, поиск чисел Мерсенна.
Как то участвовал в решениитакой бесплатной задачи. Хоть и бесплатно, хоть и простая числодробилка, но, блин, интересно от того, что задачу еще кто-то кроме тебя решает.
У меня это сильно сокращало объем сохраняемых данных. К примеру, берем все 4-х буквенные префиксы слов. Всего их, допустим, 70000. Если отбросить редкие, получаем всего 10000 префиксов. Объем сохраняемых данных уменьшается с десятков килобайт, до нескольких килобайт. На результате тоже сказывается, но не так сильно. И это очень хороший эффект. А вот всех возможных неправильных четырех буквенных префиксов 531441 — 70000 = 461441. И понять, какие из них чаще встречаются в неправильных словах можно только собрав статистику по генератору.
Да, я знаю. Просто интересно было решать задачу в более общем виде, а не подстраивать под генератор. Например, можно собирать статистику разных комбинаций букв по словарю и отбрасывать редкие варианты. Количество всех вариантов получается небольшим, а отбрасывание редких сильно уменьшает выборку. Но вот если взять множество всех возможных неправильных слов, то их количество на порядки (даже экспоненциально) больше. И в общем случае нет возможности отсеить редкие комбинации. Тут как раз и возникает соблазн собирать такую статистику по неправильным словам из генератора. Жаль, что я так и не решился на это.
А если немного подкрутить генератор, например, чтобы он давал 20% слов из словаря и 80% неправильных слов, то «читерские» решения опять же окажутся тыквой. А «честные» покажут примерно тот же результат.
Я писал про среднюю скорость поезда, а не среднюю скорость вашего перемещения.
У вас же есть все расстояния между станциями и есть маршрут. Можете посчитать общую длину маршрута?
Интересно, какое расстояние в итоге проехали?
Если вы на каждой станции были, например, полторы минуты, это получается 5 часов стоянки на станциях. Тогда в дороге 11 часов 22 минуты. Если взять среднюю скорость поезда 60 км/ч, то получится 682 км.
Ну, знаете ли. После того, как несколько человек тут отписались о результатах больше 80%, а потом сказали, что это была ошибка, я уже и к 75% скептически отношусь.
Идеи тут у всех примерно одинаковые. Единственное, что не пробовал — нейросети. Но тут очень велико разнообразие их конфигураций, способов задания входов, алгоритмов обучения. Все перепробовать времени не хватит.
А так — да, с gzip'ом 100% утрамбовываются примерно в 820-860 КиБ.
Какая-то фантастика. Почитаешь комментарии и думаешь, что я тут вообще делаю. Мне чтоб в 820 упаковать пришлось еще некоторую предобработку словаря сделать. И то сжимал winrar-ом. gzip-ом только 920 получается. Как вы это делаете? И что я тут делаю?
У меня изначально не было цели написать решение для диапазона в 5000 чисел. Программа быстро решала для 100 и этого было достаточно. Чтобы решить для 5000 пришлось запросы немного переделать. Но опять же, цели написать оптимальное решение нет. Цель — написать код в несколько строк :)
Решение на C#
using System;
using System.Collections.Generic; // for HashSet
using System.Diagnostics;
using System.Linq;
class Program
{
static void Main()
{
var birthDays = Enumerable.Range(2, 4999)
.Join(
Enumerable.Range(2, 4999), n => 1, n => 1,
(n1, n2) => new {D = n1*n2, M = n1 + n2, N1 = n1, N2 = n2})
.Where(d => d.N2 >= d.N1).ToList();
var x1 = birthDays.GroupBy(d => d.D).Where(g => g.Count() == 1).SelectMany(g => g).ToList();
var monthWithUniqueDays = new HashSet<int>(x1.Select(d => d.M));
var x2 = birthDays.Where(d => !monthWithUniqueDays.Contains(d.M)).ToList();
var x3 = x2.GroupBy(d => d.D).Where(g => g.Count() == 1).SelectMany(g => g).ToList();
var solve = x3.GroupBy(d => d.M).Where(g => g.Count() == 1).SelectMany(g => g).ToList();
Console.WriteLine(string.Join(", ", solve.Select(d => d.N1 + " " + d.N2)));
}
}
Нужно еще больше статей про эту задачу!
Вот тут решения на разных языках habrahabr.ru/post/256293
«Готовой компьютерной программы, позволяющей решать такие задачи при любом заданном максимальном числе, обнаружить не удалось.»
Из статьи не понятно, что за ограничения других программ не позволяют решать эту задачу при любом заданном максимальном числе. Вот возьми, например, любое решение из приведенной мной ссылки и объясни, чем плохо решение.
Так ведь библиотека и является инструментом. Который подходит для решения данной задачи. Я знаю C# и если вижу какую-то интересную задачу, то первым делом пытаюсь ее решить именно на этом языке. И я сделаю это гораздо быстрее и эффективнее, чем на более подходящем для этой задачи языке, но который я не знаю. Хотя специалист по тому языку, возможно, сделает на нем более эффективное решение. Зависит от цели — решить задачу или решить ее наиболее оптимально по какому-то критерию. Я даже числодробилки пишу на C#, хотя C для этого лучше подходит. Потому что это доставляет мне больше удовольствия, хотя код может получиться процентов на пятьдесят медленнее.
Кстати, есть же открытые задачи, за которые даже есть награды. Например, поиск чисел Мерсенна.
Как то участвовал в решениитакой бесплатной задачи. Хоть и бесплатно, хоть и простая числодробилка, но, блин, интересно от того, что задачу еще кто-то кроме тебя решает.
У вас же есть все расстояния между станциями и есть маршрут. Можете посчитать общую длину маршрута?
Если вы на каждой станции были, например, полторы минуты, это получается 5 часов стоянки на станциях. Тогда в дороге 11 часов 22 минуты. Если взять среднюю скорость поезда 60 км/ч, то получится 682 км.
Идеи тут у всех примерно одинаковые. Единственное, что не пробовал — нейросети. Но тут очень велико разнообразие их конфигураций, способов задания входов, алгоритмов обучения. Все перепробовать времени не хватит.
Какая-то фантастика. Почитаешь комментарии и думаешь, что я тут вообще делаю. Мне чтоб в 820 упаковать пришлось еще некоторую предобработку словаря сделать. И то сжимал winrar-ом. gzip-ом только 920 получается. Как вы это делаете? И что я тут делаю?
Как? У меня 820КиБ, хоть ты тресни.
Хотя, есть идея как сжать сильнее, но время распаковки O(n!) и будет длиться до конца жизни вселенной.
Тогда все совпадает.
Результаты:
Max=5000 (~19,1 сек)
4 13, 4 61, 4 229, 16 73, 16 111, 32 131, 32 311, 64 73, 64 309, 67 82
Max=2000 (~2,2 сек)
4 13, 4 61, 16 73, 32 131
Max=866
4 13, 4 61
Max=867
4 13, 4 61
Вот тут решения на разных языках habrahabr.ru/post/256293
«Готовой компьютерной программы, позволяющей решать такие задачи при любом заданном максимальном числе, обнаружить не удалось.»
Из статьи не понятно, что за ограничения других программ не позволяют решать эту задачу при любом заданном максимальном числе. Вот возьми, например, любое решение из приведенной мной ссылки и объясни, чем плохо решение.