Why do we need noStroke() here? The code is based on an example from Examples library. Why can I not change the width of rect()?

```
int[] cells;
int generation;
void setup() {
size(640, 360);
background(255);
cells = new int[width];
for (int i = 0; i < cells.length/2; i++) {
cells[i] = int(random(-1, 2));
}
//cells[cells.length/2] = 1;
}
void draw() {
road();
generate();
render();
}
//drawing a road
void road() {
int a = 10;
fill(0);
strokeWeight(3);
line(0, height/2 + a, width, height/2 + a);
line(0, height/2 - a, width, height/2 - a);
}
//Rule 184
int Rule(int a, int b, int c) {
if (a == 1 && b == 1 && c == 1) {return 1;}
if (a == 1 && b == 1 && c == 0) {return 0;}
if (a == 1 && b == 0 && c == 1) {return 1;}
if (a == 1 && b == 0 && c == 0) {return 1;}
if (a == 0 && b == 1 && c == 1) {return 1;}
if (a == 0 && b == 1 && c == 0) {return 0;}
if (a == 0 && b == 0 && c == 1) {return 0;}
if (a == 0 && b == 0 && c == 0) {return 0;}
return 0;
}
//The process of creating the new generation
void generate() {
int nextgen[] = new int[cells.length];
for (int i = 1; i < cells.length-1; i++) {
int left = cells[i-1];
int me = cells[i];
int right = cells[i+1];
nextgen[i] = Rule(left,me,right);
}
for (int i = 1; i < cells.length-1; i++) {
cells[i] = nextgen[i];
}
generation++;
println(generation);
}
//drawing cells
void render() {
for (int i = 1; i < cells.length-1; i++){
if (cells[i] == 1) {
fill(0);
} else {
fill(255);
}
noStroke();
rect(i,height/2-10, 1000, 20);
}
}
```