From cc919d85669c02acb0e22d21c6a39dcb6418fc71 Mon Sep 17 00:00:00 2001 From: Rasmus Malver Date: Fri, 9 Dec 2022 23:23:52 +0100 Subject: [PATCH] =?UTF-8?q?09=20A,=20d=C3=A5rlig?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 09/2022-12-09-A.py | 88 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100755 09/2022-12-09-A.py diff --git a/09/2022-12-09-A.py b/09/2022-12-09-A.py new file mode 100755 index 0000000..b4943fb --- /dev/null +++ b/09/2022-12-09-A.py @@ -0,0 +1,88 @@ +#!/usr/bin/env python3 + +import os,time + +a="""R 4 +U 4 +L 3 +D 1 +R 4 +D 1 +L 5 +R 2""" +#a=open("/Users/rasmus/Gits/aoc2022/09/ii").read().strip() +b={"L":-1, "U":1, "R":1, "D":-1} + +def mov(cmd,loc): + if cmd[0] in ["U","D"]: + return (loc[0],sum([loc[1],int(cmd[2:])*b[cmd[0]]])) + else: + return (sum([loc[0],int(cmd[2:])*b[cmd[0]]]),loc[1]) + +logH = [(0,0)] +logT = [(0,0)] +for l in a.split("\n"): + #print("LogT: {}\n".format(logT[-1])) + logH.append(mov(l,logH[-1])) + #print("Diff: {} {}, l {}".format(logH[-1][0]-logT[-1][0],logH[-1][1]-logT[-1][1],l)) + #print("LogH: {}".format(logH[-1])) + # If in same column: + if logT[-1][0]==logH[-1][0]: + # Case new head is next to or covering tail: + if logT[-1][1]==logH[-1][1]: + #print("Samme: {} {} {}".format(l,logH[-1],logT[-1])) + logT.append(logT[-1]) + continue + elif abs(logT[-1][1]-logH[-1][1])<2: + #print("Tæt: {} {} {}".format(l,logH[-1],logT[-1])) + logT.append(logT[-1]) + continue + # If above move to one above, else one below + logT.append((logT[-1][0],logH[-1][1]+1)) if logT[-1][1]>logH[-1][1] else logT.append((logT[-1][0],logH[-1][1]-1)) + print("Her") + + # If same row: + elif logT[-1][1]==logH[-1][1]: + # Case next to: + if abs(logT[-1][1]-logH[-1][1])<2: + logT.append(logT[-1]) + continue + logT.append((logH[-1][0]+1,logT[-1][1])) if logT[-1][0]>logH[-1][0] else logT.append((logH[-1][0]-1,logT[-1][1])) + + # If neither: + else: + # Case diagonally next to + if abs(logT[-1][0]-logH[-1][0])<2 and abs(logT[-1][1]-logH[-1][1])<2: + #print("Diagon: {} LogH: {} LogT: {}".format(abs(logT[-1][0]-logH[-1][0]),logH[-1],logT[-1])) + logT.append(logT[-1]) + continue + if l[0] in ["U","D"]: + logT.append((logH[-1][0],logH[-1][1]+1)) if logT[-1][1]>logH[-1][1] else logT.append((logH[-1][0],logH[-1][1]-1)) + #print("UD") + else: + logT.append((logH[-1][0]+1,logH[-1][1])) if logT[-1][0]>logH[-1][0] else logT.append((logH[-1][0]-1,logH[-1][1])) + + +print(logH) +print(logT) +print(len(sorted(set(logT)))) +exit() + +result=[] +for i in range(0,50): + result.append(list(".")*100) + + +for i in range(0,len(logH)): + result[logT[i][0]][logT[i][1]]="T" + result[logH[i][0]][logH[i][1]]="H" + + for b in result: + print("".join(b)) + print(f"{i}\n\n") + time.sleep(2) + os.system("clear") + result[logH[i][0]][logH[i][1]]="." + result[logT[i][0]][logT[i][1]]="." + +print(len(sorted(set(logT))))