That would do it if you have a 64-bit type, which most implementations
have, but the standard does not require.
I think that I can make it shorter and cleaner.

int main(int argc, char* argv[])
{
    const int n=49;
    char a[n]={0};
    int p=0;

    // This line will run for 10^100 years
    for(; p < n; p = ++a[p] ? 0 : p + 1);

    return 0;
}

The array of 49 bytes provides 392 bits of state, which will take more
than the 2^387 cycles available in a google years.

If the processor takes 9 operations to execute the loop, a value of
n=48 would be sufficient.

Don

On May 7, 12:24 pm, Dave <dave_and_da...@juno.com> wrote:
> @Don: Here is my solution:
>
> unsigned long long int a=1;
> unsigned long long int b=0;
> unsigned long long int c=0;
> unsigned long long int d=0;
> unsigned long long int e=0;
> unsigned long long int f=0;
> unsigned long long int g=0;
> unsigned long long int h=0;
> /* here is the line "/
> while(a)if(!++h)if(!++g)if(!++f)if(!++e)if(!++d)if(!++c)if(!++b)++a;
>
> My reasoning is as follows: 1 google years ~= 10^116.5 nanoseconds ~=
> 2^387. Thus, incrementing an integer of length 387 bits once every
> nanosecond should take a google years to overflow. Seven 64-bit
> integers provides 448 bits of state.
>
> Dave
>
> On May 6, 11:25 am, Don <dondod...@gmail.com> wrote:
>
> > What is the shortest single line in a C program which will take more
> > than a google years to execute, but will eventually complete? You are
> > permitted to have code before or after the line, but execution of the
> > code must remain on that line, meaning no function calls, etc. Assume
> > a processor which executes 1 billion operations a second.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to