var datasets = [
{arg: "1-2", out: -1},
{arg: "5+(3-2[)*3]", out: 7},
{arg: "[2+3(a/4[+b]**3)]*{7/3}", out: -1},
{arg: ":)", out: 1},
{arg: "[]({})[(){}]{([]{()})}", out: -1},
{arg: "(:", out: 1},
]
var names = ['vyraz'];
Dostáváme libovolně dlouhý aritmetický výraz. Nezajímá nás jeho výsledek ani, jestli ten výraz jde vůbec spočítat. Chceme jen vědět, jestli jsou v něm smysluplně uspořádané závorky.
Jako závorky počítáme ty kulaté ()
, hranaté []
a složené {}
.
Smějí být použité v libovolném pořadí, ale zavřít smíme vždycky jen tu závorku, kterou jsme posledně otevřeli.
Pokud je v uzávorkování chyba, program má vrátit index prvního znaku, kde je závorka použitá špatně.
(Index prvního znaku je pochopitelně nula.)
Pokud je chyba v tom, že výraz nesměl v danou chvíli končit, program má vrátit délku řetězce.
Pokud je uzávorkování správně, program má vrátit hodnotu -1
.
def main(vyraz):
for i, znak in enumerate(vyraz):
if znak == ")":
return i
return -1
Rada: řetězec textu se dá procházet for
cyklem.