Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- List := StrSplit(FileOpen("day11_input.txt","R").Read(),"`r`n")
- for k, a in List {
- Temp := []
- for _, b in StrSplit(a)
- Temp.push(b)
- List[k] := Temp
- }
- NewList := List
- Loop {
- OldList := ObjFullyClone(NewList)
- NewList := []
- changes := 0
- for kx, x in OldList {
- for ky, y in OldList[kx] {
- ocupied := GetOcupied(OldList,{x:kx,y:ky})
- if (y == "L" && ocupied == 0) {
- NewList[kx,ky] := "#"
- changes++
- }
- else if (y == "#" && ocupied >= 5) {
- NewList[kx,ky] := "L"
- changes++
- }
- else
- NewList[kx,ky] := y
- }
- }
- if (changes==0) {
- break
- }
- }
- sum := 0
- for k, v in NewList {
- for _, x in v {
- sum += (x=="#")
- }
- }
- Msgbox % "sum: " sum
- GetOcupied(array,seat) {
- static movement := [[ 0, 1]
- ,[ 0,-1]
- ,[ 1, 1]
- ,[ 1, 0]
- ,[ 1,-1]
- ,[-1, 1]
- ,[-1, 0]
- ,[-1,-1]]
- ocupied := 0
- for k, pos in movement {
- Loop {
- xpos := seat.x + A_Index * pos[1]
- ypos := seat.y + A_Index * pos[2]
- check := array[xpos,ypos]
- if (check == ".")
- continue
- else if (check == "#")
- ocupied += 1
- break
- }
- }
- return ocupied
- }
- ObjFullyClone(obj)
- {
- nobj := obj.Clone()
- for k,v in nobj
- if IsObject(v)
- nobj[k] := A_ThisFunc.(v)
- return nobj
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement