Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions captureTheFlag/Programming/adventOfCode/71.example
Original file line number Diff line number Diff line change
@@ -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.
101 changes: 101 additions & 0 deletions captureTheFlag/Programming/adventOfCode/71.input
Original file line number Diff line number Diff line change
@@ -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.
78 changes: 78 additions & 0 deletions captureTheFlag/Programming/adventOfCode/71.py
Original file line number Diff line number Diff line change
@@ -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()