Jest n pól, ponumerowanych 1-n . Każde pudełko jest zablokowane, tak że można je otworzyć tylko jednym odpowiednim typem klucza (również ponumerowanym 1-n ). Te klucze są losowo rozrzucone w polach (jedno pole może mieć dowolną liczbę kluczy, jeden klucz może mieć dowolną liczbę duplikatów), a następnie wszystkie pola są zamykane. Skarb (numer 0 ) został również zamknięty w wielu skrzyniach.
Zatrudniłeś ślusarza, aby odzyskał cały skarb. Opłaca za każde pęknięte przez siebie pudełko. Nie ma opłaty za otwarcie skrzynki, dla której klucz jest już dostępny.
Dane wejściowe to zawartość każdego pola. Możesz zdecydować o formacie wejścia.
Wydaj minimalny koszt wymagany do zdobycia skarbów.
Notatki
- Twój algorytm może zająć dużo czasu, ale nie ma to znaczenia.
- Najkrótszy kod wygrywa.
- Nie musisz się martwić o nieprawidłowe dane wejściowe.
Przykładowe dane
Tutaj wiersz i reprezentuje klucze obecne w polu i .
Wejście
2 0
3
4 0
5 6 0
6
0
Wynik
1
Wejście
2 0
3 0
4 0
6
5 0
Wynik
3
Wejście
2 4 0
3 0
1 0
6
5 0
Wynik
2
Wejście
1
3 4
2 6
5
Wynik
0
źródło
[[1] [3 4] [] [] [2 6] [5]]
lub być może{{1},{3,4},{},{},{2,6},{5}}
. W ten sposób większość języków może ograniczyć czytanie wkładu do czegoś tak trywialnego, jaki=eval(read())
i skupić się na zabawnej części wyzwania.Odpowiedzi:
CJam,
59525049454342 bajtówDzięki @ MartinBüttner za grę w golfa z 3 bajtów i torowanie drogi dla 4 kolejnych!
Wypróbuj online w interpretatorze CJam .
Jak to działa
źródło
array long &
działa, więc możesz usunąća
z0a&
. Niestety utrudnia to złapanie cię.0a&
się0&
, ja też muszę wymienić0+
z0aa+
, ponieważ0 0&
jest falsy.CJam (53 bajty)
Jest to zbyt wolne dla tłumacza online.
Sekcja
źródło
java.lang.OutOfMemoryError: Java heap space
z twoim programem.[ [4,0], [1,3,4], [0], [6,0], [3,0], [5]]
oczywiście ze stylem wprowadzania pokazanym w oryginalnym poście.Haskell, 173 bajtów
l
to ten, do którego chcesz zadzwonić.Nie jestem pewien, czy nie powinienem używać pseudo-
Map
zamiast ([(Int,[Int])]
zamiast[[Int]]
).źródło