Talk:Boids
Racket code
Why is the Racket code published off-site? Can we move it to the wiki or is it copyrighted? Fwend (talk) 23:33, 22 April 2016 (UTC)
Task specification
Should the task define specific rules the birds follow, so implementations won't be too arbitrary? --Ledrug 18:40, 7 January 2013 (UTC)
- There are several variants of the three rules of boids movements, but the original ones should be enough for this task. -bearophile 23:29, 7 January 2013 (UTC)
- Yep. We really do need something concrete to implement rather than a vague link to a Wikipedia article that does not seem to have any pseudo-code to follow. --Paddy3118 19:58, 7 January 2013 (UTC)
- I agree the Task specification is incomplete and needs improvements. (I think a Boids task is good for RosettaCode because the code needed for such simulation is not too much long, and it's a kind of task not overrepresented in RC.) -bearophile 23:29, 7 January 2013 (UTC)
- This Python version is readable and it doesn't have obstacles. http://code.activestate.com/recipes/502240-boids-version-11/ Removing the GUI code it's about 120 lines of non-comment Python code. Is this too much for a RosettaCode Task?
- It's not very good practice to rely on code as an explanation for an entire task. Explaining things in English, pseudocode, or diagrams/tables is preferred. Not everybody can read Python (including me). --Mwn3d 04:27, 8 January 2013 (UTC)
- This Python version is readable and it doesn't have obstacles. http://code.activestate.com/recipes/502240-boids-version-11/ Removing the GUI code it's about 120 lines of non-comment Python code. Is this too much for a RosettaCode Task?
- A few things would be helpful:
- What each bird would consider its local flock;
- How much does individuals in a local flock affect a bird's steering (how close is crowded, by how much does a bird adjust its current heading to fit into its local flock, etc)
- You asked for the birds to fly from left to right and avoid obstacles, again how much does each weigh in each bird's steering consideration.
- I haven't looked into it carefully, but I think these should be mandated by the task for consistent implementations. Also it's questionable if a console text representation has enough spatial resolution to make the simulation workable, but that's a separate issue. --Ledrug 07:16, 8 January 2013 (UTC)
- A few things would be helpful:
Huh. The output of that Racket implementation just crashes my browser about half a second in. It's been a while since I've come across such a total JS implementation bug. There might be a bug in the Racket code — I've not checked, to be honest — but the browser keeling over in response is really wrong. –Donal Fellows (talk) 12:31, 25 January 2014 (UTC)
- It worked find for me. Like you said, no matter what the Racked output does, the browser should not crash, so I think we should focus the blame on your browser for now (what is it, BTW?). --Ledrug (talk) 00:25, 26 January 2014 (UTC)
Python code for cave generation
The board was generated by this simple Python code: <lang python>from array import array from math import hypot
nx = 85 ny = 16 background = '.' foreground = '#'
mat = [array("c", background) * nx for _ in xrange(ny)]
def add_circle(mat, (cx, cy, r)):
for y in xrange(cy - r, cy + r + 1): for x in xrange(cx - r, cx + r + 1): if hypot(cx - x, cy - y) <= r: if x >= 0 and x < len(mat[0]) and y >= 0 and y < len(mat): mat[y][x] = foreground
for c in [(14, 2, 8), (nx / 2, ny / 2, 3), (nx - 17, ny - 2, 9)]:
add_circle(mat, c)
for row in mat:
print row.tostring()</lang>