Path: csiph.com!eternal-september.org!feeder.eternal-september.org!nntp.eternal-september.org!.POSTED!not-for-mail
From: Tim Rentsch
Newsgroups: comp.lang.c
Subject: Re: Sort of trivial code challenge - may be interesting to you anyway
Date: Mon, 06 Apr 2026 12:02:25 -0700
Organization: A noiseless patient Spider
Lines: 52
Message-ID: <86se97zzcu.fsf@linuxsc.com>
References: <10n80sc$3soe4$1@dont-email.me> <86v7feei2e.fsf@linuxsc.com> <20260302110720.00007698@yahoo.com> <86qzq2e1u3.fsf@linuxsc.com> <10o4ilk$1bo87$1@dont-email.me> <86ikbdebo8.fsf@linuxsc.com> <10o7he5$2cb17$1@dont-email.me> <865x718b5q.fsf@linuxsc.com> <10p0u54$32bhs$1@dont-email.me> <10p24th$3mc94$1@dont-email.me> <86h5qg66v7.fsf@linuxsc.com> <10p7g4c$1haut$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Date: Mon, 06 Apr 2026 19:02:26 +0000 (UTC)
Injection-Info: dont-email.me; posting-host="d9fa7580ab63f06b181c1510d363a99a"; logging-data="2429356"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+SQofc5SHG2kMelt5FMo3lds6oT91fSfA="
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:1KVB+iK1kGhuMUD6WHXyKhjsIx4= sha1:x2nutJRx5/8n5MBtEKW+M21xuto=
Xref: csiph.com comp.lang.c:397387
Bart writes:
> On 15/03/2026 22:54, Tim Rentsch wrote:
>
>> Bart writes:
>>
>>> On 13/03/2026 11:58, Bart wrote:
>>>
>>> [characterizing my earlier code as a finite state machine]
>>>
>>>> Ideally it would just have a loop. (In my languages, there is a
>>>> feature called 'doswitch',
>>>
>>> I ported this (C version using 'goto') to my scripting language just
>>> to see what it would look like:
>>>
>>> https://github.com/sal55/langs/blob/master/tr.q
>>>
>>> This doesn't use 'goto', nor conventional loops. However 'doswitch'
>>> does loop.
>>>
>>> An alternative method could use 'recase' (in C terms, jumping directly
>>> to a case label). It's just goto 'under the hood', but much less
>>> underhand than 'longjmp'.
>>>
>>> Other ways of control flow include label pointers (also in some C
>>> extensions).
>>
>> None of these more elaborate control structures are needed. The
>> board display behavior can easily be expressed using conventional
>> control structures, in standard C:
>>
>> void
>> show_board( unsigned height, unsigned width, unsigned cutoff ){
>> const int D = digits_width( cutoff );
>> const unsigned R = cutoff < height ? cutoff : height;
>> unsigned r = 0, c = 0;
>>
>> while( r < R ){
>> unsigned v = r + c*height;
>> if( v < cutoff ) printf( " %*u", D, v+1 );
>> if( ++c >= width ) putchar( '\n' ), c = 0, r++;
>> }
>> }
>
> Yes, but you'd prohibited many standard features including loops for
> your challenge.
I was responding to a context where the prohibitions had already
been violated. I was simply pointing out that if those rules are
going to be ignored then there are easier ways to solve the problem
than importing exotic control structures from other languages.