Gooi nu de beschadigde regels weg. De overige regels zijn onvolledig.
Onvolledige regels hebben geen verkeerd sluitende karakters - in plaats daarvan missen ze enkele sluitende karakters op het einde van de regel. Op het navigatie-subsysteem te herstellen, hoef je alleen maar de volgorde van de sluitende karakters te vinden die alle open blokken op de regel afsluiten.
Je kunt enkel de sluitende karakters ()
, ]
, }
, of >
) gebruiken, en je moet ze in de juiste volgorde toevoegen, zodat alleen geldige paren gevormd worden en alle blokken finaal afgesloten worden.
In het vorige voorbeeld zijn er vijf onvolledige regels:
[({(<(())[]>[[{[]{<()<>>
- Afsluiten met }}]])})]
.[(()[<>])]({[<{<<[]>>(
- Afsluiten met )}>]})
.(((({<>}<{<{<>}{[]{[]{}
- Afsluiten met }}>}>))))
.{<[[]]>}<{[{[{[]{()[[[]
- Afsluiten met ]]}}]}]}>
.<{([{{}}[<[[[<>{}]]]>[]]
- Afsluiten met ])}>
.Wist je dat tools voor automatisch aanvullen ook wedstrijden houden? Het is echt waar! De score wordt bepaald door de afsluitende reeks karakter per karakter te bekijken. Begin met een totaalscore van 0
. Vermenigvuldig daarna voor elk aanvullend afsluitend karakter de totaalscore met 5 en verhoog vervolgens de totaalscore met de puntenwaarde van het karakter op basis van deze tabel:
)
: 1
punt.]
: 2
punten.}
: 3
punten.>
: 4
punten.De laatste afsluitende reeks hierboven - ])}>
- zou dus als volgt gescoord worden:
0
.
0
te bekomen, en tel daar de waarde van ]
(2) bij op om een nieuwe totaalscore van 2
te bekomen.10
te bekomen, en tel daar de waarde van )
(1) bij op om een nieuwe totaalscore van 11
te bekomen.55
te bekomen, en tel daar de waarde van }
(3) bij op om een nieuwe totaalscore van 58
te bekomen.290
te bekomen, en tel daar de waarde van >
(4) bij op om een nieuwe totaalscore van 294
te bekomen.De afsluitende reeksen van de vijf onvolledige regels hebben de volgende totaalscores::
}}]])})]
- 288957
total punten.)}>]})
- 5566
total punten.}}>}>))))
- 1480781
total punten.]]}}]}]}>
- 995444
total punten.])}>
- 294
total punten.Tools voor automatisch aanvullen zijn een soort apart: de winnaar wordt gevonden door alle scores te sorteren en daarna de middelste score te nemen. (Er is altijd een oneven aantal scores waarmee rekening moet gehouden worden.) In dit voorbeeld is de middelste score 288957
omdat er evenveel scores kleiner en groter zijn dan die score.
Zoek de afsluitende reeks voor elke onvolledige regel, score de afsluitende reeksen en sorteer de scores. Wat is de middelste score? Bepaal dit op de volgende manier:
score
waaraan de padnaam (str
) moet doorgegeven worden van een tekstbestand met de code van een navigatie-subsysteem. De functie moet de middelste score (int
) van alle afsluitende reeksen teruggeven.In deze interactieve sessie gaan we ervan uit dat de tekstbestanden subsystem01.txt
1 en subsystem02.txt`2 zich in de huidige directory bevinden.
>>> score('subsystem01.txt')
288957
>>> score('subsystem02.txt')
1190420163