Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SetWorkingDir %A_ScriptDir%
- FileRead, cubesStr, % A_ScriptDir "\d17.txt"
- cubesStr := StrReplace(cubesStr, "#", 1)
- cubesStr := StrReplace(cubesStr, ".", 0)
- nei := []
- Loop, 3
- {
- x := A_Index - 2
- Loop, 3
- {
- y := A_Index - 2
- Loop, 3
- {
- z := A_Index - 2
- Loop, 3
- {
- w := A_Index - 2
- if (x = 0) and (y = 0) and (z = 0) and (w = 0)
- Continue
- nei.Push({x: x, y: y, z: z, w: w})
- }
- }
- }
- }
- cubes := []
- cubes[0] := StrSplit(cubesStr, "`r`n")
- for i, j in cubes[0] {
- cubes[0][i] := []
- for k, l in StrSplit(j) {
- if !cubes[0][i][k] {
- cubes[0][i][k] := []
- }
- cubes[0][i][k][0] := {}
- cubes[0][i][k][0]["state"] := l
- cubes[0][i][k][0]["actN"] := 0
- cubes[0][i][k][0]["inaN"] := 0
- }
- }
- Loop, 6
- {
- cubesC := ObjFullyClone(cubes)
- for z, layer in cubesC {
- for y, line in layer {
- for x, cell in line {
- for w, cube in cell {
- for a, neiC in GetCubesNei(nei, x, y, z, w) {
- if !cubes[neiC.z]
- cubes[neiC.z] := []
- if !cubes[neiC.z][neiC.y]
- cubes[neiC.z][neiC.y] := []
- if !cubes[neiC.z][neiC.y][neiC.x]
- cubes[neiC.z][neiC.y][neiC.x] := []
- if !cubes[neiC.z][neiC.y][neiC.x][neiC.w] {
- cubes[neiC.z][neiC.y][neiC.x][neiC.w] := {}
- cubes[neiC.z][neiC.y][neiC.x][neiC.w]["state"] := 0
- cubes[neiC.z][neiC.y][neiC.x][neiC.w]["actN"] := 0
- cubes[neiC.z][neiC.y][neiC.x][neiC.w]["inaN"] := 0
- }
- if (cube.state = 1)
- cubes[neiC.z][neiC.y][neiC.x][neiC.w]["actN"] += 1
- else
- cubes[neiC.z][neiC.y][neiC.x][neiC.w]["inaN"] += 1
- }
- }
- }
- }
- }
- for z, layer in cubes {
- for y, line in layer {
- for x, cell in line {
- for w, cube in cell {
- if (cube.state = 1) and ((cube.actN != 2) and (cube.actN != 3))
- cubes[z][y][x][w]["state"] := 0
- if (cube.state = 0) and (cube.actN = 3)
- cubes[z][y][x][w]["state"] := 1
- cubes[z][y][x][w]["actN"] := 0
- cubes[z][y][x][w]["inaN"] := 0
- }
- }
- }
- }
- cubesC := ""
- }
- activeCount := 0
- for z, layer in cubes {
- for y, line in layer {
- for x, cell in line {
- for w, cube in cell {
- if (cube.state = 1)
- activeCount += 1
- }
- }
- }
- }
- Clipboard := activeCount
- GetCubesNei(nei, x, y, z, w) {
- CubesNei := []
- for i, j in nei {
- CubesNei.Push({x: j.x + x, y: j.y + y, z: j.z + z, w: j.w + w})
- }
- Return CubesNei
- }
- 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