Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.programming > #10281
| 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> |
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
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