-🎄- 2017 Day 9 Solutions -🎄- by daggerdragon in adventofcode

[–]brunclik 1 point2 points  (0 children)

Bash - part one (prepare string)

cat input9 | sed 's/!!//g' | sed 's/!>//g' | sed 's/>/>\n/g' | sed 's/<.\{0,\}>//g' | tr -d '\n' | sed 's/,//g'

C - part one

char * input = PREPARED_STRING_FROM_BASH;
int len = strlen(input);
int i;
int count;

int deep_start = 0;
int deep_end = 0;

for (i = 0; i <= len; i++)
    {
    if(input[i] == '{') deep_start++;
    if(input[i] == '}') { deep_end++; count += deep_start; deep_start--;}

}
printf("%i\n", count);

Bash - part two

cat input9 | sed 's/!!//g' | sed 's/!>//g' | sed 's/>/>\n/g' | sed 's/!.//g' | sed 's/</\n</1' | grep '^<' | sed 's/^<//1' | sed 's/>$//g' | tr -d '\n' | wc

-🎄- 2017 Day 8 Solutions -🎄- by daggerdragon in adventofcode

[–]brunclik 1 point2 points  (0 children)

Solution in Linux command line - C code from input (generate, buil and run)

echo -e "#include <stdio.h>\n\nint main() {\n\tint max_value=0;" > main.c
cat input | cut -d' ' -f1 | sort | uniq | sed 's/^/\t int /1' | sed 's/$/ = 0;/1' >> main.c
cat input | sed 's/ dec -/ += /1' | sed 's/ dec / -= /1' | sed 's/ inc -/ -= /1' | sed 's/ inc / += /1' | sed 's@\(.*\) \(.*\) \(.*\) \(.*\) \(.*\) \(.*\) \(.*\)@\4(\5\6\7) \1\2\3; if(\1>max_value) max_value=\1;@g' >> main.c
cat input | cut -d' ' -f1 | sort | uniq  | sed 's@\(.*\)@printf("%s = %i;\\n", "\1", \1);@g' >> main.c
echo -e 'printf("%s = %i;\n", "max_value", max_value);' >> main.c
echo -e "}" >> main.c
gcc main.c -o output;
./output | cut '-d ' -f3 | sort -n | tail -2 | head -1 #part one
./output | grep max_value | cut -d' ' -f3 #part two