From: tr.17687@z991.linuxsc.com   
      
   Richard Harnden writes:   
      
   > On 21/11/2022 20:45, Ben Bacarisse wrote:   
   >   
   >> I wonder if there are any real posters here? 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...   
   >>    
   >> ... like this? Because that's my favourite way, rather than posting   
   >> lots of dummy lines before the solution.   
   >   
   > I think this works ...   
   >   
   > int in_subrange(int range, int start, int end, int check)   
   > {   
   > check %= range;   
   >   
   > if ( ( end < start && (   
   > (check >= 0 && check <= end)   
   > || (check >= start && check < range)   
   > )   
   > )   
   > || ( check >= start && check <= end )   
   > )   
   > return 1;   
   >   
   > return 0;   
   > }   
      
   Have you thought about a case where the values of check, start,   
   and end are chosen from the interval -9000000000 to 9000000000?   
   How about the interval -18000000000 to 18000000000?   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|