ARPAVAX:reeds (09/19/82)
I consider Ken Arnold's public submission for the source of his long-awaited
rogue 5.3 to net.sources, viz:
main()
{
srand(getpid());
sleep((rand() % 120) * 60);
if ((rand() % 1000000) == 0)
printf("You Win!\n");
else
printf("You Loose.\n");
exit(0);
}
to be cruel and unusual, for this reason:
As soon as I read this code I set about devising a rascally way to cheat.
So I asked myself, which values of getpid() will luck out? So I wrote a
little program of my own:
main() {
int pid;
for(pid=0; pid<=30000; pid++) {
srand(pid);
rand();
if((rand() % 1000000) == 0)
printf("pid = %d\n", pid);
}
}
I found it made NO OUTPUT. A few hours of reflection told me that this
meant that Arnold's latest could be rewritten to read:
main()
{
srand(getpid());
sleep((rand() % 120) * 60);
printf("You Loose.\n");
exit(0);
}
without changing any observable program behavior.
At last Arnold has written a cheat-proof version of rogue. RATS! PHOOIE!!
Jim Reeds