Es gibt n Kästchen mit der Nummer 1-n . Jede Box ist gesperrt, sodass sie nur mit einem entsprechenden Schlüsseltyp (auch mit 1-n nummeriert ) geöffnet werden kann . Diese Schlüssel werden zufällig in den Feldern verteilt (ein Feld kann eine beliebige Anzahl von Schlüsseln enthalten, ein Schlüssel kann eine beliebige Anzahl von Duplikaten enthalten), und dann werden alle Felder geschlossen. Ein Schatz (mit der Nummer 0 ) wurde ebenfalls in vielen Kisten eingeschlossen.
Sie haben einen Schlosser engagiert, um den ganzen Schatz zu bergen. Er berechnet für jede Kiste, die er aufbricht. Das Öffnen einer Box, für die der Schlüssel bereits verfügbar ist, ist kostenlos.
Die Eingabe ist der Inhalt jeder Box. Sie können das Format der Eingabe festlegen.
Geben Sie die minimalen Kosten aus, die erforderlich sind, um die Schätze zu erhalten.
Anmerkungen
- Ihr Algorithmus kann lange dauern, aber das ist irrelevant.
- Kürzester Code gewinnt.
- Keine Notwendigkeit, sich um ungültige Eingaben zu kümmern.
Beispieldaten
Hier repräsentiert die Linie i die in Kasten i vorhandenen Schlüssel .
Eingang
2 0
3
4 0
5 6 0
6
0
Ausgabe
1
Eingang
2 0
3 0
4 0
6
5 0
Ausgabe
3
Eingang
2 4 0
3 0
1 0
6
5 0
Ausgabe
2
Eingang
1
3 4
2 6
5
Ausgabe
0
quelle
[[1] [3 4] [] [] [2 6] [5]]
oder vielleicht{{1},{3,4},{},{},{2,6},{5}}
. Auf diese Weise können die meisten Sprachen das Lesen der Eingabe auf etwas so Triviales reduzieren wiei=eval(read())
und sich auf den unterhaltsamen Teil der Herausforderung konzentrieren.Antworten:
CJam,
59525049454342 BytesVielen Dank an @ MartinBüttner für das Abschlagen von 3 Bytes und den Weg für weitere 4 Bytes!
Probieren Sie es online im CJam-Interpreter aus .
Wie es funktioniert
quelle
array long &
Werke, so können Sie das Entfernena
von0a&
. Leider ist es etwas schwieriger, dich zu fangen.0a&
mit0&
, ich muss auch ersetzen0+
mit0aa+
, da0 0&
falsy ist.CJam (53 Bytes)
Dies ist für den Online-Dolmetscher eher zu langsam.
Präparation
quelle
java.lang.OutOfMemoryError: Java heap space
mit Ihrem Programm erhalten.[ [4,0], [1,3,4], [0], [6,0], [3,0], [5]]
natürlich mit dem Eingabestil, wie er im ursprünglichen Beitrag gezeigt wurde.Haskell, 173 Bytes
l
ist derjenige, den du anrufen willst.Nicht sicher , ob ich nicht einen pseudo- verwenden sollte
Map
statt ([(Int,[Int])]
statt[[Int]]
).quelle