Talk:Boids

From Rosetta Code

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)
A few things would be helpful:
  1. What each bird would consider its local flock;
  2. 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)
  3. 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)

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>