Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.programming > #15977
| From | Tim Rentsch <tr.17687@z991.linuxsc.com> |
|---|---|
| Newsgroups | comp.programming |
| Subject | Re: A little puzzle. |
| Date | 2022-11-27 18:38 -0800 |
| Organization | A noiseless patient Spider |
| Message-ID | <8635a3951f.fsf@linuxsc.com> (permalink) |
| References | (2 earlier) <87wn7nj9mb.fsf@bsb.me.uk> <86sfi98xnx.fsf@linuxsc.com> <87leo1i5bo.fsf@bsb.me.uk> <86k03k7yqe.fsf@linuxsc.com> <87o7stisxy.fsf@bsb.me.uk> |
Ben Bacarisse <ben.usenet@bsb.me.uk> writes: > Tim Rentsch <tr.17687@z991.linuxsc.com> writes: > >> Ben Bacarisse <ben.usenet@bsb.me.uk> writes: >> >>> Tim Rentsch <tr.17687@z991.linuxsc.com> writes: >>> >>>> I think this problem would make a good interview question, >>>> provided care were taken to phrase it so the subtleties were >>>> still there, but possible points of confusion were reduced. >>>> Not that I know how to do that... :) >>> >>> I didn't make a good job of presenting it. It certainly didn't >>> pique anyone else's interest, but then comp.programming is not >>> well populated. >> >> I think part of the problem is that the question looks "easier" >> than it really is. People have an initial reaction (certainly I >> know I did) but don't continue to think through what the issues >> might be. > > I think so. I am, to be honest, rather disappointed by the > reception this problem has had. Even after various examples and > two explanations, some posters still don't know what's being > asked, but at the time it is claimed that it's trivial and not > worth coding up. Sometimes both claims are made by the same > poster. I am somewhat baffled by the replies. I thought what was being sought was evident in your initial posting. Perhaps not obvious, but still clear enough after a bit of thought. >> For what it's worth, here is a stab at presenting the problem. >> It's longer than I would like it to be, but maybe it will be >> helpful. >> >> We are interested in writing a function to answer a more general >> version of the example problem stated below. >> >> Consider a plane flying easterly (and for simplicity, directly >> above the equator). We measure the plane's progress by its >> longitude, measured to the nearest second of arc (1/3600 of a >> degree), so from -180 degrees to 179 degrees 59 minutes 59 >> seconds (or equivalently from -648000 seconds to 647999 seconds). >> We would like to know if a given longitude is between the plane's >> starting longitude and ending longitude. (Note that the >> longitude measurements below are given in degrees, minutes, and >> seconds, but we may assume that internally they are represented >> as an integer number of seconds.) >> >> For example, if the plane flies >> >> from Los Angeles, US (longitude -118 14' 37") >> to New York, US (longitude -73 56' 7") >> >> does it cross over the longitude lines of >> >> Denver, US (longitude -104 59' 30"), or >> Moscow, Russia (longitude 37 37' 6")? >> >> Answer: the plane does cross the longitude line of Denver but not >> that of Moscow. >> >> Similarly, if the plane flies >> >> from Beijing, China (longitude 116 23' 0") >> to Los Angeles, US (longitude -118 14' 37") >> >> does it cross over >> >> Tokyo, Japan (longitude 139 50' 32"), >> Waikiki, Hawaii, US (longitude -157 50' 4"), or >> Moscow, Russia (longitude 37 37' 6")? >> >> Answer: the plane does cross the longitude lines of Tokyo and >> Waikiki but not that of Moscow. >> >> For the general case we would like to handle any circular measure >> (for convenience having coordinates in some integer range). >> >> Exercise: write a function to answer this kind of question for >> circular measures in general. You may assume integer coordinates >> and intervals that include the starting point but do not include >> the end point. Give a suitable declaration for the function, >> and separately give a function definition to implement the given >> interface. > > I think this is good, though the example with seconds of arc may > appear fiddly to some people. Degrees would do, but then the > examples would become a bit fuzzy. I agree on both points. I didn't like the fiddly-ness, but no better example came to mind. > I would probably use times of day. For example, my cheap > "off-peak" electricity is from 22:00 to 00:30 and from 02:30 to > 7:30 but there are all sorts possible examples: times of day when > I do not want to be disturbed, times when particular parking rules > apply and so on. I was looking for a circular measure that is widely known and also has some negative values. Longitude was the best I could think of. > The problem would then be to determine, given a time of day (in > minutes past midnight), if that time is within a particular > period. Hours of the day, especially on a 24-hour clock, is probably better than longitude for the initial example. > I don't think it's a spoiler to give, first, a very concrete > example, even including the function interface. A second part of > the question would be by ask about generalising this interface to > any "circular" measure. I was trying to be faithful (what I thought was) your not wanting to give away the simplicity of a general solution. I can't decide if your example below gives away too much or might be slightly misleading (because the modulus is inherent in the measure). It's hard to find a phrasing that is both specific enough to clearly state what is being sought and also not so specific that it gives away the nature of the problem. I was trying to strike a balance point, apparently not quite balanced enough. :) > So I don't think it would matter to help DAK by giving > > with Ada.Text_IO; > use Ada.Text_IO; > > procedure Longitude is > > function Flight_East_Crosses_Longitude > (Start_Seconds, End_Seconds, Longitude : Integer) return Boolean is > begin > -- Your code here > end Flight_East_Crosses_Longitude; > > Beijing : constant Integer := ((+116 * 60) + 23) * 60 + 0; > Los_Angeles : constant Integer := ((-118 * 60) + 14) * 60 + 37; > Tokyo : constant Integer := ((+139 * 60) + 50) * 60 + 32; > Waikiki : constant Integer := ((-157 * 60) + 50) * 60 + 4; > Moscow : constant Integer := ((+037 * 60) + 37) * 60 + 6; > > begin > Put_Line( > Flight_East_Crosses_Longitude(Beijing, Los_Angeles, Tokyo)'img > ); > Put_Line( > Flight_East_Crosses_Longitude(Beijing, Los_Angeles, Waikiki)'img > ); > Put_Line( > Flight_East_Crosses_Longitude(Beijing, Los_Angeles, Moscow)'img > ); > end Longitude; (I reformatted the calls to Put_Line() so they wouldn't violate my newsreader's idea of how long lines should be.) > Of course, Ada is one of the few languages where one can actually > implement largely type-generic functions, so it's a shame to be > this specific, but as I say, that could come later. I can't help feeling that your suggestion of using times of day -- especially if expressed in 4-digit military time format -- would be a better choice for the example.
Back to comp.programming | Previous | Next — Previous in thread | Next in thread | Find similar
A little puzzle. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-11-21 20:45 +0000
Re: A little puzzle. David Brown <david.brown@hesbynett.no> - 2022-11-21 22:06 +0100
Re: A little puzzle. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-11-21 21:21 +0000
Re: A little puzzle. David Brown <david.brown@hesbynett.no> - 2022-11-22 09:17 +0100
Re: A little puzzle. Richard Heathfield <rjh@cpax.org.uk> - 2022-11-22 11:07 +0000
Re: A little puzzle. David Brown <david.brown@hesbynett.no> - 2022-11-22 15:17 +0100
Re: A little puzzle. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-11-22 11:40 +0000
Re: A little puzzle. David Brown <david.brown@hesbynett.no> - 2022-11-22 15:26 +0100
Re: A little puzzle. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-11-22 15:28 +0000
Re: A little puzzle. David Brown <david.brown@hesbynett.no> - 2022-11-22 16:30 +0100
Re: A little puzzle. David Brown <david.brown@hesbynett.no> - 2022-11-22 09:23 +0100
Re: A little puzzle. Richard Heathfield <rjh@cpax.org.uk> - 2022-11-22 11:08 +0000
Re: A little puzzle. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-11-22 12:54 +0000
Re: A little puzzle. Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-11-21 17:39 -0800
Re: A little puzzle. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-11-22 13:00 +0000
Re: A little puzzle. Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-11-22 05:31 -0800
Re: A little puzzle. Richard Heathfield <rjh@cpax.org.uk> - 2022-11-22 11:04 +0000
Re: A little puzzle. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-11-22 12:53 +0000
Re: A little puzzle. Paul N <gw7rib@aol.com> - 2022-11-22 05:01 -0800
Re: A little puzzle. Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-11-22 05:48 -0800
Re: A little puzzle. David Brown <david.brown@hesbynett.no> - 2022-11-22 15:31 +0100
FFs [was Re: A little puzzle] Richard Harnden <richard.nospam@gmail.com> - 2022-11-22 16:29 +0000
Re: A little puzzle. Richard Heathfield <rjh@cpax.org.uk> - 2022-12-14 13:57 +0000
Re: A little puzzle. Richard Heathfield <rjh@cpax.org.uk> - 2022-12-14 13:58 +0000
Re: A little puzzle. Richard Heathfield <rjh@cpax.org.uk> - 2022-12-14 16:22 +0000
Re: A little puzzle. Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-11-22 05:24 -0800
Re: A little puzzle. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-11-22 15:23 +0000
Re: A little puzzle. Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-11-23 08:04 -0800
Re: A little puzzle. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-11-24 00:06 +0000
Re: A little puzzle. Richard Heathfield <rjh@cpax.org.uk> - 2022-11-24 04:06 +0000
Re: A little puzzle. David Brown <david.brown@hesbynett.no> - 2022-11-24 09:29 +0100
Re: A little puzzle. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-11-24 13:23 +0000
Re: A little puzzle. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-11-24 13:14 +0000
Re: A little puzzle. Richard Heathfield <rjh@cpax.org.uk> - 2022-11-24 14:00 +0000
Re: A little puzzle. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-11-24 14:59 +0000
Re: A little puzzle. Richard Harnden <richard.nospam@gmail.com> - 2022-11-24 19:00 +0000
Re: A little puzzle. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-11-24 20:36 +0000
Re: A little puzzle. Andreas <nobody@me.com> - 2022-11-27 00:38 +0100
Re: A little puzzle. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-11-27 00:11 +0000
Re: A little puzzle. Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-11-24 14:51 -0800
Re: A little puzzle. "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2022-11-25 09:30 +0100
Re: A little puzzle. Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-11-25 01:16 -0800
Re: A little puzzle. "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2022-11-25 11:11 +0100
Re: A little puzzle. Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-11-25 06:26 -0800
Re: A little puzzle. "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2022-11-25 15:59 +0100
Re: A little puzzle. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-11-26 16:25 +0000
Re: A little puzzle. "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2022-11-26 19:36 +0100
Re: A little puzzle. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-11-27 02:03 +0000
Re: A little puzzle. "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2022-11-27 11:02 +0100
Re: A little puzzle. Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-12-01 04:30 -0800
Re: A little puzzle. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-12-02 00:22 +0000
Re: A little puzzle. Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-12-02 22:30 -0800
Re: A little puzzle. Julio Di Egidio <julio@diegidio.name> - 2022-12-03 02:43 -0800
Re: A little puzzle. Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-11-27 18:38 -0800
Re: A little puzzle. Julio Di Egidio <julio@diegidio.name> - 2022-11-27 02:27 -0800
Re: A little puzzle. Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-11-27 19:23 -0800
Re: A little puzzle. Julio Di Egidio <julio@diegidio.name> - 2022-11-27 22:59 -0800
Re: A little puzzle. Julio Di Egidio <julio@diegidio.name> - 2022-11-27 23:03 -0800
Re: A little puzzle. Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-11-28 07:22 -0800
Re: A little puzzle. Julio Di Egidio <julio@diegidio.name> - 2022-11-28 10:20 -0800
Re: A little puzzle. Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-11-29 04:29 -0800
Re: A little puzzle. Julio Di Egidio <julio@diegidio.name> - 2022-11-29 04:50 -0800
Re: A little puzzle. Richard Heathfield <rjh@cpax.org.uk> - 2022-11-29 14:47 +0000
Re: A little puzzle. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-11-29 17:23 +0000
Re: A little puzzle. Julio Di Egidio <julio@diegidio.name> - 2022-11-29 09:50 -0800
Re: A little puzzle. Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-11-30 01:39 -0800
Re: A little puzzle. Richard Heathfield <rjh@cpax.org.uk> - 2022-11-30 11:10 +0000
Re: A little puzzle. Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-11-30 02:24 -0800
Re: A little puzzle. Julio Di Egidio <julio@diegidio.name> - 2022-11-30 06:28 -0800
Re: A little puzzle. Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-12-01 06:55 -0800
Re: A little puzzle. Julio Di Egidio <julio@diegidio.name> - 2022-12-02 01:54 -0800
Re: A little puzzle. Richard Harnden <richard.nospam@gmail.com> - 2022-11-28 11:20 +0000
Re: A little puzzle. Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-11-28 07:30 -0800
Re: A little puzzle. Richard Harnden <richard.nospam@gmail.com> - 2022-11-28 17:15 +0000
Re: A little puzzle. Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-11-29 04:03 -0800
Re: A little puzzle. Richard Harnden <richard.nospam@gmail.com> - 2022-11-29 15:03 +0000
Re: A little puzzle. "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2022-11-29 16:13 +0100
Re: A little puzzle. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-11-29 17:37 +0000
Re: A little puzzle. "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2022-11-29 19:02 +0100
Re: A little puzzle. Julio Di Egidio <julio@diegidio.name> - 2022-11-29 10:10 -0800
Re: A little puzzle. Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-11-30 03:32 -0800
Re: A little puzzle. Julio Di Egidio <julio@diegidio.name> - 2022-11-30 06:36 -0800
Re: A little puzzle. Richard Harnden <richard.nospam@gmail.com> - 2022-11-30 15:21 +0000
Re: A little puzzle. Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-12-01 06:51 -0800
csiph-web