Path: csiph.com!eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail From: Ben Bacarisse Newsgroups: comp.programming Subject: Re: A little puzzle. Date: Tue, 22 Nov 2022 12:53:42 +0000 Organization: A noiseless patient Spider Lines: 54 Message-ID: <87leo3kv55.fsf@bsb.me.uk> References: <875yf8nijb.fsf@bsb.me.uk> MIME-Version: 1.0 Content-Type: text/plain Injection-Info: reader01.eternal-september.org; posting-host="9b85f22d308ce2c1806d1ce4165d5a1d"; logging-data="114436"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/YyL5O36J2skZ0SX8KaDsUnuEUFinfIYw=" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) Cancel-Lock: sha1:tLaPE5hB7MHP8wNFaogWTUL5qow= sha1:vPDRrL3/I7t+n6Cj5khejkTdhIA= X-BSB-Auth: 1.b1e91328ea38986ff252.20221122125342GMT.87leo3kv55.fsf@bsb.me.uk Xref: csiph.com comp.programming:15932 Richard Heathfield writes: > On 21/11/2022 8:45 pm, Ben Bacarisse wrote: >> I wonder if there are any real posters here? > > Nobody here but us chickens. > >> Let's see... >> I came across a trivial programming task that must have been solved a >> thousand times by other programmers, but it had never crossed my path >> until yesterday. I must be feeling my age because I made a real hash of >> tackling it at first. Anyway, I thought it might be of interest. >> Consider any ordered measure that "wraps round" -- bearings in degrees, >> minutes in the hour, indeed hours in either the 12 or 24 hour clock. >> The problem is to determine if a given value is in the sub-range >> specified by a start and an en value. >> I was specifically concerned with integer values where the sub-range >> includes the start value but excludes the end value. >> Though I am not sure this merits the term "puzzle", I suggest that >> solutions be posted with some spoiler protection. Do all the news >> readers used by programmers (or ex programmers) all respect the presence >> of a form-feed character... > > Dunno. Let's find out: > > Ctrl-L coming up: > > > Didn't see a form feed there. Here's one (I hope): > although of course in C the problem would be far better solved as: > > int inrange(int lo, int hi, int k) > { > return (lo <= k) && (k < hi); > } > > or even as a macro. > > I must confess I'm not entirely certain I have correctly interpreted > your puzzle, which I have taken to mean "is this a given value in the > given range", but this seems just a bit too easy for you to make a > hash of, but I'm sure I've made hashes of worse. I've missed > something, haven't I? The circular wrapping. On a clock, 55 is in the range of minutes that starts at 45 and ends at 5. -- Ben.