#!/usr/bin/perl
# ritalinworld.pl
# drugs to make you a screensaver.
#
# if you run it, run on black background (like DOS command prompt.)
# may be projected and accompanied by techno music to taste.
# 
# features:
# - gets less interesting but more hypnotic as it goes along.
# - at times, makes nice hypno-patterns
# - wagon wheel effect - can't tell if it's coming or going
# - tries to move toward equilibrium, though it's sort of hard to tell... 
# - glitches sometimes
# - barely discernible content
# - messy, disorganized code - an algorithmic snapshot of the author's mind! 


use Time::HiRes qw(usleep);

srand();

my $limit = 5000; # TRT around 10 minutes. 10000 gets you about 45.
my $downtime = 0;
my $string = ".";

for ($i=$limit;$i>1;$i--) {
	my $range = $i;
	my $spacefig;
 	$downtime = ($downtime * 1.7)/2 + 4; 
	my $halflife = ($i/2);
	my $out = rand($range) + $halflife;
	if ($i > 200) {
		$spacefig = 10;
	}
	elsif ($i > 600 and $i < 1000) {
		$spacefig = 1000;
	}
	else {
		$spacefig = $downtime - 2;
	}
	if (rand($range) < ($halflife)) {
		 for ($j=1;$j<rand($downtime - $spacefig) ;$j++) {
			# for ($j=1;$j<rand(10) ;$j++) {
			$string = $string . "\.";
		}
		print "$range $string $halflife . $string";
		print "$out\n";
	}
	else {
		if (int(rand($downtime * 3)) == 2) {
			sleep 1;
		}
		usleep (900 * $downtime);
	}
	
}