Вступление
Наконец, кинокомпания финансирует ваш фильм. Они дали вам максимальный бюджет, а также задают время показа вашего фильма.
Теперь вы можете начать с предварительного производства. У вас уже есть несколько запланированных сцен, но не все они вписываются в бюджет, и фильм будет слишком длинным. Однако вы знаете важность каждой сцены. Ваша цель - выбрать сцены, чтобы фильм не был слишком дорогим, слишком длинным и посредственным.
вход
Вы получаете, running time
и budget
студия одобрила:
[25, 10]
У вас есть список сцен, включая running time
, costs
и importance
для каждой из них:
[ [5, 2, 4], [7, 1, 3] ]
Если массивы не работают для вас, выберите другой формат ввода, который подходит вам лучше всего. Время в минутах. Бюджет и расходы указаны в миллионах случайных валют. Важность колеблется от [1–9]
. Все числа целые.
Выход
Выведите список сцен, которые нужно включить в фильм, в том случае, если:
- Сумма
importance
максимальна. - Расходы не превышают бюджет.
- Продолжительность находится в пределах ± 5 минут от утвержденного времени пробега.
Порядок сцен не важен и не нуждается в сохранении.
Вы можете вывести список чисел или массив. Ваш вывод может иметь нулевой или единичный индекс:
[0,2,5] – 0, 2, 5 – 0 2 5
[1,3,6] – 1, 3, 6 – 1 3 6
Вполне возможно, что несколько решений применимы к любому входу. Вам нужно только найти один.
Ограничения
- Сцены не могут быть сокращены и не могут стать дешевле.
- Каждая сцена может быть включена только один раз.
Требования
- Ваша программа должна закончиться во время фактической длины фильма.
- Ввод принимается из
STDIN
аргументов командной строки, в качестве параметров функции или из ближайшего аналога. - Вы можете написать программу или функцию. Если это анонимная функция, пожалуйста, включите пример ее вызова.
- Это код-гольф, поэтому выигрывает самый короткий ответ в байтах.
- Стандартные лазейки запрещены.
Кино
Ваш первый фильм - документальный фильм о маленьком городке в Германии под названием Рюкзак 1 . Этот город был переселен из-за экологических ограничений в 70-х годах:
Movie: [25, 10]
Scenes: [
[5, 2, 4],
[5, 5, 7],
[7, 1, 3],
[8, 5, 3],
[12, 3, 9],
]
Возможное решение с продолжительностью 22
, бюджетом 10
и важностью 20
:
0, 1, 4
Ваш следующий проект - это эпизод с Фарго :
Movie: [45, 25]
Scenes: [
[2, 1, 1],
[8, 5, 9],
[10, 6, 8],
[10, 3, 6],
[10, 9, 7],
[11, 4, 3],
[19, 5, 6],
]
Возможное решение с продолжительностью 40
, бюджетом 24
и важностью 31
:
0, 1, 2, 3, 4
Наконец, вот сцены для фильма, где « М. МакКонахи путешествует в далекую галактику, только чтобы узнать, что Мэтт Дэймон прибыл туда первым ».
Movie: [169, 165]
Scenes: [
[5, 8, 2],
[5, 20, 6],
[6, 5, 8],
[6, 10, 3],
[7, 6, 5],
[7, 9, 4],
[7, 8, 9],
[7, 9, 5],
[8, 6, 8],
[8, 8, 8],
[8, 5, 6],
[9, 5, 6],
[9, 8, 5],
[9, 4, 6],
[9, 6, 9],
[9, 8, 6],
[9, 7, 8],
[10, 22, 4],
[10, 12, 9],
[11, 7, 9],
[11, 9, 8],
[12, 11, 5],
[15, 21, 7],
]
Возможное решение с продолжительностью 169
, бюджетом 165
и важностью 133
:
1, 2, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22
1 Любое сходство между проблемой вызова и фактическим языком совершенно случайно.
источник
Haskell, 125 байт
Пример использования:
(25,10) & [(5,2,4),(5,5,7),(7,1,3),(8,5,3),(12,3,9)]
->[0,1,4]
.Как это устроено:
Нашел трюк с подпоследовательностью некоторое время назад в ответе @xnor. Это короче, чем
subsequence
требуетсяimport Data.List
.источник
Рубин,
172166165 байтовЯ действительно должен начать проверять, являются ли версии Ruby моих ответов на Python более подходящими, прежде чем публиковать эти ответы на Python. В любом случае, это тот же самый метод грубой силы, что и раньше. Любые советы по игре в гольф приветствуются, в том числе те, которые связаны с некоторыми актуальными методами оптимизации.
Ungolfed:
источник