From 00d998078d989fc8b0e03d760ca58d8261019af6 Mon Sep 17 00:00:00 2001 From: Srinivas P G Date: Wed, 19 Dec 2018 23:51:48 -0800 Subject: [PATCH] Day 7 Advent of code * Topology Sort --- .../Programming/adventOfCode/71.example | 7 ++ .../Programming/adventOfCode/71.input | 101 ++++++++++++++++++ captureTheFlag/Programming/adventOfCode/71.py | 78 ++++++++++++++ 3 files changed, 186 insertions(+) create mode 100644 captureTheFlag/Programming/adventOfCode/71.example create mode 100644 captureTheFlag/Programming/adventOfCode/71.input create mode 100644 captureTheFlag/Programming/adventOfCode/71.py diff --git a/captureTheFlag/Programming/adventOfCode/71.example b/captureTheFlag/Programming/adventOfCode/71.example new file mode 100644 index 0000000..9ab25bf --- /dev/null +++ b/captureTheFlag/Programming/adventOfCode/71.example @@ -0,0 +1,7 @@ +Step C must be finished before step A can begin. +Step C must be finished before step F can begin. +Step A must be finished before step B can begin. +Step A must be finished before step D can begin. +Step B must be finished before step E can begin. +Step D must be finished before step E can begin. +Step F must be finished before step E can begin. diff --git a/captureTheFlag/Programming/adventOfCode/71.input b/captureTheFlag/Programming/adventOfCode/71.input new file mode 100644 index 0000000..634cb92 --- /dev/null +++ b/captureTheFlag/Programming/adventOfCode/71.input @@ -0,0 +1,101 @@ +Step Y must be finished before step L can begin. +Step N must be finished before step D can begin. +Step Z must be finished before step A can begin. +Step F must be finished before step L can begin. +Step H must be finished before step G can begin. +Step I must be finished before step S can begin. +Step M must be finished before step U can begin. +Step R must be finished before step J can begin. +Step T must be finished before step D can begin. +Step U must be finished before step D can begin. +Step O must be finished before step X can begin. +Step B must be finished before step D can begin. +Step X must be finished before step V can begin. +Step J must be finished before step V can begin. +Step D must be finished before step A can begin. +Step K must be finished before step P can begin. +Step Q must be finished before step C can begin. +Step S must be finished before step E can begin. +Step A must be finished before step V can begin. +Step G must be finished before step L can begin. +Step C must be finished before step W can begin. +Step P must be finished before step W can begin. +Step V must be finished before step W can begin. +Step E must be finished before step W can begin. +Step W must be finished before step L can begin. +Step P must be finished before step E can begin. +Step T must be finished before step K can begin. +Step A must be finished before step G can begin. +Step G must be finished before step P can begin. +Step N must be finished before step S can begin. +Step R must be finished before step D can begin. +Step M must be finished before step G can begin. +Step Z must be finished before step L can begin. +Step M must be finished before step T can begin. +Step S must be finished before step L can begin. +Step S must be finished before step W can begin. +Step O must be finished before step J can begin. +Step Z must be finished before step D can begin. +Step A must be finished before step C can begin. +Step P must be finished before step V can begin. +Step A must be finished before step P can begin. +Step B must be finished before step C can begin. +Step R must be finished before step S can begin. +Step X must be finished before step S can begin. +Step T must be finished before step P can begin. +Step Y must be finished before step E can begin. +Step G must be finished before step E can begin. +Step Y must be finished before step K can begin. +Step J must be finished before step P can begin. +Step I must be finished before step Q can begin. +Step E must be finished before step L can begin. +Step X must be finished before step J can begin. +Step T must be finished before step X can begin. +Step M must be finished before step O can begin. +Step K must be finished before step A can begin. +Step D must be finished before step W can begin. +Step H must be finished before step C can begin. +Step F must be finished before step R can begin. +Step B must be finished before step Q can begin. +Step M must be finished before step Q can begin. +Step D must be finished before step S can begin. +Step Y must be finished before step I can begin. +Step M must be finished before step K can begin. +Step S must be finished before step G can begin. +Step X must be finished before step L can begin. +Step D must be finished before step V can begin. +Step B must be finished before step X can begin. +Step C must be finished before step L can begin. +Step V must be finished before step L can begin. +Step Z must be finished before step Q can begin. +Step Z must be finished before step H can begin. +Step M must be finished before step S can begin. +Step O must be finished before step C can begin. +Step B must be finished before step A can begin. +Step U must be finished before step V can begin. +Step U must be finished before step A can begin. +Step X must be finished before step G can begin. +Step K must be finished before step C can begin. +Step T must be finished before step S can begin. +Step K must be finished before step G can begin. +Step U must be finished before step B can begin. +Step A must be finished before step E can begin. +Step F must be finished before step V can begin. +Step Q must be finished before step A can begin. +Step F must be finished before step Q can begin. +Step J must be finished before step L can begin. +Step O must be finished before step E can begin. +Step O must be finished before step Q can begin. +Step I must be finished before step K can begin. +Step I must be finished before step P can begin. +Step J must be finished before step D can begin. +Step Q must be finished before step P can begin. +Step S must be finished before step C can begin. +Step U must be finished before step P can begin. +Step S must be finished before step P can begin. +Step O must be finished before step B can begin. +Step Z must be finished before step F can begin. +Step R must be finished before step V can begin. +Step D must be finished before step L can begin. +Step Y must be finished before step T can begin. +Step G must be finished before step C can begin. diff --git a/captureTheFlag/Programming/adventOfCode/71.py b/captureTheFlag/Programming/adventOfCode/71.py new file mode 100644 index 0000000..6366993 --- /dev/null +++ b/captureTheFlag/Programming/adventOfCode/71.py @@ -0,0 +1,78 @@ +record = {} + +""" +def recurse_all_nodes(node, stack): + + if node not in stack: + stack.append(node) + if node in record: + stack.append(node) + for child in record[node]: + recurse_all_nodes(child, stack) + +""" +def recurse_all_nodes(node, stack, leaf): + + if node in record and node not in stack: + stack.append(node) + for child in record[node]: + recurse_all_nodes(child, stack, leaf) + else: + leaf.append(node) + + +def topo_graph_create(data): + + root = None + + # Format data and make the relation (Dictionary with before) + for line in data: + line = line.split(" ") + + if not root: + root = line[1] + + if line[1] not in record: + record[line[1]] = [] + record[line[1]].append(line[7]) + record[line[1]] = sorted(record[line[1]]) + + """ + # Build a dictionary with before and after + if line[1] not in record: + record[line[1]] = {} + record[line[1]]["Before"] = [] + record[line[1]]["After"] = [] + record[line[1]]["After"].append(line[7]) + if line[7] not in record: + record[line[7]] = {} + record[line[7]]["Before"] = [] + record[line[7]]["After"] = [] + record[line[7]]["Before"].append(line[1]) + """ + # Construct a tree and perform inorder traversal except for the last leaf node + # As of now lets apply this in dictionary! + + #print record + stack = [] + leaf = [] + recurse_all_nodes(root, stack, leaf) + stack.extend(sorted(set(leaf))) + print "".join(stack) + #return data + + +def main(): + # Fetch input from url + import requests, sys + # Sent the cookie set through the environment variable to get this + #input = requests.get("https://adventofcode.com/2018/day/8/input") + + # Hard Coded inputs + input = open("71.example","r").read() + input = input.split("\n") + topo_graph_create(input[:-1]) + #print "Day 3: Part 1 answer is --> " + str(count) + #print "Day 3: Part 2 answer is --> " + id + +main()