Update '2020/day5.ahk'
doesn't work right now, but whatever
This commit is contained in:
		
							
								
								
									
										205
									
								
								2020/day5.ahk
									
									
									
									
									
								
							
							
						
						
									
										205
									
								
								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()]) | ||||
| ;	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 | ||||
| } | ||||
		Reference in New Issue
	
	Block a user