From 63a04a7af57d0ae47c0c5c04cd81435decf2b65f Mon Sep 17 00:00:00 2001 From: David Daily Date: Wed, 9 Dec 2020 12:11:32 -0600 Subject: [PATCH] Update '2020/day5.ahk' doesn't work right now, but whatever --- 2020/day5.ahk | 205 ++++++++++++-------------------------------------- 1 file changed, 47 insertions(+), 158 deletions(-) diff --git a/2020/day5.ahk b/2020/day5.ahk index a450056..3de04a0 100644 --- a/2020/day5.ahk +++ b/2020/day5.ahk @@ -1,7 +1,9 @@ #SingleInstance, Force loc := A_ScriptDir "\data5.txt" file := FileOpen(loc, "r") -data := [] +binID := [] +decID := [] + dialog(str){ MsgBox, 1,, %str% @@ -13,162 +15,49 @@ while !(file.AtEOF){ line := file.ReadLine() line := RegExReplace(line, "F|L", "0") line := RegExReplace(line, "B|R", "1") - data.Push(line) + binID.Push(line) + decID.Push(Dec(line)) +} +SortArray(binID, "D") +SortArray(decID, "D") +dialog("Part 1: " binID[binID.MinIndex()] "`n" decID[decID.MinIndex()]) + +Dec(x){ + b:=StrLen(x),r:=0 + loop,parse,x + r|=A_LoopField<<--b + return r } -dialog(data[data.MinIndex()]) -data := {} -file.pos := 0 - -while !(file.AtEOF){ - line := file.ReadLine() - RegExMatch(line, "(.......)(...)", res) - Switch res1 - { - Case "FFFFFFF": row := 0 - Case "FFFFFFB": row := 1 - Case "FFFFFBF": row := 2 - Case "FFFFFBB": row := 3 - Case "FFFFBFF": row := 4 - Case "FFFFBFB": row := 5 - Case "FFFFBBF": row := 6 - Case "FFFFBBB": row := 7 - Case "FFFBFFF": row := 8 - Case "FFFBFFB": row := 9 - Case "FFFBFBF": row := 10 - Case "FFFBFBB": row := 11 - Case "FFFBBFF": row := 12 - Case "FFFBBFB": row := 13 - Case "FFFBBBF": row := 14 - Case "FFFBBBB": row := 15 - Case "FFBFFFF": row := 16 - Case "FFBFFFB": row := 17 - Case "FFBFFBF": row := 18 - Case "FFBFFBB": row := 19 - Case "FFBFBFF": row := 20 - Case "FFBFBFB": row := 21 - Case "FFBFBBF": row := 22 - Case "FFBFBBB": row := 23 - Case "FFBBFFF": row := 24 - Case "FFBBFFB": row := 25 - Case "FFBBFBF": row := 26 - Case "FFBBFBB": row := 27 - Case "FFBBBFF": row := 28 - Case "FFBBBFB": row := 29 - Case "FFBBBBF": row := 30 - Case "FFBBBBB": row := 31 - Case "FBFFFFF": row := 32 - Case "FBFFFFB": row := 33 - Case "FBFFFBF": row := 34 - Case "FBFFFBB": row := 35 - Case "FBFFBFF": row := 36 - Case "FBFFBFB": row := 37 - Case "FBFFBBF": row := 38 - Case "FBFFBBB": row := 39 - Case "FBFBFFF": row := 40 - Case "FBFBFFB": row := 41 - Case "FBFBFBF": row := 42 - Case "FBFBFBB": row := 43 - Case "FBFBBFF": row := 44 - Case "FBFBBFB": row := 45 - Case "FBFBBBF": row := 46 - Case "FBFBBBB": row := 47 - Case "FBBFFFF": row := 48 - Case "FBBFFFB": row := 49 - Case "FBBFFBF": row := 50 - Case "FBBFFBB": row := 51 - Case "FBBFBFF": row := 52 - Case "FBBFBFB": row := 53 - Case "FBBFBBF": row := 54 - Case "FBBFBBB": row := 55 - Case "FBBBFFF": row := 56 - Case "FBBBFFB": row := 57 - Case "FBBBFBF": row := 58 - Case "FBBBFBB": row := 59 - Case "FBBBBFF": row := 60 - Case "FBBBBFB": row := 61 - Case "FBBBBBF": row := 62 - Case "FBBBBBB": row := 63 - Case "BFFFFFF": row := 64 - Case "BFFFFFB": row := 65 - Case "BFFFFBF": row := 66 - Case "BFFFFBB": row := 67 - Case "BFFFBFF": row := 68 - Case "BFFFBFB": row := 69 - Case "BFFFBBF": row := 70 - Case "BFFFBBB": row := 71 - Case "BFFBFFF": row := 72 - Case "BFFBFFB": row := 73 - Case "BFFBFBF": row := 74 - Case "BFFBFBB": row := 75 - Case "BFFBBFF": row := 76 - Case "BFFBBFB": row := 77 - Case "BFFBBBF": row := 78 - Case "BFFBBBB": row := 79 - Case "BFBFFFF": row := 80 - Case "BFBFFFB": row := 81 - Case "BFBFFBF": row := 82 - Case "BFBFFBB": row := 83 - Case "BFBFBFF": row := 84 - Case "BFBFBFB": row := 85 - Case "BFBFBBF": row := 86 - Case "BFBFBBB": row := 87 - Case "BFBBFFF": row := 88 - Case "BFBBFFB": row := 89 - Case "BFBBFBF": row := 90 - Case "BFBBFBB": row := 91 - Case "BFBBBFF": row := 92 - Case "BFBBBFB": row := 93 - Case "BFBBBBF": row := 94 - Case "BFBBBBB": row := 95 - Case "BBFFFFF": row := 96 - Case "BBFFFFB": row := 97 - Case "BBFFFBF": row := 98 - Case "BBFFFBB": row := 99 - Case "BBFFBFF": row := 100 - Case "BBFFBFB": row := 101 - Case "BBFFBBF": row := 102 - Case "BBFFBBB": row := 103 - Case "BBFBFFF": row := 104 - Case "BBFBFFB": row := 105 - Case "BBFBFBF": row := 106 - Case "BBFBFBB": row := 107 - Case "BBFBBFF": row := 108 - Case "BBFBBFB": row := 109 - Case "BBFBBBF": row := 110 - Case "BBFBBBB": row := 111 - Case "BBBFFFF": row := 112 - Case "BBBFFFB": row := 113 - Case "BBBFFBF": row := 114 - Case "BBBFFBB": row := 115 - Case "BBBFBFF": row := 116 - Case "BBBFBFB": row := 117 - Case "BBBFBBF": row := 118 - Case "BBBFBBB": row := 119 - Case "BBBBFFF": row := 120 - Case "BBBBFFB": row := 121 - Case "BBBBFBF": row := 122 - Case "BBBBFBB": row := 123 - Case "BBBBBFF": row := 124 - Case "BBBBBFB": row := 125 - Case "BBBBBBF": row := 126 - Case "BBBBBBB": row := 127 - } - Switch res2 - { - Case "LLL": col := 0 - Case "LLR": col := 1 - Case "LRL": col := 2 - Case "LRR": col := 3 - Case "RLL": col := 4 - Case "RLR": col := 5 - Case "RRL": col := 6 - Case "RRR": col := 7 - } - sID := row * 8 - sID += col - - data.push(sID) -} - -dialog("Or " data[data.MinIndex()]) \ No newline at end of file +; the below is from https://sites.google.com/site/ahkref/custom-functions/sortarray, thank you A_Samurai +SortArray(Array, Order="A") { + ;Order A: Ascending, D: Descending, R: Reverse + MaxIndex := ObjMaxIndex(Array) + If (Order = "R") { + count := 0 + Loop, % MaxIndex + ObjInsert(Array, ObjRemove(Array, MaxIndex - count++)) + Return + } + Partitions := "|" ObjMinIndex(Array) "," MaxIndex + Loop { + comma := InStr(this_partition := SubStr(Partitions, InStr(Partitions, "|", False, 0)+1), ",") + spos := pivot := SubStr(this_partition, 1, comma-1) , epos := SubStr(this_partition, comma+1) + if (Order = "A") { + Loop, % epos - spos { + if (Array[pivot] > Array[A_Index+spos]) + ObjInsert(Array, pivot++, ObjRemove(Array, A_Index+spos)) + } + } else { + Loop, % epos - spos { + if (Array[pivot] < Array[A_Index+spos]) + ObjInsert(Array, pivot++, ObjRemove(Array, A_Index+spos)) + } + } + Partitions := SubStr(Partitions, 1, InStr(Partitions, "|", False, 0)-1) + if (pivot - spos) > 1 ;if more than one elements + Partitions .= "|" spos "," pivot-1 ;the left partition + if (epos - pivot) > 1 ;if more than one elements + Partitions .= "|" pivot+1 "," epos ;the right partition + } Until !Partitions +} \ No newline at end of file