Ooops. A longer but correct solution. Can probably be shortened. sqrt=: (0.5 * ] + %)^:_ ~ sqrt 3 1.73205 sqrt 17 4.12311
On Thu, Dec 12, 2013 at 1:29 PM, Roger Hui <[email protected]>wrote: > sqrt=: -:@(+%)^:_~ > sqrt 3 > 1.78078 > sqrt 17 > 8.55842 > > > > On Thu, Dec 12, 2013 at 1:22 PM, William Tanksley, Jr < > [email protected]> wrote: > >> I'm clueless -- how would you implement one of the more formally >> correct solutions (Newton's, Babylonian, exhaustive search, or random >> probing)? K did pretty well. >> >> -Wm >> >> >> On Thu, Dec 12, 2013 at 11:09 AM, Dan Bron <[email protected]> wrote: >> > There is a stack exchange dedicated to code golfing, >> > http://codegolf.stackexchange.com/ . During free moments at work, I >> find >> > posting J solutions is a good way to relieve stress. >> > >> > Today I came across a competition to reimplement square root in as few >> > characters as possible [1]. Most languages copped out and simply >> restated >> > sqrt as ^&0.5 to minimize their golf score. (I did this too, to allow >> > apples-to-apples comparisons). >> > >> > But the C++ entry caught my eye: exp(log(x)/2)) . This is an >> interesting >> > approach, and gives us an opportunity to highlight some of the >> advantages >> > of J's notaton. Leaving aside the question of syntax, even expressing >> the >> > 4 primitives in that expression (exp, log, x, 2) would cost most >> languages >> > 8 characters. But not in J. In J, we do NOT need: >> > >> > - To name variables (so no "x") >> > - To name the constant 2 (in this particular case) >> > - To delimit functions from arguments using parentheses >> > - To explicitly instruct the intreprter to undo the log by typing >> "exp". >> > >> > This last freebie is perhaps the most satisfying. We just tell the >> > interpreter that we want to operate "log space", and let J figure out >> the >> > exp for itself. >> > >> > -:&.^. >> > >> > Six characters. Less than it takes to write "log" and "exp" separated >> by a >> > single space! >> > >> > -Dan >> > >> > [1] >> > >> http://codegolf.stackexchange.com/questions/73/reimplementing-square-root/15856 >> > >> > ---------------------------------------------------------------------- >> > 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
