diff options
Diffstat (limited to '19/py')
| -rw-r--r-- | 19/py/21-1.js | 10 | ||||
| -rw-r--r-- | 19/py/21-2.js | 23 | ||||
| -rw-r--r-- | 19/py/21.js | 14 | ||||
| -rw-r--r-- | 19/py/d21.py | 40 |
4 files changed, 56 insertions, 31 deletions
diff --git a/19/py/21-1.js b/19/py/21-1.js new file mode 100644 index 0000000..050352c --- /dev/null +++ b/19/py/21-1.js @@ -0,0 +1,10 @@ +// A or B or C: +// There is a gap somewhere in the next 3 tiles so we need to jump +or A T +and B T +and C T +not T J +// . and D +// We don't die if we jump +and D J +walk diff --git a/19/py/21-2.js b/19/py/21-2.js new file mode 100644 index 0000000..5f65fa1 --- /dev/null +++ b/19/py/21-2.js @@ -0,0 +1,23 @@ +// A or B or C: +// There is a gap somewhere in the next 3 tiles so we need to jump +or A T +and B T +and C T +not T J +// . and D +// We don't die if we jump +and D J +// (postfix) +// . and (H or EI or EF) +// H : We can immediatly jump again +// EI: We can walk one step and then jump again +// EF: We can walk two steps (and then potentially jump again) +// We don't have any information about tiles after I so we ignore and hope for +// the best +not F T +not T T +or I T +and E T +or H T +and T J +run diff --git a/19/py/21.js b/19/py/21.js deleted file mode 100644 index 7267d45..0000000 --- a/19/py/21.js +++ /dev/null @@ -1,14 +0,0 @@ -# part1 -or A T -and B T -and C T -not T J -and D J -# part2 -not F T -not T T -or I T -and E T -or H T -and T J -run diff --git a/19/py/d21.py b/19/py/d21.py index b4ad1eb..84f01ff 100644 --- a/19/py/d21.py +++ b/19/py/d21.py @@ -1,10 +1,5 @@ import intcode -f = open("../input/21", "r").readlines() - -c = intcode.Computer([int(x) for x in f[0].split(",")], ascii=True) -output = [] - def ascii_draw(a): s = "" for c in a: @@ -16,16 +11,27 @@ def ascii_draw(a): print("[INVALID ASCII]", c) return s -jumpscript = open("21.js", "r").readlines() -for line in jumpscript: - if line[0] != "#": - c.queue_ascii(line.strip().upper()) - print(line.strip().upper()) +def do(c, jumpscript): + output = [] + for line in jumpscript: + if line[:2] != "//": + c.queue_ascii(line.strip().upper()) + while not c.SIG_HALT: + c.step() + if c.SIG_OUTPUT: + output.append(c.output) + c.output = None + return ascii_draw(output) + +def pt1(input): + c = intcode.Computer([int(x) for x in input[0].split(",")], ascii=True) + return do(c, open("21-1.js", "r").readlines()) + +def pt2(input): + c = intcode.Computer([int(x) for x in input[0].split(",")], ascii=True) + return do(c, open("21-2.js", "r").readlines()) -while not c.SIG_HALT: - c.step() - if c.SIG_OUTPUT: - output.append(c.output) - c.output = None -print(output) -print(ascii_draw(output)) +if __name__ == "__main__": + input = open("../input/21", "r").readlines() + print(pt1(input)) + print(pt2(input)) |
