PPPP #1
by Santiago J
HTML
<pre id="out"></pre>
CoffeeScript
out = document.querySelector("#out")
clear = ->
out.innerHTML = ""
print = (str) ->
out.textContent += str
printGrid = (grid) ->
print grid.map((row) ->
row.map((cell) -> if cell then "H" else "T").join("")
).join("\n")
printGraph = (grid) ->
res = []
for y in [0...grid.length-1]
row = grid[y]
row2 = grid[y+1]
resrow1 = ""
for x in [0...row.length-1]
resrow1 += if row[x] == row[x+1] then " O" else " X"
res.push resrow1
resrow2 = ""
for x in [0...row.length]
resrow2 += if row[x] == row2[x] then "O " else "X "
res.push resrow2
row = grid[grid.length - 1]
resrow1 = ""
for x in [0...row.length-1]
resrow1 += if row[x] == row[x+1] then " O" else " X"
res.push(resrow1)
print res.join("\n")
initGrid = (len) ->
grid = []
for i in [0...len]
g = []
g.push false for i in [0...len]
grid.push g
grid
subflip = (grid, x, y) ->
if y >= 0 and y < grid.length and x >= 0 and x < grid[y].length
grid[y][x] = !grid[y][x]
flip = (grid, x, y) ->
if y < 0 or x < 0 or y >= grid.length or x >= grid[y].length
throw new Error "Keep flips inside the grid at all times, please."
subflip grid, x, y
subflip grid, x - 1, y
subflip grid, x + 1, y
subflip grid, x, y - 1
subflip grid, x, y + 1
randomLocation = (grid) ->
y = Math.random() * grid.length | 0
x = Math.random() * grid[y].length | 0
{x, y}
grid = initGrid 8
numSteps = 100
steps = []
steps.push randomLocation grid for i in [0...numSteps]
flip grid, xy.x, xy.y for xy in steps
printGrid grid
print "\n\n"
print "graph:\n"
printGraph grid
print "\n\n"
print "[#{xy.x+1}, #{xy.y+1}]\n" for xy in steps