Roger said: But if the list were longer: 13 | */ 13 | 10 # 19 29 59 79 89 109 119 139 149 179 199 0
Wow! Yes I see the problem. It would be really nice if J would output a warning when a calculation exceeds the precision limits. I'm sure this would probably slow down all computations, so having a global variable to turn on precision errors would be a conservative approach. Of course, I can usually check to see if an error has occurred by turning on extended precision to see if the answers match, but it would be nice to know without having to always double check my calculations.. 13|*/13|/ 10 # 19 29 59 79 89 109 119 139 149 179 199x 9 Skip Cave Cave Consulting LLC On Mon, Sep 18, 2017 at 1:46 PM, Roger Hui <rogerhui.can...@gmail.com> wrote: > Your solution works only because the list isn't too long, and the initial > 13| (same as 13 |/) made them all small enough that you can do the */ > without losing precision. But if the list were longer: > > 13 | */ 13 | 10 # 19 29 59 79 89 109 119 139 149 179 199 > 0 > > If it makes it more understandable, use explicit defn: > > (4 : '13|x*y') / 19 29 59 79 89 109 119 139 149 179 199 > 4 > > "Multiplication mod m" means m|x*y, multiply, then take the remainder of > division by m. > > > > > > > > On Mon, Sep 18, 2017 at 11:37 AM, Skip Cave <s...@caveconsulting.com> > wrote: > > > Yes, one of the Quora answer posts for this challenge pointed this out as > > well, so I tried that approach. Not being too competent with the use of > & > > @, I tried: > > > > 13|*/13|/19 29 59 79 89 109 119 139 149 179 199 > > > > 4 > > > > > > I got the answer, but I need a course on the use of @ and & in order to > > tighten up my code. > > > > > > Skip > > > > > > Skip Cave > > Cave Consulting LLC > > > > On Mon, Sep 18, 2017 at 12:47 PM, Roger Hui <rogerhui.can...@gmail.com> > > wrote: > > > > > This particular problem can be solved without resort to extended > > > precision. Use multiplication mod 13, that is, find the remainder at > > each > > > step rather than waiting until the end: > > > > > > 13&|@* / 19 29 59 79 89 109 119 139 149 179 199 > > > 4 > > > > > > > > > On Mon, Sep 18, 2017 at 10:00 AM, Skip Cave <s...@caveconsulting.com> > > > wrote: > > > > > > > People posting problems on Quora are typically expecting an explicit > > > > algebraic formula solution to their problem, though they never > > > explicitly > > > > state that requirement. The posted Quora problems often involve very > > > large > > > > numbers, which the poster expects will prevent solutions from using a > > > > calculator or computer program to solve. In most cases, J's extended > > > > precision arithmetic can handle those large numbers quite handily. > > > > > > > > Typical Quora problem: > > > > How would you calculate the remainder of {19 × 29 × 59 × 79 × 89 × > 109 > > × > > > > 119 × 139 × 149 × 179 × 199} divided by 13? > > > > <https://www.quora.com/How-would-you-calculate-the- > > > > remainder-of-19-%C3%97-29-%C3%97-59-%C3%97-79-%C3%97-89-%C3% > > > > 97-109-%C3%97-119-%C3%97-139-%C3%97-149-%C3%97-179-%C3%97- > > > > 199-divided-by-13> > > > > > > > > My answer: > > > > > > > > Using the J programming language (Jsoftware.com) > > > > > > > > 13|*/19 29 59 79 89 109 119 139 149 179 199x > > > > > > > > 4 > > > > > > > > So the answer is 4 > > > > > > > > > > > > Skip Cave > > > > Cave Consulting LLC > > > > > > > > On Mon, Sep 18, 2017 at 6:17 AM, Raul Miller <rauldmil...@gmail.com> > > > > wrote: > > > > > > > > > That has been characteristic of Project Euler but Quora Challenges > > are > > > > > new to me. > > > > > > > > > > Anyways, if the problem expects to answers work with precisions > well > > > > > beyond measurable limits, that should be stated as a part of the > > > > > problem. > > > > > > > > > > Thanks, > > > > > > > > > > -- > > > > > Raul > > > > > > > > > > > > > > > On Sun, Sep 17, 2017 at 2:05 PM, Skip Cave < > s...@caveconsulting.com> > > > > > wrote: > > > > > > The fact that the problem is a Quora challenge is exactly the > > point. > > > > It's > > > > > > like if someone asks your for the square root of 75976307044. > Yes, > > > > there > > > > > is > > > > > > a manual process that one can use to compute the square root. But > > why > > > > > spend > > > > > > all that time when one can type %:75976307044 or use a hand-held > > > > > > calculator, and get the answer instantly. As an engineer, speed > and > > > > > > accuracy are more important than going through a complicated > manual > > > > > process > > > > > > to get that same answer. > > > > > > > > > > > > I post lots of these J solutions on Quora to remind folks of that > > > fact. > > > > > > It's not that I'm against knowing the manual approach to the > > > solutions. > > > > > > It's just that the more tools we have to make hard problems > easier, > > > the > > > > > > better we can solve even harder problems. > > > > > > > > > > > > Skip Cave > > > > > > Cave Consulting LLC > > > > > > > > > > > > On Sun, Sep 17, 2017 at 12:28 PM, Erling Hellenäs < > > > > > erl...@erlinghellenas.se> > > > > > > wrote: > > > > > > > > > > > >> Strange things happen here. It works but give incorrect > results. I > > > > just > > > > > >> changed F to lower case to put it through my tests. Not sure > what > > > > might > > > > > >> happen here. I have J 8.04 on this machine. 64 bit. > > > > > >> I never doubted that p: was good. I just thought that since it > > was a > > > > > Quora > > > > > >> challenge that using p: would not be a good idea, since the > > > algorithm > > > > > used > > > > > >> in p: is not known to the audience. It also seemed like some > kind > > > of > > > > > >> cheating, like using a subroutine someone else wrote to solve > half > > > the > > > > > >> problem. > > > > > >> Well, I also thought p: would have to generate the array of > primes > > > for > > > > > >> each call, but it's obviously not the case. There is a formula > > which > > > > > does > > > > > >> the trick? Or a hash table of primes? > > > > > >> > > > > > >> thru=: <. + >:@>. i.@- <. > > > > > >> > > > > > >> biggap=: {~ 0 1 - [: (i. <./) 2 -/\ ] > > > > > >> > > > > > >> f=: [: thru/ 1 _1 + [: biggap <./ >. >./ <. thru&.(p:inv) > > > > > >> > > > > > >> s=: 10 f 100 > > > > > >> > > > > > >> s > > > > > >> > > > > > >> 20 21 22 > > > > > >> > > > > > >> >./90 91 92 93 94 95 96 = s > > > > > >> > > > > > >> |length error: scriptd > > > > > >> > > > > > >> | >./90 91 92 93 94 95 96 =s > > > > > >> > > > > > >> |[-5] j:\j64-803-user\projects\quoraraul.ijs > > > > > >> > > > > > >> inv > > > > > >> > > > > > >> ^:_1 > > > > > >> > > > > > >> > > > > > >> Cheers, > > > > > >> > > > > > >> Erling > > > > > >> > > > > > >> On 2017-09-17 17:38, Raul Miller wrote: > > > > > >> > > > > > >>> Yes. :) > > > > > >>> > > > > > >>> When J provides a mechanism for something it is usually worth > > > trying. > > > > > >>> Sometimes you can write something faster, but usually J's > > approach > > > > > >>> will be useful. > > > > > >>> > > > > > >>> For example, in this case, consider this approach: > > > > > >>> > > > > > >>> thru=: <. + >:@>. i.@- <. > > > > > >>> biggap=: {~ 0 1 - [: (i. <./) 2 -/\ ] > > > > > >>> F=: [: thru/ 1 _1 + [: biggap <./ >. >./ <. thru&.(p:inv) > > > > > >>> > > > > > >>> There will be cases where another approach could be more > > efficient, > > > > > >>> but it performs reasonably well. > > > > > >>> > > > > > >>> Thanks, > > > > > >>> > > > > > >>> > > > > > >> ------------------------------------------------------------ > > > > ---------- > > > > > >> For information about J forums see http://www.jsoftware.com/ > > > > forums.htm > > > > > >> > > > > > > ------------------------------------------------------------ > > > ---------- > > > > > > For information about J forums see http://www.jsoftware.com/ > > > forums.htm > > > > > ------------------------------------------------------------ > > ---------- > > > > > For information about J forums see http://www.jsoftware.com/ > > forums.htm > > > > > > > > > ------------------------------------------------------------ > ---------- > > > > For information about J forums see http://www.jsoftware.com/ > forums.htm > > > > > > > ---------------------------------------------------------------------- > > > For information about J forums see http://www.jsoftware.com/forums.htm > > > > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm