mirror of
https://github.com/danbulant/introductionToProgramming
synced 2026-05-19 04:18:32 +00:00
40 lines
No EOL
1.2 KiB
Java
40 lines
No EOL
1.2 KiB
Java
import common.StdDraw;
|
|
|
|
class Chaos {
|
|
public static void main(String[] args) {
|
|
var x = 0.01;
|
|
var r = Double.parseDouble(args[0]);
|
|
var buffer = new double[200];
|
|
buffer[0] = x;
|
|
StdDraw.enableDoubleBuffering();
|
|
|
|
var t = 0;
|
|
while(true) {
|
|
System.out.format("t = %3d; x = %s\n", t, x);
|
|
x = Math.clamp(nextGeneration(x, r), 0, 1);
|
|
|
|
var offset = t % buffer.length;
|
|
if(offset == 0) {
|
|
StdDraw.clear();
|
|
buffer = new double[200];
|
|
}
|
|
buffer[offset] = x;
|
|
for(var toDraw = 0; toDraw < buffer.length; toDraw++) {
|
|
var to = buffer[toDraw];
|
|
StdDraw.line(toDraw / (double)buffer.length, 0, toDraw / (double) buffer.length, to);
|
|
}
|
|
if(offset % 10 == 0) {
|
|
StdDraw.show();
|
|
StdDraw.pause(100);
|
|
}
|
|
if(offset >= 1 && buffer[offset] == buffer[offset - 1]) { // stabilized value
|
|
StdDraw.pause(5000);
|
|
}
|
|
t += 1;
|
|
}
|
|
}
|
|
|
|
static double nextGeneration(double x, double r) {
|
|
return r * x * (1 - x);
|
|
}
|
|
} |