# HG changeset patch # User Jordi GutiƩrrez Hermoso # Date 1512872872 18000 # Node ID 18e7ffa83a142f0a35e845f161852525c90b48e3 # Parent 7d06d033b0ee4f9b1685973577e200f7bba99120 day 9 diff --git a/2017/day09.d b/2017/day09.d new file mode 100644 --- /dev/null +++ b/2017/day09.d @@ -0,0 +1,49 @@ +import std.stdio; +import std.range; + +auto parseStream(string stream) { + bool quoted = false; + bool escape = false; + int sum = 0; + int garbage = 0; + int depth = 0; + foreach(c; stream) { + if(escape) { + escape = false; + continue; + } + else if(quoted) { + switch(c) { + case '>': + quoted = false; + break; + case '!': + escape = true; + break; + default: + garbage++; + } + } + else { + switch(c) { + case '{': + depth++; + break; + case '}': + sum += depth; + depth--; + break; + case '<': + quoted = true; + break; + default: + } + } + } + + return [sum, garbage]; +} + +void main(string[] args){ + writeln(File(args[1]).readln.parseStream); +}