36 lines
532 B
Awk
36 lines
532 B
Awk
function push( c ){
|
|
sp++
|
|
stack[sp] = c
|
|
}
|
|
function pop(){
|
|
sp--
|
|
return stack[sp+1]
|
|
}
|
|
function peek(){
|
|
return stack[sp]
|
|
}
|
|
BEGIN{
|
|
FS = ""
|
|
sp = 0
|
|
}
|
|
{
|
|
for(i=1;i<=NF;i++){
|
|
t = peek()
|
|
if($i=="(" || $i=="[" || $i=="{" || $i=="<"){
|
|
push($i)
|
|
}
|
|
else{
|
|
if(i<NF && (($i==")"&&t!="(") || ($i=="]" && t!="[") || ($i=="}" && t!="{") || ($i==">" && t!="<" ))){
|
|
# print NR, "corrupted", $i, i
|
|
score += ($i==")") ? 3 : ($i=="]") ? 57 : ($i=="}") ? 1197 : 25137
|
|
break
|
|
}
|
|
else pop()
|
|
}
|
|
}
|
|
delete stack
|
|
}
|
|
END{
|
|
print score
|
|
}
|