Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
76
Task/Langtons-ant/Dyalect/langtons-ant.dyalect
Normal file
76
Task/Langtons-ant/Dyalect/langtons-ant.dyalect
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
let xInc = [0, 1, -1, 0]
|
||||
let yInc = [-1, 0, 0, 1]
|
||||
let north = 0
|
||||
let east = 1
|
||||
let west = 2
|
||||
let south = 3
|
||||
|
||||
let leftTurns = [ west, north, south, east ]
|
||||
let rightTurns = [ east, south, north, west ]
|
||||
|
||||
func move(ant) {
|
||||
ant.position.x += xInc[ant.direction]
|
||||
ant.position.y += yInc[ant.direction]
|
||||
}
|
||||
|
||||
func Array.Step(ant) {
|
||||
var ptCur = (var x: ant.position.x + ant.origin.x, var y: ant.position.y + ant.origin.y)
|
||||
var leftTurn = this[ptCur.x][ptCur.y]
|
||||
ant.direction =
|
||||
if leftTurn {
|
||||
leftTurns[ant.direction]
|
||||
} else {
|
||||
rightTurns[ant.direction]
|
||||
}
|
||||
this[ptCur.x][ptCur.y] = !this[ptCur.x][ptCur.y]
|
||||
move(ant)
|
||||
ptCur = (x: ant.position.x + ant.origin.x, y: ant.position.y + ant.origin.y)
|
||||
ant.outOfBounds =
|
||||
ptCur.x < 0 ||
|
||||
ptCur.x >= ant.width ||
|
||||
ptCur.y < 0 ||
|
||||
ptCur.y >= ant.height
|
||||
ant.position
|
||||
}
|
||||
|
||||
func newAnt(width, height) {
|
||||
(
|
||||
var position: (var x: 0, var y: 0),
|
||||
var origin: (x: width / 2, y: height / 2),
|
||||
var outOfBounds: false,
|
||||
var isBlack: [],
|
||||
var direction: east,
|
||||
var width: width,
|
||||
var height: height
|
||||
)
|
||||
}
|
||||
|
||||
func run() {
|
||||
let w = 100
|
||||
let h = 100
|
||||
let blacks = Array.Empty(w, () => Array.Empty(h, false))
|
||||
let ant = newAnt(w, h)
|
||||
|
||||
while !ant.outOfBounds {
|
||||
blacks.Step(ant)
|
||||
}
|
||||
|
||||
var iRow = 0;
|
||||
|
||||
while iRow < w {
|
||||
var iCol = 0;
|
||||
var ln = ""
|
||||
while iCol < h {
|
||||
ln += if blacks[iCol][iRow] {
|
||||
"#"
|
||||
} else {
|
||||
" "
|
||||
}
|
||||
iCol += 1
|
||||
}
|
||||
print(ln)
|
||||
iRow += 1
|
||||
}
|
||||
}
|
||||
|
||||
run()
|
||||
Loading…
Add table
Add a link
Reference in a new issue