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