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
