Data update
This commit is contained in:
parent
35bcdeebf8
commit
74c69a0df6
2427 changed files with 31826 additions and 3468 deletions
|
|
@ -25,7 +25,7 @@ const int electronTail = 3;
|
|||
|
||||
wireWorldRuleSet = new RuleSet
|
||||
{
|
||||
proceed(Space s, int x, int y, ref int retVal)
|
||||
int proceed(Space s, int x, int y)
|
||||
{
|
||||
int cell := s.at(x, y);
|
||||
|
||||
|
|
@ -35,23 +35,23 @@ wireWorldRuleSet = new RuleSet
|
|||
int number := s.LiveCell(x, y, electronHead);
|
||||
if (number == 1 || number == 2)
|
||||
{
|
||||
retVal := electronHead
|
||||
^ electronHead
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal := conductor
|
||||
^ conductor
|
||||
}
|
||||
}
|
||||
electronHead
|
||||
{
|
||||
retVal := electronTail
|
||||
^ electronTail
|
||||
}
|
||||
electronTail
|
||||
{
|
||||
retVal := conductor
|
||||
^ conductor
|
||||
}
|
||||
:{
|
||||
retVal := cell
|
||||
^ cell
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
@ -62,12 +62,13 @@ sealed class Model
|
|||
|
||||
constructor load(string stateString, int maxX, int maxY)
|
||||
{
|
||||
var strings := stateString.splitBy(newLine).selectBy:(s => s.toArray()).toArray();
|
||||
var strings := stateString.splitBy(newLineConstant).selectBy:(s => s.toArray()).toArray();
|
||||
|
||||
theSpace := IntMatrixSpace.allocate(maxX, maxY, RuleSet
|
||||
{
|
||||
proceed(Space s, int x, int y, ref int retVal)
|
||||
int proceed(Space s, int x, int y)
|
||||
{
|
||||
int retVal := 0;
|
||||
if (x < strings.Length)
|
||||
{
|
||||
var l := strings[x];
|
||||
|
|
@ -87,8 +88,9 @@ sealed class Model
|
|||
else
|
||||
{
|
||||
retVal := empty
|
||||
}
|
||||
};
|
||||
|
||||
^ retVal
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
|||
97
Task/Wireworld/MiniScript/wireworld.mini
Normal file
97
Task/Wireworld/MiniScript/wireworld.mini
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
colors = [color.black, color.yellow, color.aqua, color.red]
|
||||
deltas = [[-1,-1], [-1,0], [-1,1],
|
||||
[ 0,-1], [ 0,1],
|
||||
[ 1,-1], [ 1,0], [ 1,1]]
|
||||
|
||||
displayGrid = function(grid, td)
|
||||
for y in range(0, grid.len - 1)
|
||||
for x in range(0, grid[0].len - 1)
|
||||
td.setCell x,y, grid[y][x]
|
||||
end for
|
||||
end for
|
||||
end function
|
||||
|
||||
buildGrid = function(s)
|
||||
lines = s.split(char(13))
|
||||
nRows = lines.len
|
||||
nCols = 0
|
||||
for line in lines
|
||||
if line.len > nCols then nCols = line.len
|
||||
end for
|
||||
|
||||
grid = []
|
||||
emptyRow = []
|
||||
for c in range(1,nCols)
|
||||
emptyRow.push(0)
|
||||
end for
|
||||
|
||||
for line in lines
|
||||
row = emptyRow[:]
|
||||
for i in range(0, line.len - 1)
|
||||
row[i] = " .Ht".indexOf(line[i])
|
||||
end for
|
||||
grid.push(row)
|
||||
end for
|
||||
return grid
|
||||
end function
|
||||
|
||||
getNewState = function(td, x, y)
|
||||
cellState = td.cell(x, y)
|
||||
if cellState == 3 then
|
||||
return 1
|
||||
else if cellState == 2 then
|
||||
return 3
|
||||
else if cellState == 1 then
|
||||
sum = 0
|
||||
for delta in deltas
|
||||
x1 = x + delta[0]
|
||||
y1 = y + delta[1]
|
||||
if td.cell(x1, y1) == 2 then sum += 1
|
||||
end for
|
||||
if sum == 1 or sum == 2 then
|
||||
return 2
|
||||
else
|
||||
return 1
|
||||
end if
|
||||
end if
|
||||
return cellState
|
||||
end function
|
||||
|
||||
clear
|
||||
|
||||
wireWorldProgram = "tH........." + char(13)
|
||||
wireWorldProgram += ". ." + char(13)
|
||||
wireWorldProgram += " ..." + char(13)
|
||||
wireWorldProgram += ". ." + char(13)
|
||||
wireWorldProgram += "Ht.. ......"
|
||||
grid = buildGrid(wireWorldProgram)
|
||||
|
||||
// Prepare a tile display
|
||||
// Generate image used for the tiles from the colors defined above.
|
||||
img = Image.create(colors.len, 1);
|
||||
for i in range(0, colors.len - 1)
|
||||
img.setPixel(i, 0, colors[i])
|
||||
end for
|
||||
|
||||
cols = grid[0].len
|
||||
rows = grid.len
|
||||
display(4).mode = displayMode.tile
|
||||
td = display(4)
|
||||
cSize = 25
|
||||
td.cellSize = cSize // size of cells on screen
|
||||
td.scrollX = -(960 - cols * (cSize + 1)) / 2
|
||||
td.scrollY = -(640 - rows * (cSize + 1)) / 2
|
||||
td.extent = [cols, rows]
|
||||
td.overlap = -1 // adds a small gap between cells
|
||||
td.tileSet = img; td.tileSetTileSize = 1
|
||||
td.clear 0
|
||||
|
||||
while true
|
||||
displayGrid(grid, td)
|
||||
for y in range(0, rows - 1)
|
||||
for x in range(0, cols - 1)
|
||||
grid[y][x] = getNewState(td, x, y)
|
||||
end for
|
||||
end for
|
||||
wait 0.5
|
||||
end while
|
||||
Loading…
Add table
Add a link
Reference in a new issue