Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.programming > #10281

Re: Long winter evenings

From Richard Heathfield <rjh@cpax.org.uk>
Newsgroups comp.programming
Subject Re: Long winter evenings
Date 2019-11-04 22:30 +0000
Organization Fix this later
Message-ID <qpq8pi$egm$1@dont-email.me> (permalink)
References <qppnk6$584$1@dont-email.me> <87k18fjnd0.fsf@bsb.me.uk>

Show all headers | View raw


On 04/11/2019 22:19, Ben Bacarisse wrote:
> Richard Heathfield <rjh@cpax.org.uk> writes:
> 
>> I have just written a program in C, which for reasons that will remain
>> shrouded in the mists of wossname I wanted to be as short as
>> possible. The program solves a highly specific and relatively
>> antiquated problem.
>>
>> Now that the nights are drawing in, some of you might be at a loose
>> end and wish for something to help you pass the time.
>>
>> So here's the puzzle, which is in two parts:
>>
>> (1) What, *exactly*, does the program do? That is, what is the
>> significance of the printed result?
> 
> These are rather odd questions.  I know the answer you want, but if
> someone can find some other significance for the output, you'd have to
> accept that answer.  I think you mean something along the lines of "what
> is the significance of the output that explains the method of
> calculation"?

That's a better way of stating it, yes.

> I won't say what I think you intend the answer to be, but I will say
> that the output is the first number in a infinite sequence that
> continues 18746, 34371, 49996, 65621, 81246, ...

You are Martin Gardner And I Claim My Five Pounds.

(In other words, absolutely right!)

> 
>> (2) Is there a way to make the program shorter, without compromising
>> its rigorous adherence to ISO C90? (See below.)
> 
> Yes.  Again, a bit odd.  How much can we change?  Preserving the logic
> and method of your calculation I can get the size down from 220
> characters to 157, but I'm sure that is not the lowest.

David Brown's reduction was very impressive.

> 
> Changing the logic, but sticking with the "purpose" (rather than just
> printing the answer), there are endless choices...  For example:
> 
> #include <stdio.h>
> int n;int main(void){while((++n*1024l-8404)%15625);return!printf("%d\n",n);}
> 
> (96 characters)

Impressive, but I can't help thinking that it's something of a cheat, 
since it assumes a considerable amount of knowledge not present in the 
original problem statement (well, not quite original, but the statement 
as modified by B.A.W.).

But I love the abuse of return.

> 
>> #include <stdio.h>
>> int r(int*c){int f=0;if(*c%5==1)*c/= 5,*c*=4,f=1;return f;}
>> int t(int c){int f=1,i;for(i=0;f&&i<5;i++)f=r(&c);return f*!(c%5);}
>> int main(void){int n=0,d=0;while(!d)d=t(++n);printf("%d\n",n);return 0;}
>>
>> Four obvious shortenings are excluded:
>> A. Lose the space between "#include" and "<stdio.h>";
>> B. Lose the second and third newlines;
>> C. Lose "void";
>> D. Lose "return 0;"
> 
> (Everyone can answer yes to Q2 if they spot the space between /= and 5!)

...which I didn't. I got most of them out, but I obviously missed that one.

>> If nobody gets it within a week or so, I'll post the solution to
>> (1). (If I could think of a solution to (2), I'd have written it that
>> way to start with!)
> 
> I find that second part hard to believe.

Alas, it's true. I may be smarter than some people think I am, but I'm 
not as smart as some other people think I am.

-- 
Richard Heathfield
Email: rjh at cpax dot org dot uk
"Usenet is a strange place" - dmr 29 July 1999
Sig line 4 vacant - apply within

Back to comp.programming | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Long winter evenings Richard Heathfield <rjh@cpax.org.uk> - 2019-11-04 17:37 +0000
  Re: Long winter evenings David Brown <david.brown@hesbynett.no> - 2019-11-04 22:39 +0100
    Re: Long winter evenings Richard Heathfield <rjh@cpax.org.uk> - 2019-11-04 21:51 +0000
      Re: Long winter evenings David Brown <david.brown@hesbynett.no> - 2019-11-05 10:42 +0100
    Re: Long winter evenings Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-11-04 22:24 +0000
  Re: Long winter evenings Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-11-04 22:19 +0000
    Re: Long winter evenings Richard Heathfield <rjh@cpax.org.uk> - 2019-11-04 22:30 +0000
      Re: Long winter evenings Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-11-04 23:59 +0000
        Re: Long winter evenings Richard Heathfield <rjh@cpax.org.uk> - 2019-11-05 01:03 +0000
          Re: Long winter evenings Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-11-05 04:01 +0000
            Re: Long winter evenings Richard Heathfield <rjh@cpax.org.uk> - 2019-11-05 07:42 +0000
  Re: Long winter evenings Melzzzzz <Melzzzzz@zzzzz.com> - 2019-11-04 23:00 +0000
  Re: Long winter evenings Tim Rentsch <tr.17687@z991.linuxsc.com> - 2019-11-06 04:58 -0800

csiph-web