Wprowadzenie
Wreszcie firma filmowa finansuje twój film. Dali ci maksymalny budżet, a także ustawili czas trwania twojego filmu.
Teraz możesz zacząć od przedprodukcji. Masz już zaplanowane kilka scen, ale nie wszystkie z nich mieszczą się w budżecie, a film też byłby o wiele za długi. Wiesz jednak znaczenie każdej sceny. Twoim celem jest wybranie scen, aby film nie był zbyt drogi, zbyt długi i mierny.
Wejście
Dostajesz running time
i budget
studio zatwierdziło:
[25, 10]
Masz listę scen w tym running time
, costs
a importance
dla każdego z nich:
[ [5, 2, 4], [7, 1, 3] ]
Jeśli tablice nie działają, wybierz inny format wejściowy, który najbardziej Ci odpowiada. Czasy są w minutach. Budżet i koszty są w milionach losowych walut. Znaczenie ma zakres od [1–9]
. Wszystkie liczby są liczbami całkowitymi.
Wynik
Wydrukuj listę scen, które mają zostać dołączone do filmu w przypadku, gdy:
- Suma
importance
jest zmaksymalizowana. - Koszty nie przekraczają budżetu.
- Długość mieści się w zakresie ± 5 minut zatwierdzonego czasu pracy.
Kolejność scen jest nieistotna i nie musi być zachowana.
Możesz wypisać listę liczb lub tablicę. Twój wynik może mieć indeks zerowy lub jeden:
[0,2,5] – 0, 2, 5 – 0 2 5
[1,3,6] – 1, 3, 6 – 1 3 6
Może się zdarzyć, że do każdego z danych wejściowych można zastosować wiele rozwiązań. Musisz tylko znaleźć jeden.
Ograniczenia
- Sceny nie mogą być skracane ani tańsze.
- Każda scena może być dołączona tylko raz.
Wymagania
- Twój program musi zakończyć się w czasie rzeczywistej długości filmu.
- Dane wejściowe są akceptowane z
STDIN
argumentów wiersza poleceń jako parametrów funkcji lub z najbliższego odpowiednika. - Możesz napisać program lub funkcję. Jeśli jest to funkcja anonimowa, podaj przykład jej wywołania.
- To jest golf golfowy, więc wygrywa najkrótsza odpowiedź w bajtach.
- Standardowe luki są niedozwolone.
Kino
Twój pierwszy film to dokument o małym miasteczku w Niemczech o nazwie Knapsack 1 . To miasto zostało przesiedlone z powodu ograniczeń środowiskowych w latach 70. XX wieku:
Movie: [25, 10]
Scenes: [
[5, 2, 4],
[5, 5, 7],
[7, 1, 3],
[8, 5, 3],
[12, 3, 9],
]
Możliwe rozwiązanie z czasem pracy 22
, budżetem 10
i znaczeniem 20
:
0, 1, 4
Twój następny projekt to odcinek Fargo :
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],
]
Możliwe rozwiązanie z czasem pracy 40
, budżetem 24
i znaczeniem 31
:
0, 1, 2, 3, 4
Wreszcie są sceny do filmu, w którym „ M. McConaughey podróżuje do odległej galaktyki, aby dowiedzieć się, że Matt Damon dotarł tam pierwszy ”.
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],
]
Możliwe rozwiązanie z czasem pracy 169
, budżetem 165
i znaczeniem 133
:
1, 2, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22
1 Wszelkie podobieństwo między problemem wyzwania a rzeczywistymi lokalizacjami jest całkowicie przypadkowe.
źródło
Haskell, 125 bajtów
Przykład użycia:
(25,10) & [(5,2,4),(5,5,7),(7,1,3),(8,5,3),(12,3,9)]
->[0,1,4]
.Jak to działa:
Znalazłem podsekwencję jakiś czas temu w odpowiedzi na @xnor. Jest krótszy niż
subsequence
wymagaimport Data.List
.źródło
Rubin,
172166165 bajtówNaprawdę powinienem zacząć sprawdzać, czy wersje Ruby moich odpowiedzi w Pythonie są bardziej golfistyczne, zanim opublikuję te odpowiedzi w języku Python. W każdym razie jest to to samo brutalne podejście do optymalizacji, co wcześniej. Wszelkie wskazówki dotyczące gry w golfa są mile widziane, w tym te, które wymagają pewnych faktycznych technik optymalizacji.
Nie golfowany:
źródło